Git Product home page Git Product logo

waterbustech / waterbus Goto Github PK

View Code? Open in Web Editor NEW
119.0 6.0 5.0 374.95 MB

Open source video conferencing app built on latest WebRTC SDK. Android/iOS/MacOS/Web

Home Page: https://meet.waterbus.tech/

License: MIT License

Kotlin 0.09% Swift 5.33% Objective-C 0.01% Dart 69.93% Shell 0.58% Ruby 0.59% Java 0.10% Gnuplot 0.46% JavaScript 22.34% HTML 0.59%
webrtc clean-architecture voip sfu video-conferencing realtime cross-platform

waterbus's Introduction

Computador

codecovCodeFactorGitHub Workflow Status (with event)GitHub issueslibwebrtcCocoapods VersionPRs Welcome

Twitter FollowDiscord

Website โ€ข Wiki โ€ข License

๐ŸŒค๏ธ About

๐Ÿค™ This is an Open Source Video Conferencing 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.

โœจ Why is this so awesome?

  • ๐Ÿ‘ฅ Multiple Participants: Waterbus enables high-quality group video calls using WebRTC SFU.
  • ๐Ÿ’ป Screen Sharing: Share your screen with the participants of your call.
  • ๐ŸŽฅ Video Codec Support: Supports a wide range of video codecs including AV1, H.264, H.265, VP8, and VP9.
  • ๐ŸŒŒ Virtual Background: Enhance your meetings with professional virtual backgrounds.
  • ๐Ÿ–ผ๏ธ Picture-in-Picture: Increase productivity with picture-in-picture multitasking.
  • ๐Ÿ”’ End-to-End Encryption: Ensure secure meetings with end-to-end encryption.
  • ๐Ÿ’‹ Beauty Filter: Using GPUPixel to implement Beauty Filters

๐ŸŽฏ Goal

My project isn't intended to replace standard video conferencing platforms like Google Meet. Instead, it focuses on facilitating code sharing. I've noticed that features such as Virtual Background or Picture in Picture aren't widely implemented in existing solutions, and there's a lack of reference code for them. Many developers resort to third-party solutions for video calls but often miss out on these features. My goal is to provide a reference project that includes these functionalities, offering developers a starting point for integrating them into their own products.

If you have suggestions or problems, please open an issue or contribute directly ๐Ÿค“

๐Ÿ‘‰ The Virtual Background feature supports on Android, iOS and MacOS


Virtual Background on iOS (VisionKit for Person segment) Virtual Background on Android (Mediapipe for Image segment) Virtual Background on MacOS (VisionKit for Person segment)

โšก Current supported features

Feature Subscribe/Publish Screen Sharing Picture in Picture Virtual Background Beauty Filters End to End Encryption
Android ๐ŸŸข ๐ŸŸข ๐ŸŸข ๐ŸŸข ๐ŸŸก ๐ŸŸข
iOS ๐ŸŸข ๐ŸŸข ๐ŸŸข ๐ŸŸข ๐ŸŸข ๐ŸŸข
MacOS ๐ŸŸข ๐ŸŸข ๐Ÿ”ด ๐ŸŸข ๐ŸŸข ๐ŸŸข
Web ๐ŸŸข ๐ŸŸข ๐ŸŸก ๐ŸŸข ๐ŸŸก ๐ŸŸข

๐ŸŸข = 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 supported H264, VP8 and VP9
  • Video codec Android supported: Check at Google Site
๐Ÿ–ผ๏ธ Online Meeting Diagram

Diagram Diagram

๐Ÿš€ Getting Started

To compile Waterbus from the source code, follow these steps:

  1. Install Flutter.
  2. Clone the Waterbus repository.
  3. Run flutter pub get to download dependencies.
  4. Run flutter run to start the app.

๐Ÿ› ๏ธ Building

These commands are intended for maintainers only.

Android

Set keystore password if you use jks in this repo, or create your own

export KEY_WATERBUS_PASSWORD=banhcuon
export ALIAS_WATERBUS_PASSWORD=banhcuon

Traditional APK

flutter build apk

AppBundle for Google Play

flutter build appbundle

iOS

Pod install

cd ios
bash clean-pods.sh
flutter build ipa

macOS

Pod install

cd macos
bash clean-pods.sh
flutter build macos

Web

flutter build web

๐Ÿ”ฅ Usage

  1. Sign in with Google
  2. Create a new meeting
  3. Share the meeting code & password with other participants
  4. Start the meeting and utilize the available features

๐Ÿ›  Selfhosted Waterbus

โฒ๏ธ Benchmarking

  • 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.

