Skip to content

waterbustech/waterbus

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Important

Waterbus is an open source video conferencing app built on latest WebRTC SDK. Currently, Waterbus is an early release that is subject to the following limitations: it may have limited support, changes may not be compatible with other pre-general availability versions, and availability may change without notice.

Computador

codecovCodeFactorGitHub Workflow Status (with event)GitHub issueslibwebrtcCocoapods VersionPRs Welcome

Twitter FollowDiscord

WebsiteWikiLicense

🌤️ 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?

  • 🌀 Flutter WASM Support: Seamlessly integrate with Flutter WebAssembly for enhanced performance.
  • 🕵🏻 Anonymous Access: Join meetings without the need for registration or login.
  • 👥 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.
  • 💬 Encrypted Chat: Communicate privately with encrypted messaging during video calls.
  • 💋 Beauty Filter: Using GPUPixel to implement Beauty Filters
  • 💬 Subtitles: Enable subtitles for better accessibility and understanding during calls.

🎯 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 🟢 🟢 🟢 🟢 🟢 🟢
Web 🟢 🟢 🟢 🟢 🟡 🟢
MacOS 🟢 🟢 🔴 🟢 🟢 🟢
Linux 🟢 🟢 🔴 🟡 🟡 🟢
Windows 🟢 🟢 🔴 🟡 🟡 🟢

🟢 = 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. Install Rust via rustup.
  3. Clone the Waterbus repository.
  4. Run flutter pub get to download dependencies.
  5. Run flutter run to start the app.

🛠️ Building

These commands are intended for maintainers only.

Android

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

Linux

  • Install libmpv
sudo apt install libmpv-dev mpv
  • Install GStreamer
sudo apt-get install libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev
  • Build
flutter build linux

Web

flutter build web

💙 Supports

Support it by joining stargazers for this repository. ⭐

Also, follow maintainers on GitHub for our next creations!

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