π€ This is an Online Meeting App that utilizes Flutter and WebRTC technologies to provide users with a platform to conduct virtual meetings, conferences, and webinars. The app is built to provide seamless audio and video communication, as well as screen sharing, chat functionality, and file sharing.
Feature | Subscribe/Publish | Screen Sharing | Picture in Picture | Virtual Background | End to End Encryption | Record Media |
---|---|---|---|---|---|---|
iOS | π’ | π’ | π’ | π’ | π’ | π‘ |
Android | π’ | π’ | π’ | π’ | π’ | π‘ |
Codec | VP8 | VP9 | H264 | H265 | AV1 |
---|---|---|---|---|---|
iOS | π’ | π’ | π’ | π’ | π’ |
Android | π’ | π’ | π’ | π’ | π’ |
π’ = Available
π‘ = Coming soon (Work in progress)
π΄ = Not currently available (Possibly in the future)
Note
AV1
supported on iOS 14 and above, Android 14 and above.E2EE
only supportedH264
,VP8
andVP9
- Video codec Android supported: Check at Google Site
Warning
Virtual Background
is still in beta so it will not be stable. It is developed using MediaPipe for Android
and VisionKit for iOS
π Repository Structure
βββ waterbus/
βββ .githooks/
β βββ pre-commit
β βββ pre-push
βββ .github/
β βββ FUNDING.yml
β βββ ISSUE_TEMPLATE/
β βββ dependabot.yml
β βββ workflows/
β βββ ci.yml
β βββ release.yml
βββ .metadata
βββ analysis_options.yaml
βββ android/
β βββ app/
β β βββ build.gradle
β β βββ google-services.json
β β βββ proguard-rules.pro
β β βββ src/
β βββ build.gradle
β βββ gradle/
β β βββ wrapper/
β βββ settings.gradle
βββ benchmark/
β βββ benchmark.txt
β βββ plot_benchmark_results.gp
βββ codecov.yml
βββ ios/
β βββ BroadcastAppGroup/
β β βββ BroadcastAppGroupHandler.swift
β βββ BroadcastWaterbus/
β β βββ Atomic.swift
β β βββ BroadcastWaterbus.entitlements
β β βββ DarwinNotificationCenter.swift
β β βββ Info.plist
β β βββ SampleHandler.swift
β β βββ SampleUploader.swift
β β βββ SocketConnection.swift
β βββ Flutter/
β β βββ AppFrameworkInfo.plist
β β βββ Debug.xcconfig
β β βββ Release.xcconfig
β βββ Podfile
β βββ Podfile.lock
β βββ Runner/
β β βββ AppDelegate.swift
β β βββ Assets.xcassets/
β β βββ Base.lproj/
β β βββ GoogleService-Info.plist
β β βββ Info.plist
β β βββ Runner-Bridging-Header.h
β β βββ Runner.entitlements
β βββ Runner.xcodeproj/
β β βββ project.pbxproj
β β βββ project.xcworkspace/
β β βββ xcshareddata/
β βββ Runner.xcworkspace/
β β βββ contents.xcworkspacedata
β β βββ xcshareddata/
β βββ clean-pods.sh
βββ launcher_icon_setup.yaml
βββ lib/
β βββ core/
β β βββ app/
β β βββ constants/
β β βββ error/
β β βββ helpers/
β β βββ injection/
β β βββ navigator/
β β βββ types/
β β βββ usecase/
β β βββ utils/
β βββ features/
β β βββ app/
β β βββ auth/
β β βββ chats/
β β βββ common/
β β βββ conversation/
β β βββ home/
β β βββ meeting/
β β βββ notifications/
β β βββ profile/
β β βββ schedule/
β β βββ settings/
β βββ gen/
β β βββ assets.gen.dart
β β βββ fonts.gen.dart
β βββ main.dart
βββ packages/
β βββ auth/
β β βββ .metadata
β β βββ analysis_options.yaml
β β βββ lib/
β β βββ pubspec.yaml
β β βββ test/
β βββ sizer/
β βββ .metadata
β βββ analysis_options.yaml
β βββ lib/
β βββ pubspec.yaml
βββ pubspec.lock
βββ pubspec.yaml
βββ run.sh
βββ screenshots/
βββ splash-setup.yaml
βββ test/
β βββ constants/
β β βββ sample_file_path.dart
β βββ features/
β β βββ auth/
β β βββ meeting/
β β βββ profile/
β βββ fixtures/
β βββ auth/
β βββ fixture_reader.dart
β βββ meeting/
- Clone the waterbus repository:
git clone https://github.com/lambiengcode/waterbus
- Change to the project directory:
cd waterbus
- Install the dependencies:
flutter pub get
flutter run
flutter test
- Sign up for an account
- Create a new meeting
- Share the meeting link with other participants
- Start the meeting and utilize the available features
- This part is benchmarking video codecs within a 60-second duration of an online meeting on an iPhone 13 running iOS 17.0.2. The codecs included in the benchmark are VP8, VP9, H.264, H.265, and AV1.
- The benchmark aims to quickly compare the performance differences between these codecs during a short online meeting session.
- Model: iPhone 13
- Operating System: iOS 17.0.2
You can view the benchmark results in the generated plots and data files. Here's how you can interpret the results:
VP8
- Total encode time: 9325 (Β΅s) in 60s callVP9
- Total encode time: 12091 (Β΅s) in 60s callH264
- Total encode time: 11127 (Β΅s) in 60s callH265
- Total encode time: 9264 (Β΅s) in 60s callAV1
- Total encode time: 13615 (Β΅s) in 60s callSupport it by joining stargazers for this repository. β
Also, follow maintainers on GitHub for our next creations!
Contributions are welcome! Please feel free to submit a pull request or open an issue if you encounter any problems or have suggestions for improvements.
If you have any questions or suggestions related to this application, please contact me via email: lambiengcode@waterbus.tech
or lambiengcode@gmail.com
.