medea_flutter_webrtc 0.8.3-dev+rev.ce4412e489ba0138012415278e5943500ce173ce copy "medea_flutter_webrtc: ^0.8.3-dev+rev.ce4412e489ba0138012415278e5943500ce173ce" to clipboard
medea_flutter_webrtc: ^0.8.3-dev+rev.ce4412e489ba0138012415278e5943500ce173ce copied to clipboard

Flutter WebRTC plugin for Android/iOS/macOS/Linux/Windows/Web, based on GoogleWebRTC, designed for and used in Medea Jason WebRTC client.

Medea Flutter-WebRTC #

pub libwebrtc OpenAL

Changelog

WebRTC plugin for Flutter, designed for and used in Medea Jason WebRTC client, built on top of prebuilt libwebrtc binaries.

Initially, represented a fork of the Flutter-WebRTC plugin, but at the moment, there is almost nothing left from the initial upstream version due to a complete rewrite.

Supported platforms #

How it works #

Diagram

Usage #

Add medea_flutter_webrtc as a dependency to your pubspec.yaml file.

Android #

Ensure that the following permissions are present in your AndroidManifest.xml file, located in <project_root>/android/app/src/main/AndroidManifest.xml:

<uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.camera.autofocus" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />

If you need to use a Bluetooth device (like headphones), then also add:

<uses-permission android:name="android.permission.BLUETOOTH" android:maxSdkVersion="30" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" android:maxSdkVersion="30" />
<uses-permission android:name="android.permission.BLUETOOTH_CONNECT" />

The Flutter project template usually adds them, so they may already be there.

Also, you will need to set your build settings to Java 8, because the official WebRTC JAR on Android uses static methods in EglBase interface. Just add this to your app level build.gradle:

android {
    //...
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
}

If necessary, in the same build.gradle you need to increase minSdkVersion of defaultConfig up to 21 (currently, the default Flutter generator sets it to 16).

IMPORTANT: When you compile the release .apk, you need to add the following operations: Setup Proguard Rules.

iOS #

Add the following entry to your Info.plist file, located in <project_root>/ios/Runner/Info.plist:

<key>NSCameraUsageDescription</key>
<string>$(PRODUCT_NAME) Camera Usage!</string>
<key>NSMicrophoneUsageDescription</key>
<string>$(PRODUCT_NAME) Microphone Usage!</string>

These entries allow your app to access camera and microphone.

Example #

For more details, please see the medea_flutter_webrtc_example example.

License #

Copyright © 2021-2023 Instrumentisto Team, https://github.com/instrumentisto

This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.

The original upstream source code is licensed under MIT license with modifications following Apache License 2.0.

10
likes
0
pub points
63%
popularity

Publisher

verified publisherinstrumentisto.com

Flutter WebRTC plugin for Android/iOS/macOS/Linux/Windows/Web, based on GoogleWebRTC, designed for and used in Medea Jason WebRTC client.

Repository (GitHub)
View/report issues

License

unknown (license)

Dependencies

collection, ffi, flutter, flutter_rust_bridge, freezed_annotation, js, meta, uuid

More

Packages that depend on medea_flutter_webrtc