flutter_webrtc

1.6.3

Flutter WebRTC plugin for iOS/Android/Desktop/Web, based on GoogleWebRTC.

Download archive

Readme

Flutter-WebRTC

Financial Contributors on Open Collective pub package Gitter slack

WebRTC plugin for Flutter Mobile/Desktop/Web

Functionality

Feature Android iOS Web macOS Windows Linux Embedded Fuchsia
Audio/Video :heavy_check_mark: :heavy_check_mark: :heavy_check_mark: :heavy_check_mark: :heavy_check_mark: :heavy_check_mark: :heavy_check_mark:
Data Channel :heavy_check_mark: :heavy_check_mark: :heavy_check_mark: :heavy_check_mark: :heavy_check_mark: :heavy_check_mark: :heavy_check_mark:
Screen Capture :heavy_check_mark: :heavy_check_mark:(*) :heavy_check_mark: :heavy_check_mark: :heavy_check_mark: :heavy_check_mark: :heavy_check_mark:
Unified-Plan :heavy_check_mark: :heavy_check_mark: :heavy_check_mark: :heavy_check_mark: :heavy_check_mark: :heavy_check_mark: :heavy_check_mark:
Simulcast :heavy_check_mark: :heavy_check_mark: :heavy_check_mark: :heavy_check_mark: :heavy_check_mark: :heavy_check_mark: :heavy_check_mark:
MediaRecorder :warning: :warning: :heavy_check_mark:
End to End Encryption :heavy_check_mark: :heavy_check_mark: :heavy_check_mark: :heavy_check_mark: :heavy_check_mark: :heavy_check_mark: :heavy_check_mark:
Insertable Streams

Additional platform/OS support from the other community

Add flutter_webrtc as a dependency in your pubspec.yaml file.

iOS/macOS: Swift Package Manager

The plugin supports both Swift Package Manager and CocoaPods on iOS and macOS. With Flutter 3.44 or later, Swift Package Manager is enabled by default and the plugin is consumed as a Swift package automatically. No project changes are needed.

CocoaPods remains fully supported and is used when Swift Package Manager is disabled or on older Flutter versions. The Podfile notes below apply to CocoaPods projects only.

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>

This entry allows your app to access camera and microphone.

Note for iOS

The WebRTC.xframework compiled after the m104 release no longer supports iOS arm devices, so need to add the config.build_settings['ONLY_ACTIVE_ARCH'] = 'YES' to your ios/Podfile in your project

ios/Podfile

post_install do |installer|
  installer.pods_project.targets.each do |target|
    flutter_additional_ios_build_settings(target)
     target.build_configurations.each do |config|
      # Workaround for https://github.com/flutter/flutter/issues/64502
      config.build_settings['ONLY_ACTIVE_ARCH'] = 'YES' # <= this line
     end
  end
end

Android

Ensure the following permission is present in your Android Manifest 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.CAMERA" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />

If you need to use a Bluetooth device, please add:

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

The Flutter project template adds it, so it may already be there.

Also you will need to set your build settings to Java 8, because official WebRTC jar now 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 will need to increase minSdkVersion of defaultConfig up to 23 (currently default Flutter generator set it to 16).

Important reminder

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

Contributing

The project is inseparable from the contributors of the community.

Example

For more examples, please refer to flutter-webrtc-demo.

Contributors

Code Contributors

This project exists thanks to all the people who contribute. [Contribute].

Financial Contributors

Become a financial contributor and help us sustain our community. [Contribute]

Individuals

Organizations

Support this project with your organization. Your logo will show up here with a link to your website. [Contribute]

Changelog

Changelog