๐Ÿ“ฑ Device Specifications

  • Model: iPhone 13
  • Operating System: iOS 17.0.2

๐ŸŒŸ Results

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 call lambiengcode
VP9 - Total encode time: 12091 (ยตs) in 60s call lambiengcode
H264 - Total encode time: 11127 (ยตs) in 60s call lambiengcode
H265 - Total encode time: 9264 (ยตs) in 60s call lambiengcode
AV1 - Total encode time: 13615 (ยตs) in 60s call lambiengcode

๐Ÿ’™ Supports

Support it by joining stargazers for this repository. โญ

Also, follow maintainers on GitHub for our next creations!

Star History Chart Star History Chart

Stargazers repo roster for @waterbustech/waterbus Stargazers repo roster for @waterbustech/waterbus

๐Ÿค Contributing

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.

๐Ÿ“ง Contact Information

If you have any questions or suggestions related to this application, please contact me via email: [email protected].

waterbus's People

Contributors

chopper985 avatar code-factor avatar dependabot[bot] avatar jaiendev avatar lambiengcode avatar lucisokiu avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

waterbus's Issues

[App] Map API Meeting

  • API Create Meeting
  • API Update Meeting
  • API Join Meeting
  • API Get Info of Meeting
  • API Leave Meeting

Encountered Error Running Waterbus App

Description:
I encountered the following error when running the Waterbus app. I'm unsure of the root cause, but I suspect it may be related to the version of flutter_webrtc inside the Waterbus Flutter SDK package.

Error Log:

error: cannot access CameraVideoCapturer import org.webrtc.CameraVideoCapturer; ^ bad class file: C:\Users\User\.gradle\caches\transforms-3\bcc4bb8f2ab3c441d98cfaa5c148ccde\transformed\jetified-webrtc-120.6099.19-api.jar(/org/webrtc/CameraVideoCapturer.class) class file has wrong version 61.0, should be 55.0 Please remove or make sure it appears in the correct subdirectory of the classpath. C:\Users\User\AppData\Local\Pub\Cache\git\flutter-webrtc-ea25a0afe6abd53486bd2b2f36c22acd3e23c7fb\android\src\main\java\com\cloudwebrtc\webrtc\CameraEventsHandler.java:7: error: package CameraVideoCapturer does not exist class CameraEventsHandler implements CameraVideoCapturer.CameraEventsHandler { ^ C:\Users\User\AppData\Local\Pub\Cache\git\flutter-webrtc-ea25a0afe6abd53486bd2b2f36c22acd3e23c7fb\android\src\main\java\com\cloudwebrtc\webrtc\DataChannelObserver.java:6: error: cannot access DataChannel import org.webrtc.DataChannel; ^ bad class file: C:\Users\User\.gradle\caches\transforms-3\bcc4bb8f2ab3c441d98cfaa5c148ccde\transformed\jetified-webrtc-120.6099.19-api.jar(/org/webrtc/DataChannel.class) class file has wrong version 61.0, should be 55.0 Please remove or make sure it appears in the correct subdirectory of the classpath. C:\Users\User\AppData\Local\Pub\Cache\git\flutter-webrtc-ea25a0afe6abd53486bd2b2f36c22acd3e23c7fb\android\src\main\java\com\cloudwebrtc\webrtc\DataChannelObserver.java:15: error: package DataChannel does not exist class DataChannelObserver implements DataChannel.Observer, EventChannel.StreamHandler { ^ C:\Users\User\AppData\Local\Pub\Cache\git\flutter-webrtc-ea25a0afe6abd53486bd2b2f36c22acd3e23c7fb\android\src\main\java\com\cloudwebrtc\webrtc\DataChannelObserver.java:18: error: cannot find symbol private final DataChannel dataChannel; ^ symbol: class DataChannel location: class DataChannelObserver C:\Users\User\AppData\Local\Pub\Cache\git\flutter-webrtc-ea25a0afe6abd53486bd2b2f36c22acd3e23c7fb\android\src\main\java\com\cloudwebrtc\webrtc\DataChannelObserver.java:25: error: cannot find symbol DataChannel dataChannel) { ^ symbol: class DataChannel location: class DataChannelObserver C:\Users\User\AppData\Local\Pub\Cache\git\flutter-webrtc-ea25a0afe6abd53486bd2b2f36c22acd3e23c7fb\android\src\main\java\com\cloudwebrtc\webrtc\DataChannelObserver.java:33: error: package DataChannel does not exist private String dataChannelStateString(DataChannel.State dataChannelState) {

the error is very long , appearing in nearly every WebRTC Java file. Due to its length, I won't be able to post it here.

any solution for this ?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.