[1.6.3] - 2026-10-26

  • fix(desktop): run task runner tasks without holding the queue lock (#2244)
  • chore: bump WebRTC-SDK to 150.7871.04 (drop compromised eMudhra CA root) (#2245)
  • chore(libwebrtc): bump libwebrtc to m150.7871.07 for Windows/Linux (drop compromised eMudhra CA root).
  • fix(desktop): write encoding changes back in RtpSender setParameters (#2211)
  • fix(darwin): resolve the plugin instance per engine and free it on engine teardown (#2221)
  • fix(windows): list the host app's own windows in desktop sources (#2226)
  • fix(darwin): discover capture devices off the main thread in getSources (#2229)
  • fix(macos): list desktop sources off the main thread (#2228)
  • fix(android): keep remote tracks added in Unified Plan rendering after getTransceivers() (#2230)
  • chore(example): add video processor sample for Android/iOS/macOS. (#2237)
  • feat(desktop): let native plugins attach video processors to local tracks (#2233)
  • fix(windows): stop VideoRendererDispose from releasing a renderer twice (#2235)
  • fix(darwin): duplicate null check for video renderer (#2219)
  • fix(desktop): captureFrame frees its RGBA buffer and no longer busy-waits (#2185)
  • feat(android): support constrained high-speed Camera2 capture (#2213)
  • fix(web): prevent native video interactions in HTML views (#2209)

[1.6.2+hotfix.4] - 2026-10-07

  • [Darwin] fix(crash): do not dereference a freed video renderer from the first frame callback. Disposing a renderer while frames are in flight no longer crashes with EXC_BAD_ACCESS in -[FlutterRTCVideoRenderer renderFrame:] (#2190).
  • [Darwin] fix: keep sharedSingleton on the plugin instance that owns the peer connection factory. A second Flutter engine no longer replaces it with an instance that has no factory (#2186).
  • [iOS] refactor: take the audio session configuration lock once in ensureAudioSession (#2195).
  • [Android] fix: dispose video renderers when the plugin detaches from the engine (#2192).
  • [Android/Darwin/Windows/Linux] fix: enable SCTP SNAP instead of DSCP marking when WARP is enabled. Windows and Linux move to libwebrtc m150.7871.03 (#2188).
  • [Dart] fix: RTCDataChannel.close() moves the channel to the closed state and notifies listeners. send() after close() throws instead of reaching the platform (#2191).
  • [Windows/Linux] fix: synchronize data channel observer map access across the signaling and platform threads (#2194).

[1.6.2+hotfix.3] - 2026-09-15

  • [Windows/Linux] fix: fixed fieldTrials copy in libwebrtc to fix WARP bug for Windows/Linux.
  • [Darwin] fix(darwin): stop leaking every platform view that is disposed (#2179).

[1.6.2+hotfix.2] - 2026-09-14

  • [Darwin] fix: release event channel stream handlers on peerConnectionDispose instead of peerConnectionClose. close() followed by dispose() no longer reports MissingPluginException for cancel on FlutterWebRTC/peerConnectionEvent (#2172).
  • [Android] fix: release data channel event channel handlers and dispose the Java DataChannel wrapper when a channel is closed or its peer connection is disposed (#2174).
  • [Dart] fix: RTCPeerConnection.dispose() closes every data channel the connection created or received. RTCDataChannel.close() on native platforms is idempotent (#2175).
  • [Windows/Linux] fix(crash): keep the PeerConnection observer alive during disposal (#2171).

[1.6.2+hotfix.1] - 2026-09-08

  • [Windows/Linux] fix(crash): Do not access the WebRTC API before calling EnsureWebRTCInitialized (#2169)

[1.6.2] - 2026-09-07

  • [Darwin/Android/Windows/Linux] Add WARP support.

[1.6.1] - 2026-09-01

  • [Darwin/Android/Windows/Linux] feat: upgrade libwebrtc to 150.7871.01.

[1.6.0+hotfix.1] - 2026-08-21

  • [Darwin] fix: bump Webrtc.xcframework to 144.7559.10 to fix the regression.

[1.6.0] - 2026-07-29

  • [Darwin] feat: Swift Package Manager support. Apps with Flutter's SPM integration enabled consume the plugin as a Swift package automatically; CocoaPods remains fully supported (#2062).
  • [iOS] fix: replace the private RPSystemBroadcastPickerView buttonPressed: selector with public UIKit APIs, App Store review rejected binaries containing it (#2121).
  • [Darwin/Android] fix: serialize data channel eventSink/eventQueue access between the WebRTC signaling thread and the platform thread. On iOS the unsynchronized access could crash with EXC_BAD_ACCESS in objc_retain inside -[RTCDataChannel(Flutter) onListenWithArguments:eventSink:] (#2118).
  • [Darwin] feat: expose the audio device module's microphone mute mode (Helper.setMicrophoneMuteMode / Helper.getMicrophoneMuteMode). voiceProcessing (the default) plays the platform mute tone on mute/unmute; inputMixer and restartEngine mute silently (#2098, #2105).
  • [Darwin/Android] feat: add ADM-level microphone mute (Helper.setMicrophoneMuted / Helper.isMicrophoneMuted), independent of MediaStreamTrack.enabled (#2105).
  • [iOS/macOS] feat: RTCVideoPlatformView.placeholderBuilder to show a widget until the first frame renders (#2102).
  • [Android] feat: option to disable the built-in hardware AEC/NS (#2104).
  • [Android] feat: expose getStreamForId to embedders (#2109).
  • [Android] fix: stop-time deadlock/ANR in OrientationAwareScreenCapturer (#2092).
  • [Android] fix: NPE in setFocusPoint/setExposurePoint when the orientation cache was never populated (#2113).
  • [Darwin] fix: create the parent directory before captureFrame writes the image file (#2090).

[1.5.2] - 2026-06-20

  • [Android] expose the internally managed audio device module to embedders (#2099).
  • [Windows] fix libwebrtc extraction when the plugin is loaded through a symlink (#2100).

[1.5.1] - 2026-06-14

  • [Android] fix: recreate the texture surface when the incoming frame size changes, so simulcast layer upgrades no longer stay blurry (#2085).
  • [Android] chore: bump audioswitch to 039a35ae, aligning with the LiveKit Android SDK (Communication Device API support, wired headset and Bluetooth fixes) (#2084).
  • [Android] feat: add fullScreenOnly option to requestCapturePermission to force entire-screen capture on API 34+ (#2079).
  • [Darwin] fix: call SetRecordingDevice(0) when no sourceId is supplied (#2072).

[1.5.0] - 2026-06-12

  • [iOS/macOS] feat: enable platform rendering (RTCVideoPlatFormView) on macOS, with a shared Darwin implementation (#2058).
  • [iOS/macOS] feat: use the AVAudioEngine audio device module on both platforms, enabling Apple platform voice processing (AEC/NS/AGC) and the audio processing options API on macOS (#2009, #2082).
  • [Windows] feat: loopback capture for application and desktop audio (#2060).
  • [iOS/macOS] feat: allow embedders to own audio session management (#2069).
  • [Android] feat: expose the peer connection factory to embedders (#2077).
  • [Android] chore: support AGP 9 built-in Kotlin; apply KGP only when built-in Kotlin is inactive (#2075).
  • [Windows/Linux] fix: map echoCancellation/noiseSuppression/autoGainControl constraints to RTCAudioOptions (#2068).
  • [Android] fix: screen capture rotation (#2055) and rotation after orientation changes (#2048).
  • [Android] fix: prevent CameraAccessException on concurrent video calls (#2013).
  • [Android] fix: tolerate Qualcomm/Hisi encoders in VideoFileRenderer (#2030) and guard muxer writes against invalid sample buffers (#2031).
  • [Android] fix: IllegalStateException when the app is swipe-killed during a session (#2033).
  • [iOS] fix: audio session output port override for speaker toggle (#1941).
  • [Dart] fix: handling of KeyDerivationAlgorithm option (#2049).
  • [Windows/Linux] chore: drive prebuilt libwebrtc download from third_party/libwebrtc_version.ini (#2061).
  • [Darwin/Android] chore: bump WebRTC-SDK to 144.7559.09 (#2078).
  • [Windows/Linux] chore: bump prebuilt libwebrtc to m144.7559.09 (#2078).

[1.4.1] -2026-03-24

  • [Dart] fixed scalabilityMode (#2022).
  • [Windows/Linux] sanitize UTF-8 for device strings before platform messages(#2021)

[1.4.0] -2026-03-17

  • [macOS]: use ScreenCaptureKit for screen capture (fallback to RTCDesktopCapturer) by @EnterDevelopers in (#1991)
  • [libwebrtc]: bump version for libwebrtc to m144.
  • [Win/Linux]: DataPacketCryptor for win/linux.

[1.3.1] - 2026-02-25

  • [iOS/macOS] chore: bump webrtc to v137.7151.12.
  • [Android] fix: avoid Turkish locale issue in DegradationPreference.valueOf (#2002)
  • [macOS] Refresh screen capture sources & permission check (#1977)
  • [macOS] fix(macos): use CoreAudio ADM to prevent screen share crash (#1990)

[1.3.0] - 2026-01-26

  • [Mobile/Desktop/Web] feat: Add priority and networkPriority to RTCRtpEncoding (#1983)
  • [Android] fix(android): Prevent ClassCastException validating track kind in method "mediaStreamAddTrack" (#1980)
  • [Android] fix(android): resolve ConcurrentModificationException in audio callback (#1985)
  • [Android] feat(android): Add configurable audio sample rate with smart defaults (#1967)
  • [Android] fix:hisi chip Error 0x80001001 (#1969)
  • [iOS] fix(ios): resolve critical memory leak in video recording (#1960)

[1.2.1] - 2025-11-21

  • [Linux] fix: Enable software AEC/NS/AGC for linux.
  • [Android] fix: Removed redundant null check and release for audioFileRenderer.
  • [Web] fix: Fix Android chrome mobile not rendering html element (#1938)
  • [Web] fix: Clip hard edge on web's rtc_video_view (#1936)

[1.2.0] - 2025-09-13

  • [Android] upgrade compileSdk to 36 as standard for 16kb pages support (#1925)
  • [Apple/Android] Local recording API for Darwin and Android (#1880)
  • [Apple/Android] Data Packet Cryptor Support.

[1.1.0] - 2025-08-20

  • [Apple/Android] feat: Add H265/HEVC support.
  • [Mobile/Desktop] feat: Support write logs with Logger (logger package) (#1891)
  • [Android] fix: Reduce Recording Stop Delay and Prevent Encoder OOM Crashes (Android) (#1912)
  • [Native/Web] feat: small setVolume addition (#1904)
  • [Web] feat: Add texture-based video rendering for web (#1911)
  • [Android] fix: RECORDINGS - Add fallback resolutions for unsupported stream frame sizes on low-end Android devices (#1900)
  • [Android] fix: Update proguard-rules.pro (#1902)

[1.0.0] - 2025-07-25

  • Bump version to 1.0.0
  • [Native] feat: Upgrade libwebrtc to m137. (#1877).
  • [Doc] fix: typo in package description (#1895)
  • [Android] fix: Video recording crashing and freezing on Android 14 Devices (#1886)
  • [Android] fix: Add audio recording for Android Platform (#1884)
  • [Dart] fix: Removed outdated code to avoid UI not being displayed in Windows release mode (#1890)
  • [Apple] fix: Fix compile warnings (#1887)
  • [Apple] feat: Update to m137 with audio engine (#1875)
  • [Android] fix: Ensure both video and audio tracks are added before starting the muxer (#1879)

[0.14.2] - 2025-07-01

  • [Windows/Linux] feat: Add audio processing and sink API for cpp. (#1867)
  • [Linux] fix: Fixed audio device selection error for Linux. (#1864)
  • [Android] fix: Fix screen capture orientation for landscape-native devices (#1854)

[0.14.1] - 2025-05-22

  • [Android] fix: Recording bug (#1839)
  • [Android] fix: calls in terminated mode by disabling orientation manager (#1840)
  • [Android] fix: Wait for audio and video thread to fully stop to avoid corrupted recordings (#1836)

[0.14.0] - 2025-05-06

  • [iOS/Android]feat: Media Recorder implementation Android and iOS (#1810)
  • [Wndows] fix: Pickup registrar for plugin by plugin registrar manager (#1752)
  • [Linux] fix: add task runner for linux. (#1821)
  • [iOS/macOS] fix: Fix deadlock when creating a frame cryptor on iOS/macOS.

[0.13.1+hotfix.1] - 2025-04-07

  • [Android] fix: Fix clearAndroidCommunicationDevice call blocking.

[0.13.1] - 2025-04-03

  • [Android] fix: remove setPreferredInputDevice when getUserAduio. (#1808)
  • [Web] fix: race condition in RTCVideoRenderer for Web (#1805)
  • [Android] fix: Migrate from onSurfaceDestroyed to onSurfaceCleanup for SurfaceProducer.Callback. (#1806)

[0.13.0] - 2025-03-24

  • [All] feat: add getBufferedAmount for DataChannel. (#1796)
  • [Windows] fix: fixed non-platform thread call error. (#1795)

[0.12.12+hotfix.1] - 2025-03-12

  • [Android] fix: fixed video not rendered after resume from background.

[0.12.12] - 2025-03-09

  • [Android] feat: Migrate to the new Surface API. (#1726)
  • [Chore] chore: fix sponsors logo and links.

[0.12.11] - 2025-02-23

  • [web] bump version for dart_webrtc.
  • [web] fix: compile error for web with --wasm.

[0.12.10] - 2025-02-18

  • [web] bump version for dart_webrtc.
  • [web] fix: compile error for web with --wasm.

[0.12.9] - 2025-02-13

  • [iOS] feat: Add option to start capture without broadcast picker (#1764)

[0.12.8] - 2025-02-07

  • [Dart] feat: expose rtc video value (#1754)
  • [Dart] chore: bump webrtc-interface to 1.2.1.

[0.12.7] - 2025-01-24

  • [iOS] More robustness for video renderer. (#1751)

[0.12.6] - 2025-01-20

  • [iOS] fix In-app screen recording.
  • [Android] fix: avoid crashes when surfaceTextureHelper is null. (#1743)

[0.12.5+hotfix.2] - 2024-12-25

  • [iOS] fix: Audio route issue for iOS.

[0.12.5+hotfix.1] - 2024-12-25

  • [iOS/macOS] fix: Pass MediaConstraints for getUserAudio.

[0.12.5] - 2024-12-23

  • [iOS/Android] Fixed buf for screen capture.
  • [Android] Fixed first frame flickering.

[0.12.4] - 2024-12-16

  • [iOS/Android] add FocusMode/ExposureMode settings for mobile. (#1435)
  • [Dart] fix compiler errors.
  • [eLinux] add $ORIGIN to rpath in elinux (#1720).

[0.12.3] - 2024-11-29

  • [iOS/Android/macOS] feat: Expose AV Processing and Sink native APIs.

[0.12.2] - 2024-11-26

  • [Dart] fix: race condition during video renderer initialization. (#1692)
  • [Darwin] fix: Add mutex lock to avoid pixelbuffer access contention. (#1694)

[0.12.1+hotfix.1] - 2024-10-25

  • [iOS] fix: fix switch camera broken on iOS.

  • [web] fix: add stub WebRTC.initialize for web.

  • [Docs] Fixing proguard rules link (#1686)

  • [iOS/Android] feat: support unprocessed audio (#825)

  • [eLinux] feat: add support for eLinux (#1338)

[0.12.0+hotfix.1] - 2024-10-18

  • [macOS] fix compilation error for macOS.

[0.12.0] - 2024-10-16

  • [iOS/macOS] Fix memory leak for iOS/macOS.
  • [iOS] Support MultiCam Session for iOS.

[0.11.7] - 2024-09-04

  • [Web] Bump dart_webrtc to 1.4.9.
  • [Web] Bump web version to 1.0.0.

[0.11.6+hotfix.1] - 2024-08-07

  • [iOS] Fixed PlatformView not rendering after resuming from background.

[0.11.6] - 2024-08-02

  • [Web] change VideoElement to HTMLVideoElement.
  • [iOS] added shared singleton for FlutterWebRTCPlugin (#1634)
  • [iOS] Using av samplebuffer for PlatformView (#1635)

[0.11.5] - 2024-07-23

  • [Android] Report actual sizes for camera media stream track (#1636).

[0.11.4] - 2024-07-19

  • [Android] fix issue for camera switching.

[0.11.3] - 2024-07-12

  • Bump version for libwebrtc.

[0.11.2] - 2024-07-09

  • [Windows] fix crash for windows.
  • [Darwin] bump WebRTC version for darwin.

[0.11.1] - 2024-06-17

  • [macOS] Downgrade macOS system dependencies to 10.14.

[0.11.0] - 2024-06-17

  • [Native] upgrade libwebrtc to m125.6422.

[0.10.8] - 2024-06-05

  • [iOS] fix(platform_view): fit cover works wrong (#1593)
  • [iOS/macOS] fix: Fix the issue that the video is not displayed when using 'video': true (#1592)
  • [Web] bump dart_webrtc to 1.4.6.

[0.10.7] - 2024-05-30

  • [iOS] feat: add PlatformView Renderer for iOS. (#1569)
  • [iOS] fix: audio session control for iOS. (#1590)

[0.10.6] - 2024-05-13

  • [Web] Some important fixes for web.

[0.10.5] - 2024-05-13

  • [Android] fix: make MediaDeviceInfo (Audio deviceId, label, groupId) consistent. (#1583)

[0.10.4] - 2024-05-06

  • [iOS/macOS] chore: update swift webrtc sdks to 114.5735.10 (#1576)
  • [Android] fix: actually call selectAudioOutput in enableSpeakerButPreferBluetooth
  • [iOS] fix: remember speakerphone mode for ensureAudioSession (#1568)
  • [Windows/Linux] Fix handling of unimplemented method (#1563)

[0.10.3] - 2024-04-09

  • [iOS/macOS] Fix compilation warning for iOS/macOS.

[0.10.2] - 2024-04-08

  • [Native/Web] feat: add keyRingSize/discardFrameWhenCryptorNotReady to KeyProviderOptions.

[0.10.1] - 2024-04-08

  • [Web] fix renderer issue for web.

[0.10.0] - 2024-04-08

  • [Web] move to package:web.

[0.9.48+hotfix.1] - 2024-02-05

  • [Android] bump version for libwebrtc.

[0.9.48] - 2024-02-05

  • [Android] bump version for libwebrtc.
  • [iOS] Supports ensureAudioSsession method for iOS only. (#1514)
  • [Android] fix android wrong display size. (#1508).

[0.9.47] - 2023-11-29

  • [Windows/Linux] fix: Check the invalid value of candidate and session description. (#1484)
  • [Windows/Linux/macOS] fix: screen sharing issue for desktop.
  • [Web] fix: platformViewRegistry getter is deprecated (#1485)
  • [Dart] Throw exception for set src object (#1491).

[0.9.46] - 2023-10-25

  • [iOS/macOS] fix: Crop video output size to target settings. (#1472)
  • [Android] fix: Fix bluetooth sco not stopping after room disconnect (#1475)

[0.9.45] - 2023-09-27

  • [iOS/macOS] fix: send message on non-platform thread.
  • [Windows] fix: fix setSrcObj with trackId for Windows.
  • [Windows] fix: fix "unlock of unowned mutex" error when call "captureFrame()" func on windows.

[0.9.44] - 2023-09-25

  • [Windows] fix: fix Renderer bug for Windows.
  • [Native] fix: Use independent threads to process frame encryption/decryption
  • [Native] fix: Correct handle SIF frame
  • [Native] fix: Fix a fault tolerance judgment failure

[0.9.43] - 2023-09-20

  • [Native] fix: send frame cryptor events from signaling thread.
  • [Native] fix: h264 freeze when using E2EE.

[0.9.42+hotfix.1] - 2023-09-15

  • [Windows/Linux] fix: fix cannot start vp8/h264 encoder correctly.

[0.9.42] - 2023-09-15

  • [Dart/Native] feat: add more framcryptor api (#1444)

  • [Dart/Native] feat: support scalability mode (#1442)

  • [Android] fix: Turn off audio routing in non communication modes (#1438)

  • [Android] feat: Add more control over android audio options.

[0.9.41] - 2023-08-30

  • [Android] feat: Add more control over android audio options.

[0.9.40] - 2023-08-16

  • [Windows/Linux] fix: nullptr checking for sender/receiver for getStats.

[0.9.39] - 2023-08-14

  • [Dart/Native] feat: add async methods for getting pc states.

[0.9.38] - 2023-08-11

  • [Android] fix: Expose helper to clearCommunicationDevice on AudioManager.AUDIOFOCUS_LOSS
  • [Android] feat: support force SW codec list for android, and disable HW codec for VP9 by default.
  • [Android] fix: issue for audio device switch (#1417)
  • [Android/iOS] feat: Added setZoom method to support camera zooming while streaming. (#1412).

[0.9.37] - 2023-08-07

  • [Native] fix: Skip set_sdp_fmtp_line if sdpFmtpLine is empty.
  • [Android] fix: fix android earpiece not being replaced after wired headset is disconnected.
  • [Dart] fix: partially rebuild RTCVideoView when renderVideo value changes.
  • [Android] feat: expose android audio modes.
  • [Android] feat: support forceSWCodec for Android.
  • [Linux] fix: add $ORIGIN to rpath.

[0.9.36] - 2023-07-13

  • [Native] upgrade libwebrtc to m114.5735.02.
  • [Windows/Linux] Add implementation to MediaStreamTrack.captureFrame() for linux/windows.
  • [Darwin/Android] Support to ignore network adapters used for ICE on Android, iOS and macOS.

[0.9.35] - 2023-06-30

  • [iOS] feat: expose audio mode for ios.
  • [Darwin] fix: compiler warning for Darwin.
  • [Dart] Fix setMicrophoneMute() not awaitable.
  • [Native] Update libwebrtc to m114.
  • [Dart/Web] Separate frame cryptor to dart-webrtc.

[0.9.34] - 2023-06-14

  • [Web] fix facingMode for flutter web mobile.

[0.9.33] - 2023-06-08

  • [Android] fix frame drops for android.

[0.9.32] - 2023-05-30

  • [Android] fix issue for get user audio.
  • [Android] fix getStats throw LinkedHasMap exception.

[0.9.31] - 2023-05-23

  • [Darwin] Improve iOS/macOS H264 encoder (Upgrade to WebRTC-SDK M104.5112.17).

[0.9.30+hotfix.2] - 2023-05-18

  • [Windows/Linux] fix bug for eventchannel proxy.
  • [Windows/Linux] fix: crash for pc.close/dispose on win/linux. (#1360)

[0.9.30+hotfix.1] - 2023-05-17

  • [Windows/Linux] Fix compiler error.

[0.9.30] - 2023-05-16

  • [Darwin] Handle exceptions for frame rate settings for darinw. (#1351)
  • [Android] Fix bluetooth device enumerate. (#1349)
  • [Darwin/Android/Windows/Linux] Added maxIPv6Networks configuration (#1350)
  • [iOS] Fix: broadcast extension not found fallback logic (#1347)
  • [Android] Move the call of capturer.stopCapture() outside the main thread to avoid blocking of flutter method call.
  • [Windows/Linux] Fix the crash issue of video room (#1343)

[0.9.29+hotfix.1] - 2023-05-08

  • [Android] fix: application context null when app is terminated.
  • [Android/iOS] feat: add way to enable speaker but prefer bluetooth.

[0.9.28] - 2023-05-08

  • [Windows/Linux] fix: use the correct transceiver id.
  • [Windows/Linux] fix: Support restart camera for Windows/Linux.

[0.9.27] - 2023-04-27

  • [Darwin/Android/Windows/Linux] feat: framecryptor.
  • [Windows/Linux] Fix the type/code mistake.
  • [Windows/Linux] Fix uneffective RTPTransceiver::GetCurrentDirection.
  • [Windows/Linux] RTPtransceiver::getCurrentDirection returns correct value.

[0.9.26] - 2023-04-16

  • [iOS/macOS] motify h264 profile-level-id to support high resolution.
  • [Dawrin/Android/Windows] feat: add RTCDegradationPreference to RTCRtpParameters.

[0.9.25] - 2023-04-10

  • [Dawrin/Android/Windows] Add addStreams to RTCRtpSender
  • [Android] fix: label for Wired Headset. (#1305)
  • [Dawrin/Android/Windows] Feat/media stream track get settings (#1294)
  • [Android/iOS] Fix track lookup in the platform specific code for Android and iOS (#1289)
  • [iOS] fix: ICE Connectivity doesn't establish with DualSIM iPhones.
  • [Android] Switch to webrtc hosted on maven central (#1288)

[0.9.24] - 2023-03-07

  • [iOS] avaudiosession mode changed to AVAudioSessionModeVideoChat (#1285)
  • [macOS] fix memory leak for screen capture.

[0.9.23] - 2023-02-17

  • [Windows/Linux] Updated libwebrtc binary for windows/linux to fix two crashes.

[0.9.22] - 2023-02-14

  • [iOS] fix: Without any setActive for rtc session, libwebrtc manages the session counter by itself. (#1266)
  • [dart] fix: remove rtpsender.dispose.
  • [web] fix video renderer issue for safari.
  • [macOS] Fixed macOS desktop capture crash with simulcast enabled.
  • [macOS] Fix the crash when setting the fps of the virtual camera.

[0.9.21] - 2023-02-10

  • [Web] Fix: RTCRtpParameters.fromJsObject for Firefox.
  • [Web] Add bufferedamountlow.
  • [Android] Fixed frame capturer returning images with wrong colors (#1258).
  • [Windows] bug fix.

[0.9.20] - 2023-02-03

  • [Dawrin/Android/Windows] Add getCapabilities/setCodecPreferences methods
  • [Darwin] buffered amount
  • [Linux] Fixed audio device name buffer size
  • [Android] Start audioswitch and only activate it when needed
  • [Darwin] Fix typo which broke GcmCryptoSuites

[0.9.19] - 2023-01-10

  • [Dart] Fix getStats: change 'track' to 'trackId' (#1199)
  • [Android] keep the audio switch after stopping (#1202)
  • [Dart] Enhance RTC video view with placeholder builder property (#1206)
  • [Android] Use forked version of audio switch to avoid BLUETOOTH_CONNECT permission (#1218)

[0.9.18] - 2022-12-12

  • [Web] Bump dart_webrtc to 1.0.12, Convert iceconnectionstate to connectionstate for Firefox.
  • [Android] Start AudioSwitchManager only when audio track added (fix #1163) (#1196)
  • [iOS] Implement detachFromEngineForRegistrar (#1192)
  • [iOS] Handle Platform Exception on addCandidate (#1190)
  • [Native] Code format with clang-format.

[0.9.17] - 2022-11-28

  • [Android] Update android webrtc version to 104.5112.05
  • [iOS] Update WebRTC.xframework version to 104.5112.07

[0.9.16] - 2022-11-14

  • [Linux] Fixed compiler error for flutter 3.3.8.
  • [Linux] Remove 32-bit precompiled binaries.
  • [Linux] Supports linux-x64 and linux-arm64.

[0.9.15] - 2022-11-13

  • [Linux] Add Linux Support.

[0.9.14] - 2022-11-12

  • [iOS] Fix setSpeakerOn has no effect after change AVAudioSession mode to playback.

[0.9.13] - 2022-11-12

  • [Dart] Change MediaStream.clone to async.
  • [iOS] Fixed the bug that the mic indicator light was still on when mic recording was stopped.
  • [iOS/macOS/Android/Windows] Allow sdpMLineIndex to be null when addCandidate.
  • [macOS] Frame capture support for MacOS.
  • [Android] Add enableCpuOveruseDetection configuration (#1165).
  • [Android] Update comments (#1164).

[0.9.12] - 2022-11-02

  • [iOS] Fixed the problem that iOS earphones and speakers do not switch.
  • [Windows] fix bug for rtpSender->RemoveTrack/pc->getStats.
  • [iOS] Return groupId.
  • [Web] MediaRecorder.startWeb() should expose the timeslice parameter.
  • [iOS] Implement RTCPeerConnectionDelegate didRemoveIceCandidates method.
  • [iOS] fix disposing Broadcast Sharing stream.

[0.9.11] - 2022-10-16

  • [iOS] fix audio route/setSpeakerphoneOn issues.
  • [Windows] fix: Have same remote streams id then found wrong MediaStream.
  • [Dart] feat: RTCVideoRenderer supports specific trackId when setting MediaStream.

[0.9.9+hotfix.1] - 2022-10-12

  • [Darwin] Fix getStats for darwin when trackId is NSNull.

[0.9.9] - 2022-10-12

  • [Darwin/Android/Windows] Support getStats for RtpSender/RtpReceiver (Migrate from Legacy to Standard Stats for getStats).
  • [Android] Dispose streams and connections.
  • [Android] Support rtp transceiver direction type 4.
  • [Web] Update dart_webrtc dependendency.

[0.9.8] - 2022-09-30

  • [Android] fix: Make sure local stream/track dispose correctly.
  • [Android] Remove bluetooth permission on peerConnectionInit.
  • [iOS] Fix system sound interruption on iOS (#1099).
  • [Android] Fix: call mode on app start (#1097).
  • [Dart] Avoid renderer initialization multiple times (#1067).

[0.9.7] - 2022-09-13

  • [Windows] Support sendDtmf.
  • [Windows] Fixed getStats.

[0.9.6] - 2022-09-06

  • [Dart] The dc created by didOpenDataChannel needs to set state to open.
  • [Dart] Added callback onFirstFrameRendered.

[0.9.5] - 2022-08-30

  • [Android] fix: Fix crash when using multiple renderers.
  • [Android] fix bug with track dispose cannot close video
  • [Andorid/iOS/macOS/Windows] Fix bug of missing events in data-channel.

[0.9.4] - 2022-08-22

  • [Andorid/iOS/macOS/Windows] New audio input/output selection API, ondevicechange event is used to monitor audio device changes.

[0.9.3] - 2022-08-15

  • [Windows/macOS] Fix UI freeze when getting thumbnails.

[0.9.2] - 2022-08-09

  • [Android] update libwebrtc to com.github.webrtc-sdk:android:104.5112.01.
  • [iOS/macOS] update WebRTC-SDK to 104.5112.02.
  • [Windows] update libwebrtc.dll to 104.5112.02.

[0.9.1] - 2022-08-01

  • [iOS] fix : iOS app could not change camera resolutions cause by wrong datatype in the video Contraints.
  • [Darwin] bump version for .podspec.

[0.9.0] - 2022-07-27

  • [macOS] Added screen-sharing support for macOS
  • [Windows] Added screen-sharing support for Windows
  • [iOS/macOS] fix: Fix compile warning for Darwin
  • [Darwin/Android/Windows] fix: Fix typo peerConnectoinEvent -> peerConnectionEvent for EventChannel name (#1019)

[0.8.12] - 2022-07-15

  • [Darwin]: fix: camera release.

[0.8.11] - 2022-07-11

  • [Windows] Fix variant exception of findLongInt. (#990)
  • [Windows] fix unable to get username/credential when parsing iceServers containing urls
  • [iOS] Fix RTCAudioSession properties set with libwebrtc m97, Fixes #987.

[0.8.10] - 2022-06-28

  • [iOS] IPC Broadcast Upload Extension support for Screenshare

[0.8.9] - 2022-06-08

  • [Android] Fixes DataChannel issue described in #974
  • [iOS] Fixes DataChannel issue described in #974
  • [Dawrin/Android/Windows] Split data channel's webrtc id from our internal id (#961)
  • [Windows] Update to m97.
  • [Windows] Add PeerConnectionState
  • [Windows] Fix can't open mic alone when built-in AEC is enabled.

[0.8.8] - 2022-05-31

  • [Android] Added onBufferedAmountChange callback which will return currentBuffer and changedBuffer and implemented bufferedAmount.
  • [Android] Added onBufferedAmountLow callback which will return currentBuffer ans will be called if bufferedAmountLowThreshold is set a value.

[0.8.7] - 2022-05-18

  • [iOS/macOS] fix: Use RTCYUVHelper instead of external libyuv library (#954).
  • [iOS/macOS] Flutter 3.0 crash fixes, setStreamHandler on main thread (#953)
  • [Android] Use mavenCentral() instead of jcenter() (#952)
  • [Windows] Use uint8_t* instead of string in DataChannel::Send method, fix binary send bug.
  • [Android] fix: "Reply already submitted" error and setVolume() not working on remote streams.

[0.8.6] - 2022-05-08

  • [Web/Android/iOS/macOS] Support null tracks in replaceTrack/setTrack.
  • [macOS] Remove absolute path from resolved spec to make checksum stable.
  • [Android] Android 12 bluetooth permissions.
  • [Dart] fix wrong id type for data-channel.
  • [Android] Release i420 Buffer in FrameCapturer.

[0.8.5] - 2022-04-01

  • [Dart] Expose RTCDataChannel.id (#898)
  • [Android] Enable H264 high profile for SimulcastVideoEncoderFactoryWrapper (#890)

[0.8.4] - 2022-03-28

  • [Android] Fix simulcast factory not sending back EncoderInfo (#891)
  • [Android] fix: correct misspell in method screenRequestPermissions (#876)

[0.8.3] - 2022-03-01

  • [Android/iOS] Update android/ios webrtc native sdk versions.
  • [Windows] Feature of selecting i/o audio devices by passing sourceId and/or deviceId constraints (#851).

[0.8.2] - 2022-02-08

  • [Android/iOS/macOS/Web] Add restartIce.

[0.8.1] - 2021-12-29

  • [Android/iOS] Bump webrtc-sdk version to 93.4577.01.

[0.8.0] - 2021-12-05

  • [Dart] Refactor: Use webrtc interface. (#777)
  • [iOS] Fix crashes for FlutterRPScreenRecorder stop.
  • [Web] Don't stop tracks when disposing MediaStream (#760)
  • [Windows] Add the necessary parameters for onRemoveTrack (#763)
  • [Example] Properly start foreground service in example (#764)
  • [Android] Fix crash for Android, close #757 and #734.
  • [Dart] Fix typo in deprecated annotations.
  • [iOS] Fix IOS captureFrame and add support for remote stream captureFrame (#778)
  • [Windows] Fix parsing stun configuration (#789)
  • [Windows] Fix mute (#792)
  • [iOS/Android/Windows] New video constraints syntax (#790)

[0.7.1] - 2021-11-04

  • [iOS/macOS] Update framework.
  • [Android] Update framework.
  • [Windows] Implement mediaStreamTrackSetEnable (#756).
  • [iOS/macOS] Enable audio capture when acquiring track.
  • [Android] Call stopCaptureWithCompletionHandler instead (#748)
  • [Windows] Fix bug for windows.

[0.7.0+hotfix.2] - 2021-10-21

  • [iOS/macOS] Update .podspec for Darwin.

[0.7.0+hotfix.1] - 2021-10-21

  • [Android] Fix bug for createDataChannel.

[0.7.0] - 2021-10-20

  • [Android] Enable Android simulcast (#731)
  • [macOS] Use pre-compiled WebRTC for macOS. (#717)
  • [iOS/macOS] Fix the correct return value of createDataChannel under darwin.
  • [Windows] Fix using the wrong id to listen datachannel events.
  • [Dart] Fix(mediaStreamTrackSetEnable): remote track is unavaiable (#723).

[0.6.10+hotfix.1] - 2021-10-01

  • [Web] Fix compiler errors for web.

[0.6.10] - 2021-10-01

  • [iOS] Fix bug for RtpTransceiver.getCurrentDirection.
  • [Dart] Improve MethodChannel calling.

[0.6.9] - 2021-10-01

  • [iOS] Update WebRTC build (#707).
  • [Windows] Add Unified-Plan support for windows. (#688)
  • [iOS] Improve audio handling on iOS (#705)

[0.6.8] - 2021-09-27

  • [Android] Use ApplicationContext to verify permissions when activity is null.
  • [iOS] Add support for lightning microphone. (#693)
  • [Windows] Fix FlutterMediaStream::GetSources.
  • [Web] Fix Flutter 2.5.0 RTCVideoRendererWeb bug (#681)
  • [Web] Bug fix (#679)

[0.6.7] - 2021-09-08

  • [Android] upgrade webrtc sdk to m92.92.4515.
  • [Web] addTransceiver bug fix (#675)
  • [Web] Use low-level jsutil to call createOffer/createrAnswer to solve the issue on safari/firefox.
  • [Dart] Fix currentDirection/direction implementation confusion.

[0.6.6] - 2021.09.01

  • [Sponsorship] Thanks for LiveKit sponsorship.
  • [Web] Avoid removing all audio elements when stopping a single video renderer (#667)
  • [Web] Properly cleanup srcObject to avoid accidental dispose
  • [Dart] Removed warnings (#647)
  • [Web] Switch transferFromImageBitmap to be invoked using js.callMethod (#631)
  • [Web] Fix sending binary data over DataChannel in web implementation. (#634)
  • [Darwin] Nullable return for GetLocalDescription/GetRemoteDiscription
  • [Darwin] Fix incorrect argument name at RTCRtpSender (#600)

[0.6.5] - 2021.06.18

  • [Android] Falling back to the first available camera fix #580
  • [Android] Fix application exit null-pointer exception (#582)
  • [Dart] Add label getter to DataChannel Interface (#585)
  • [Dart] Fix exception raised at RTCPeerConnection.removeTrack and RTCRtpSender.setParameters (#588)
  • [Dart] Fix: null check (#595)
  • [Dart] Fix: null check for RTCRtpTransceiverNative.fromMap

[0.6.4] - 2021.05.02

  • [Android] Fix getting screen capture on Huawei only successful in the first time. (#523)
  • [Android] Add configuration "cryptoOptions" in parseRTCConfiguration().
  • [Dart] Change getLocalDescription,getRemoteDescription,RTCRtpSenderWeb.track returns to nullable.
  • [Dart] Fixed bug in RTCPeerConnectionWeb.removeTrack.
  • [Dart] Change MediaStreamTrack.captureFrame returns to ByteBuffer to compatible with web API.
  • [Dart] Do null safety check in onRemoveStream,onRemoveTrack and MediaStream.getTrackById.
  • [Android] Add reStartCamera method when the camera is preempted by other apps.
  • [Web] Refactored RTCVideoRendererWeb and RTCVideoViewWeb, using video and audio HTML tags to render audio and video streams separately.

[0.6.3] - 2021.04.03

  • [Dart] Change RTCRtpSender.track to nullable.
  • [Web] Fix RTCVideoView/Renderer pauses when changing child in IndexedStack.

[0.6.2] - 2021.04.02

  • [Dart] Use enumerateDevices instead of getSources.
  • [Android] Use flutter_background to fix screen capture example.

[0.6.1] - 2021.04.02

  • [Darwin] Fixed getting crash when call setLocalDescription multiple time.
  • [Dart] Get more pub scores.

[0.6.0] - 2021.04.01

  • [Sponsorship] Thanks for Stream sponsorship (#475)
  • [Android] Fixed a crash when switching cameras on Huawei devices.
  • [Windows] Correct signalingState & iceConnectionState event name on Windows. (#502)
  • [Dart] Clip behaviour. (#511)
  • [Dart] null-safety (@wer-mathurin Thanks for the hard work).
  • [Dart] Fix setMicrophoneMute (#466)
  • [Web] Fix pc.addTransceiver method, fix RTCRtpMediaType to string, fix (#437)
  • [Android] fix sdpSemantics issue (#478)

[0.6.0-nullsafety.0] - 2021.03.22

  • [Dart] null-safety (@wer-mathurin Thanks for the hard work).

[0.5.8] - 2021.01.26

  • [Web] Support selecting audio output.
  • [Web] Fix issue for getDisplayMedia with audio.
  • [Windows] Add Windows Support.
  • [macOS] Fix compile error for macos.
  • [Dart] Add FilterQuality to RTCVideoView.
  • [iOS/Android] Unified plan gettracks.
  • [iOS/Android] Bluetooth switching enabled when switching enableSpeakerphone value (if they are connected). #201 (#435)
  • [Android] Increase necessary Android min SDK version after add Unified-Plan API.

[0.5.7] - 2020.11.21

  • [Web] Fix events callback for peerconnection.

[0.5.6] - 2020.11.21

  • [Android/Darwin/Web] Add onResize event for RTCVideoRenderer.

[0.5.5] - 2020.11.21

  • [Android/Darwin] Fix Simulcast issue.

[0.5.4] - 2020.11.21

  • [Native/Web] Add videoWidth/videoHeight getter for RTCVideoRenderer.
  • [Web] Add optional parameter track to call getStats.

[0.5.3] - 2020.11.21

  • Fix bug.

[0.5.2] - 2020.11.19

  • Improve web code

[0.5.1] - 2020.11.19

  • Improve unfied-plan API for web.
  • Add getTransceivers,getSenders, getReceivers methods.

[0.5.0+1] - 2020.11.18

  • Remove dart-webrtc and reuse the code in dart:html because the code generated by package:js cannot be run in dart2js.

[0.5.0] - 2020.11.15

  • [Web] Add Unified-Plan for Flutter Web.
  • [Web] Add video frame mirror support for web.
  • [Web] Support Simulcast for web.
  • [Web] Use dart-webrtc as flutter web plugin.
  • [Android/Darwin] Fix crash when unset streamIds in RtpTransceiverInit.
  • [Dart]Change the constraints of createOffer/createAnswer as optional.
  • [iOS]Fix adding track to stream igal committed (#413)

[0.4.1] - 2020.11.11

  • Add transceiver to onTrack events.
  • Remove unnecessary log printing.
  • Fixed a crash caused by using GetTransceivers under non-unified-plan, close #389.
  • FIX - Invalid type inference (#392)
  • [Web]Add onEnded and onMuted for Web (#387)
  • [Darwin]Fix PeerConnectionState for darwin.
  • [Darwin] Fix compilation warning under darwin.
  • [Android] Fixed 'Sender is null' issue when removing track. (#401)
  • [iOS] fix removeTrack methodChannel response, onTrack's stream and track not being registered in native.
  • [Darwin/Android] RtpSender setParameters functionality.

[0.4.0] - 2020.10.14

  • Support Unified-Plan for Android/iOS/macOS.
  • Add PeerConnectionState and add RTCTrackEvent..
  • [Android] Upgrade GoogleWebRTC@android to 1.0.32006.
  • [iOS] Upgrade GoogleWebRTC@ios to 1.1.31999.
  • Api standardization across implementation (#364), thanks @wer-mathurin.

[0.3.3] - 2020.09.14

  • Add RTCDTMFSender for mobile, web and macOS.
  • Improve RenegotiationNeededCallback.
  • Refactor RTCVideoView for web and solve the resize problem.
  • Reduce code size.

[0.3.2] - 2020.09.11

  • Reorganize the directory structure.
  • Replace class name navigator to MediaDevices.
  • Downgrade pedantic version to 1.9.0.

[0.3.1] - 2020.09.11

  • [Dart] Apply pedantic linter and more rigorous analysis options.

[0.3.0+1] - 2020.09.06

  • [Dart] FIX - missing null check onIceGatheringState (web)

[0.3.0] - 2020.09.05

  • [Dart] Improve RTCVideoView.
  • [Android] Refactors Android plugin alongside the embedding V2 migration.
  • [Dart] Fix .ownerTag not defined for web.
  • [Dart] Added label as read only property.
  • [macOS] Updated WebRTC framework to work with AppStoreConnect.
  • [Dart] Make 'constraints' argument optional.
  • [Dart] Make createOffer constraints optional.
  • [iOS/Android/Web] Adding createLocalMediaStream method to PeerConnectionFactory.
  • [Web] Fixing multiple video renderers on the same HTML page for Flutter Web.
  • [iOS] Add peerConnectionId to data channel EventChannel.
  • [Android] Add library module ProGuard configuration file.
  • [iOS] Fix typo in render size change check condition
  • [README] Add missed Android usage hint.

[0.2.8] - 2020.04.22

  • [macOS/iOS] Fix typo in render size change check condition.
  • [macOS] Fix hot restart videoCapturer crash.
  • [Android] Fix Android crash when getUserVideo.

[0.2.7] - 2020.03.15

  • [macOS] Fix crash with H264 HW Encoder.
  • [Web] Add addTransceiver API.
  • [Android] Removed duplicate method that was causing compilation error.
  • [iOS] Use MrAlek Libyuv pod fixing incompatibility with FirebaseFirestore.
  • [iOS] Upgrade GoogleWebRTC dependency to 1.1.29400.

[0.2.6] - 2020.02.03

  • Fixed the interruption of the Bluetooth headset that was playing music after the plugin started.

[0.2.4] - 2020.02.03

  • Fixed bug.

[0.2.3] - 2020.02.03

  • Fixed bug for enableSpeakerphone (Android/iOS).
  • Fix RtcVideoView not rebuild when setState called and renderer is changed.
  • Fix Android frame orientation.

[0.2.2] - 2019.12.13

  • Removed the soft link of WebRTC.framework to fix compile errors of macos version when third-party flutter app depends on plugins

[0.2.1] - 2019.12.12

  • Code format.
  • Remove unused files.

[0.2.0] - 2019.12.12

  • Add support for macOS (channel dev).
  • Add support for Flutter Web (channel dev).
  • Add hasTorch support for Android (Camera2 API) and iOS.
  • Fix(PeerConnections) split dispose and close
  • Add microphone mute support for Android/iOS.
  • Add enable speakerphone support for Android/iOS.
  • Fix 'createIceServer' method Invalid value error (Android).
  • Store SignalingState/IceGatheringState/IceConnectionState in RTCPeerConnection.
  • Fixed rendering issues caused by remote MediaStream using the same msid/label when using multiple PeerConntions.

[0.1.7] - 2019.05.16

  • Add RTCDataChannelMessage for data channel and remove base64 type.
  • Add streaming API for datachannel messages and state changes.
  • Remove cloudwebrtc prefix in the plugin method/event channel name.
  • Other bug fixes.

[0.1.6] - 2019.03.31

  • Add getConfiguration/setConfiguration methods for Peerconnection.
  • Add object fit for RTCVideoView.

[0.1.5] - 2019.03.27

  • Remove unnecessary parameter for getLocalDescription method.

[0.1.4] - 2019.03.26

  • switchCamera method now returns future with isFrontCamera as result
  • Fix camera stuck in rare cases
  • Add getLocalDescription/getRemoteDescription methods

[0.1.3] - 2019.03.25

  • Add horizontal flip (mirror) function for RTCVideoView.
  • Fixed ScreenCapture preview aspect ratio for Android.

[0.1.2] - 2019.03.24

  • Fix compilation failure caused by invalid code.

[0.1.1] - 2019.03.24

  • Migrated to AndroidX using Refactoring from Andoid Studio
  • Fix mediaStreamTrackSetEnable not working.
  • Fix iOS can't render video when resolution changes.
  • Some code style changes.

[0.1.0] - 2019.01.21

  • Fix camera switch issues.
  • Support data channel, please use the latest demo to test.
  • Support screen sharing, but the work is not perfect, there is a problem with the local preview.

[0.0.3] - 2018.12.20

  • Update WebRTC to 1.0.25821.
  • Implemented MediaStreamTrack.setVolume().
  • Add public getter for texture id.
  • Fixed getUserMedia does not work for capturing audio only.

[0.0.2] - 2018.11.04

  • Add 'enabled' method for MediaStreamTrack.
  • Implement switch camera.
  • Add arm64-v8a and x86_64 architecture support for android.

[0.0.1] - 2018.05.30

  • Initial release.

Installing

export PUB_HOSTED_URL=https://pub.mirror.p-hatan.com
flutter pub add flutter_webrtc
pubspec.yaml
name: flutter_webrtc
description: Flutter WebRTC plugin for iOS/Android/Desktop/Web, based on GoogleWebRTC.
version: 1.6.3
homepage: https://github.com/cloudwebrtc/flutter-webrtc
environment:
  sdk: ">=3.3.0 <4.0.0"
  flutter: ">=1.22.0"

dependencies:
  collection: ^1.17.0
  dart_webrtc: ^1.8.0
  flutter:
    sdk: flutter
  logger: ^2.0.2+1
  path_provider: ^2.0.2
  web: ^1.0.0
  webrtc_interface: ^1.5.1

dev_dependencies:
  flutter_test:
    sdk: flutter
  import_sorter: ^4.6.0
  lints: ^4.0.0
  pedantic: ^1.11.1
  test: any

flutter:
  plugin:
    platforms:
      android:
        package: com.cloudwebrtc.webrtc
        pluginClass: FlutterWebRTCPlugin
      ios:
        pluginClass: FlutterWebRTCPlugin
      macos:
        pluginClass: FlutterWebRTCPlugin
      windows:
        pluginClass: FlutterWebRTCPlugin
      linux:
        pluginClass: FlutterWebRTCPlugin
      elinux:
        pluginClass: FlutterWebRTCPlugin

Version history

VersionPublishedArchiveSHA-256
0.0.1On demandDownload87deae3a…e42497
0.0.2On demandDownloadef946e6f…60f842
0.0.3On demandDownloadc8a9b8df…51eb59
0.1.0On demandDownloadf344c8eb…c6ca85
0.1.1On demandDownload03db7340…54438a
0.1.2On demandDownloadc49a1ac0…eeb913
0.1.3On demandDownloadb177392b…d3eb57
0.1.4On demandDownload8554004c…371144
0.1.5On demandDownloadbdaa97ab…0758af
0.1.6On demandDownload3d9b2d4e…33f4a1
0.1.7On demandDownloade867ae42…bf6e26
0.2.0On demandDownload00ff4be3…5413b0
0.2.1On demandDownload000e6c1e…5d5f7d
0.2.2On demandDownloadcda19502…0e05de
0.2.3On demandDownloada08ebfcb…cd4288
0.2.4On demandDownload1f40c0c5…72400d
0.2.6On demandDownload5080eb73…a2d762
0.2.7On demandDownloadd5ee58f0…2d287a
0.2.8On demandDownload7f615c5b…d5be81
0.3.0On demandDownload771caaf1…62d785
0.3.0+1On demandDownload62817bc9…ca4e16
0.3.1On demandDownload669cc8f5…029402
0.3.2On demandDownload3017cc5b…46ea96
0.3.3On demandDownloadfa6fd4b3…2e8c7a
0.4.0On demandDownloadb81f1d93…b93263
0.4.1On demandDownloadc4578941…741529
0.5.0On demandDownloadf4883416…c382c6
0.5.0+1On demandDownloadcacf4b47…b5ada9
0.5.1On demandDownload02b78a2b…9e2c0f
0.5.2On demandDownloadd2e2e92f…174c48
0.5.3On demandDownloadaadf85cc…524448
0.5.5On demandDownload2147bd53…ed283a
0.5.6On demandDownloadc14ee01a…521324
0.5.7On demandDownload8773b35a…14f757
0.5.8On demandDownload7691e242…c6af92
0.5.9On demandDownload5004ac4e…115148
0.6.0-nullsafety.0On demandDownload8f042d03…38f749
0.6.0On demandDownload38885637…ad9e83
0.6.1On demandDownloadfd5371f7…459afb
0.6.2On demandDownload30b88639…339f1b
0.6.3On demandDownload5f1c7de5…8ac810
0.6.4On demandDownload4b91b640…57b9ae
0.6.5On demandDownloadf763d6df…72bb03
0.6.6On demandDownloadf1ab0d71…03200e
0.6.7On demandDownloadccc9420d…08dde4
0.6.8On demandDownload17a607bc…955931
0.6.9On demandDownload49c281f8…c0ce71
0.6.10On demandDownload3f327343…de13ff
0.6.10+hotfix.1On demandDownloadb93dbc31…10f525
0.7.0On demandDownload885b5654…971a1f
0.7.0+hotfix.1On demandDownload1964412a…8173ad
0.7.0+hotfix.2On demandDownloade9bbe366…2ffb74
0.7.1On demandDownloadc829778d…f0ed9c
0.8.0On demandDownloada66f693b…32e66b
0.8.1On demandDownload0e17b481…7d19eb
0.8.2On demandDownload006af8c0…3e03aa
0.8.3On demandDownloadc8d7776c…69c618
0.8.4On demandDownload733afa4e…17759c
0.8.5On demandDownload63154cb1…6efc95
0.8.6On demandDownloade9268b16…e4958e
0.8.7On demandDownloada5e0b8ba…635105
0.8.9On demandDownload2825b27b…1d1441
0.8.10On demandDownloadb70a5aab…424d45
0.8.11On demandDownload22879014…89e54c
0.8.12On demandDownload4d5a51a3…b76aa6
0.9.0On demandDownloadeb743d73…f436fa
0.9.1On demandDownload98171d1b…5b0fdc
0.9.2On demandDownloadc5fc44c5…1f6f25
0.9.3On demandDownloadc735b40e…6fa81a
0.9.4On demandDownload53ca0e06…e93d1a
0.9.5On demandDownloadad63b251…dcb642
0.9.6On demandDownload0d84dbff…12a3ca
0.9.7On demandDownload4ff7ed11…bf1997
0.9.8On demandDownloadb53081be…1e5d83
0.9.9On demandDownload77c28713…ca148a
0.9.9+hotfix.1On demandDownload7e1ba848…8bfc86
0.9.10On demandDownload9c58942a…fab0aa
0.9.11On demandDownload303438ce…6bb13c
0.9.12On demandDownload416f15bb…ee32f7
0.9.13On demandDownload111f2522…64aaf5
0.9.14On demandDownloade5a2b394…19eb36
0.9.15On demandDownload597d3423…8e202e
0.9.16On demandDownloada9f5e313…8782ee
0.9.17On demandDownload005b7b03…7e3b0d
0.9.18On demandDownloadd1d3f44e…d4b124
0.9.19On demandDownload6a465fd4…5b51b3
0.9.20On demandDownload77e73ab6…76f9a4
0.9.21On demandDownloade733cada…892244
0.9.22On demandDownload86500538…6383c0
0.9.23On demandDownload558d90e0…91818c
0.9.24On demandDownload4eacac1b…e6dc02
0.9.25On demandDownloadf8904369…1c9c76
0.9.26On demandDownloadd68be9b5…e460c4
0.9.27On demandDownloada6dcf0e0…bf071a
0.9.28On demandDownload958f5b0a…a5b262
0.9.29On demandDownload10885305…d7b8c4
0.9.29+hotfix.1On demandDownload25df2c05…66d3c1
0.9.30On demandDownload95dd0b83…f53924
0.9.30+hotfix.1On demandDownloada1bf442a…c7c30b
0.9.30+hotfix.2On demandDownload54d31a29…456324
0.9.31On demandDownload02625651…c50dc6
0.9.32On demandDownloadc2d244e4…ceadc0
0.9.33On demandDownloadc01334d8…996b5f
0.9.34On demandDownload4a319490…ea1642
0.9.35On demandDownload3a07f684…b00b36
0.9.36On demandDownloadf7e3ee08…36d1cd
0.9.37On demandDownload6a26a2ca…c4ad2d
0.9.38On demandDownloadee7c3c5e…a6736c
0.9.39On demandDownloadb795e79c…989bc9
0.9.40On demandDownload770c6f8b…2d5362
0.9.41On demandDownload1ca78ff3…981fc4
0.9.42On demandDownloadb5a3b439…59786a
0.9.42+hotfix.1On demandDownloadf952d207…e458e5
0.9.43On demandDownload3a9af7db…512ff9
0.9.44On demandDownload215a8a2f…e137cb
0.9.45On demandDownloadda6fb0f0…7d22d2
0.9.46On demandDownload8522e9f3…c6f352
0.9.47On demandDownload57721672…28c3fe
0.9.48-hotfix.1On demandDownload5cd77395…99afad
0.9.48On demandDownload8e0427be…08252f
0.9.48+hotfix.1On demandDownload2f17fb96…8688c8
0.10.0On demandDownload24395d6f…157be3
0.10.1On demandDownload67a28b29…655978
0.10.2On demandDownload80ee0de0…f000e1
0.10.3On demandDownload20eac288…8175d2
0.10.4On demandDownload63295f3a…a45bf6
0.10.5On demandDownload15650441…bfe9f3
0.10.6On demandDownload2852cd57…3f19f7
0.10.7On demandDownload1c61bc08…11cc5d
0.10.8On demandDownloadfd5f115a…e44d4a
0.11.0On demandDownload7e24d30b…78c76b
0.11.1On demandDownloada09adf01…6795f0
0.11.2On demandDownload0cbfe8f1…8d067c
0.11.3On demandDownload994abcb8…5a034e
0.11.4On demandDownload3f115def…9f56c6
0.11.5On demandDownloadd305793e…bae272
0.11.6On demandDownloadf46bd76c…bdde4c
0.11.6+hotfix.1On demandDownload67faa07c…538348
0.11.7On demandDownloadf6800cc2…2add9c
0.12.0On demandDownload3ecf8e75…ee896a
0.12.0+hotfix.1On demandDownloadcca76e00…a00fca
0.12.1On demandDownload1b20f4f5…86d1da
0.12.1+hotfix.1On demandDownload0b69ecab…c20d3f
0.12.2On demandDownloadfcaee6f2…833381
0.12.3On demandDownload48382174…cddbdc
0.12.4On demandDownload430859fb…b2523e
0.12.5On demandDownload0e138a0a…2f22ef
0.12.5+hotfix.1On demandDownload3efe9828…4db1df
0.12.5+hotfix.2On demandDownloade82ffd0d…237fb1
0.12.6On demandDownload188401cc…1d5712
0.12.7On demandDownload4c76069f…278f03
0.12.8On demandDownloade917067a…eb77e4
0.12.9On demandDownload572df3de…22e81a
0.12.10On demandDownload9c4ca34c…5faaab
0.12.11On demandDownload6ea3a86d…3811ce
0.12.12On demandDownload42a9b3f1…e462bc
0.12.12+hotfix.1On demandDownloadb832dc76…62e08b
0.13.0On demandDownload19ae9f06…1d795a
0.13.1On demandDownload4f0d6e24…525547
0.13.1+hotfix.1On demandDownload23af761b…8d1155
0.13.2On demandDownloadbdc224c4…357360
0.13.2+hotfix.1On demandDownloadf320252f…b8116f
0.14.0On demandDownloade84ca404…b1bb50
0.14.1On demandDownloaddd47ca10…7844e3
0.14.2On demandDownload792aa1e5…b51ad1
1.0.0On demandDownload69095ba3…f7a260
1.1.0On demandDownload945d0a38…4d1de2
1.2.0On demandDownload16ca9e30…294549
1.2.1On demandDownload71a38363…b03bf0
1.3.0On demandDownload0f86b518…ac898a
1.3.1On demandDownloadc549ea8f…5fa78b
1.4.0On demandDownload8b220dc0…555f92
1.4.1On demandDownloadc7b0a67c…beb948
1.5.0On demandDownloadd8c89028…968d28
1.5.1On demandDownloadc4e8db6e…dcf020
1.5.2On demandDownload0f89dee7…f4316e
1.6.0On demandDownloade997161d…ca98be
1.6.0+hotfix.1On demandDownload0cfcbde2…8184a9
1.6.1On demandDownloada2eb4a45…70b733
1.6.2On demandDownloadf2bacdef…3801ea
1.6.2+hotfix.1On demandDownload381e05c1…e6380c
1.6.2+hotfix.2On demandDownload32bff0d3…d2587a
1.6.2+hotfix.3On demandDownloadc1d3674f…360fb9
1.6.2+hotfix.4On demandDownloadebf5ceef…038c00
1.6.3Cached · Upstream SHA-256 matchedDownloadb98ef033…c1ecf9

Dependencies

collection "^1.17.0"

dart_webrtc "^1.8.0"

flutter { "sdk": "flutter" }

logger "^2.0.2+1"

path_provider "^2.0.2"

web "^1.0.0"

webrtc_interface "^1.5.1"