WebRTC plugin for Flutter Mobile/Desktop/Web

Overview

Flutter-WebRTC

Financial Contributors on Open Collective pub package Gitter

WebRTC plugin for Flutter Mobile/Desktop/Web


Sponsored with 💖   by
Stream Chat
Enterprise Grade APIs for Feeds & Chat. Try the Flutter Chat tutorial 💬


Functionality

Feature Android iOS Web macOS Windows Linux Fuchsia
Audio/Video ✔️ ✔️ ✔️ ✔️ ✔️ [WIP]
Data Channel ✔️ ✔️ ✔️ ✔️ ✔️ [WIP]
Screen Capture ✔️ ✔️ ✔️
Unified-Plan ✔️ ✔️ ✔️ ✔️
Simulcast ✔️ ✔️ ✔️ ✔️
MediaRecorder ⚠️ ⚠️ ✔️

Usage

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

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.

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" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />

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 21 (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]

Comments
  • [version:0.6.10+hotfix.1] iOS error: 'WebRTC/WebRTC.h' file not found

    [version:0.6.10+hotfix.1] iOS error: 'WebRTC/WebRTC.h' file not found

    When i try to build release on ios (Product -> archive), the build fails with 'WebRTC/WebRTC.h' file not found error. When i downgrade the dependency to 0.6.7, it works without errors, but i need the changes in the latest version for improved iOS audio handling. Screen Shot 2021-10-04 at 4 15 20 AM

    version that fails: 0.6.10+hotfix.1 version that works: 0.6.7

    Oh and another thing that i noticed while running pod update is that flutter_webrtc.podspec still states s.version = '0.2.2' for almost all the versions, it gets confusing sometimes to check if xcode is using the right version dependency or not 😅

    opened by aki25 37
  • Screen Capture for Flutter Desktop

    Screen Capture for Flutter Desktop

    I added a desktop-specific capture interface, which uses the desktop unified interface for Windows/macOS/Linux.

    https://github.com/flutter-webrtc/webrtc-interface/blob/feat/desktop-cpaturer/lib/src/desktop_capturer.dart

    enum SourceType {
      kEntireScreen,
      kWindow,
    }
    
    class ThumbnailSize {
      ThumbnailSize(this.width, this.height);
      int width;
      int height;
    }
    
    abstract class DesktopCapturerSource {
      /// The identifier of a window or screen that can be used as a
      /// chromeMediaSourceId constraint when calling
      String get id;
    
      /// A screen source will be named either Entire Screen or Screen <index>,
      /// while the name of a window source will match the window title.
      String get name;
    
      ///A thumbnail image of the source. ARGB
      ByteBuffer get thumbnail;
    
      /// specified in the options passed to desktopCapturer.getSources.
      /// The actual size depends on the scale of the screen or window.
      ThumbnailSize get thumbnailSize;
    
      /// The type of the source.
      SourceType get type;
    }
    
    abstract class DesktopCapturer {
      Future<List<DesktopCapturerSource>> getSources(
          {List<SourceType> types, ThumbnailSize thumbnailSize});
    }
    

    The enumeration is as follows

    var sources = await navigator.desktopCapturer.getSources(
            types: [kScreen, kWindow], 
            thumbnailSize:  ThumbnailSize(width: 320, heigth: 180)
            );
    
    DesktopCapturerSource selectedSource;
    sources.forEach((item) => {
         // print item.id, item.title
         // display thumbnail
         selectedSource = item;
    });
    
    

    get default display media.

    var mediaStream = await navigator.mediaDevices.getDisplayMedia({video: true});
    

    get display media by source id.

    var mediaStream = await navigator.mediaDevices.getDisplayMedia({
          video: {
                   deviceId: {
                         exact: selectedSource.id
                  }
                  mandatory: {
                        minWidth: 1280,
                        minHeight: 720,
                        frameRate: 30.0
                  }
          }
    })
    

    image

    opened by cloudwebrtc 25
  • Change video/audio source on Chrome/Firefox

    Change video/audio source on Chrome/Firefox

    Hi, I can switch between front and back cameras using the following function on mobile:

    stream.getVideoTracks()[0].switchCamera();

    Can it be possible to iterate through all available cameras on Chrome (web) using the same function or an additional function?

    Or can you add a function to get a list of available cameras (and also available audio input sources) and select one of them using an index?

    On Chrome WebRTC, one can select from available video and audio sources even during a conversation.

    But on Firefox, the user chooses the video/audio source before the conversation starts and it's not possible to switch to another source afterwards.

    I'm not sure how this difference can be addressed.

    PS: My app works fine on the latest versions of Chrome and Firefox but not on Safari. Do you have any plans to support Safari?

    opened by postacik 23
  • How Can I add camera effects - filters

    How Can I add camera effects - filters

    Hello,

    Did anyone know how can we add camera effects and transmit them to peer connection?

    For example Snapchat like filters or open GL filters

    Appreciate it if anyone able to give a solution or guiding to how to do it

    TIA

    🚀enhancement 😭help wanted wontfix 
    opened by magiccDev 21
  • [WIP]Support for Flutter Desktop

    [WIP]Support for Flutter Desktop

    Texture widget for the embedder seems to be coming soon: https://github.com/google/flutter-desktop-embedding/issues/107#issuecomment-444272681, let's port it to the desktop embedder and let the plugin extend to mac/linux/windows. 😄

    🚀enhancement work in progress 
    opened by cloudwebrtc 21
  • dead loop?

    dead loop?

    I/org.webrtc.Logging(28548): EglRenderer: Duration: 4006 ms. Frames received: 0. Dropped: 0. Rendered: 0. Render fps: .0. Average render time: NA. Average swapBuffer time: NA. I/org.webrtc.Logging(28548): EglRenderer: Duration: 4005 ms. Frames received: 0. Dropped: 0. Rendered: 0. Render fps: .0. Average render time: NA. Average swapBuffer time: NA. I/org.webrtc.Logging(28548): EglRenderer: Duration: 4004 ms. Frames received: 0. Dropped: 0. Rendered: 0. Render fps: .0. Average render time: NA. Average swapBuffer time: NA. I/org.webrtc.Logging(28548): EglRenderer: Duration: 4005 ms. Frames received: 0. Dropped: 0. Rendered: 0. Render fps: .0. Average render time: NA. Average swapBuffer time: NA. I/org.webrtc.Logging(28548): EglRenderer: Duration: 4006 ms. Frames received: 0. Dropped: 0. Rendered: 0. Render fps: .0. Average render time: NA. Average swapBuffer time: NA. I/org.webrtc.Logging(28548): EglRenderer: Duration: 4006 ms. Frames received: 0. Dropped: 0. Rendered: 0. Render fps: .0. Average render time: NA. Average swapBuffer time: NA. I/org.webrtc.Logging(28548): EglRenderer: Duration: 4004 ms. Frames received: 0. Dropped: 0. Rendered: 0. Render fps: .0. Average render time: NA. Average swapBuffer time: NA. I/org.webrtc.Logging(28548): EglRenderer: Duration: 4006 ms. Frames received: 0. Dropped: 0. Rendered: 0. Render fps: .0. Average render time: NA. Average swapBuffer time: NA. I/org.webrtc.Logging(28548): EglRenderer: Duration: 4006 ms. Frames received: 0. Dropped: 0. Rendered: 0. Render fps: .0. Average render time: NA. Average swapBuffer time: NA. I/org.webrtc.Logging(28548): EglRenderer: Duration: 4004 ms. Frames received: 0. Dropped: 0. Rendered: 0. Render fps: .0. Average render time: NA. Average swapBuffer time: NA. I/org.webrtc.Logging(28548): EglRenderer: Duration: 4003 ms. Frames received: 0. Dropped: 0. Rendered: 0. Render fps: .0. Average render time: NA. Average swapBuffer time: NA. I/org.webrtc.Logging(28548): EglRenderer: Duration: 4005 ms. Frames received: 0. Dropped: 0. Rendered: 0. Render fps: .0. Average render time: NA. Average swapBuffer time: NA. I/org.webrtc.Logging(28548): EglRenderer: Duration: 4004 ms. Frames received: 0. Dropped: 0. Rendered: 0. Render fps: .0. Average render time: NA. Average swapBuffer time: NA. I/org.webrtc.Logging(28548): EglRenderer: Duration: 4005 ms. Frames received: 0. Dropped: 0. Rendered: 0. Render fps: .0. Average render time: NA. Average swapBuffer time: NA. I/org.webrtc.Logging(28548): EglRenderer: Duration: 4006 ms. Frames received: 0. Dropped: 0. Rendered: 0. Render fps: .0. Average render time: NA. Average swapBuffer time: NA. I/org.webrtc.Logging(28548): EglRenderer: Duration: 4005 ms. Frames received: 0. Dropped: 0. Rendered: 0. Render fps: .0. Average render time: NA. Average swapBuffer time: NA. I/org.webrtc.Logging(28548): EglRenderer: Duration: 4004 ms. Frames received: 0. Dropped: 0. Rendered: 0. Render fps: .0. Average render time: NA. Average swapBuffer time: NA. I/org.webrtc.Logging(28548): EglRenderer: Duration: 4006 ms. Frames received: 0. Dropped: 0. Rendered: 0. Render fps: .0. Average render time: NA. Average swapBuffer time: NA. I/org.webrtc.Logging(28548): EglRenderer: Duration: 4004 ms. Frames received: 0. Dropped: 0. Rendered: 0. Render fps: .0. Average render time: NA. Average swapBuffer time: NA. I/org.webrtc.Logging(28548): EglRenderer: Duration: 4004 ms. Frames received: 0. Dropped: 0. Rendered: 0. Render fps: .0. Average render time: NA. Average swapBuffer time: NA. I/org.webrtc.Logging(28548): EglRenderer: Duration: 4006 ms. Frames received: 0. Dropped: 0. Rendered: 0. Render fps: .0. Average render time: NA. Average swapBuffer time: NA.

    ❔question wontfix 
    opened by cuijinfeng68 16
  • Stream Video on Galaxy s22 ultra black screen, audio working find. (SD 8 Gen 1)

    Stream Video on Galaxy s22 ultra black screen, audio working find. (SD 8 Gen 1)

    ** During stream audio working fine, but the video shows a black screen for S22 ultra, other device working normally. **

    Make a call from S22 ultra and the incoming call device picked up the black screen show. If make a call from other devices to s22 ultra video and audio work well as usual.

    I/ViewRootImpl@f81f857MainActivity: ViewPostIme pointer 0 I/ViewRootImpl@f81f857MainActivity: ViewPostIme pointer 1 I/DecorView(32251): notifyKeepScreenOnChanged: keepScreenOn=true I/ViewRootImpl@f81f857MainActivity: Relayout returned: old=(0,0,1080,2316) new=(0,0,1080,2316) req=(1080,2316)0 dur=4 res=0x1 s={true -5476376610960537264} ch=false fn=3 I/ViewRootImpl@f81f857MainActivity: updateBoundsLayer: t = android.view.SurfaceControl$Transaction@73115d3 sc = Surface(name=Bounds for - com.futureteen.chat/com.example.myapp.MainActivity@0)/@0x8bec510 frame = 3 I/org.webrtc.Logging(32251): NativeLibrary: Loading native library: jingle_peerconnection_so I/org.webrtc.Logging(32251): NativeLibrary: Loading library: jingle_peerconnection_so I/org.webrtc.Logging(32251): PeerConnectionFactory: PeerConnectionFactory was initialized without an injected Loggable. Any existing Loggable will be deleted. I/org.webrtc.Logging(32251): EglBase14Impl: SDK version: 31. isEGL14Supported: true I/org.webrtc.Logging(32251): EglBase14Impl: Using OpenGL ES version 2 I/org.webrtc.Logging(32251): WebRtcAudioManagerExternal: Sample rate is set to 48000 Hz I/org.webrtc.Logging(32251): WebRtcAudioManagerExternal: Sample rate is set to 48000 Hz I/org.webrtc.Logging(32251): JavaAudioDeviceModule: createAudioDeviceModule I/org.webrtc.Logging(32251): JavaAudioDeviceModule: HW NS will be used. I/org.webrtc.Logging(32251): JavaAudioDeviceModule: HW AEC will be used. I/org.webrtc.Logging(32251): WebRtcAudioEffectsExternal: ctor@[name=main, id=2] I/org.webrtc.Logging(32251): WebRtcAudioRecordExternal: ctor@[name=main, id=2] I/org.webrtc.Logging(32251): WebRtcAudioTrackExternal: ctor@[name=main, id=2] W/AudioCapabilities(32251): Unsupported mime audio/x-ape W/AudioCapabilities(32251): Unsupported mime audio/x-ima W/AudioCapabilities(32251): Unsupported mime audio/mpeg-L1 W/AudioCapabilities(32251): Unsupported mime audio/mpeg-L2 W/VideoCapabilities(32251): Unsupported mime video/wvc1 W/VideoCapabilities(32251): Unsupported mime video/x-ms-wmv W/VideoCapabilities(32251): Unsupported mime video/avc-wfd W/VideoCapabilities(32251): Unsupported mime video/avc-wfd W/VideoCapabilities(32251): Unsupported mime video/hevc-wfd W/VideoCapabilities(32251): Unsupported mime video/hevc-wfd W/VideoCapabilities(32251): Unsupported mime image/vnd.android.heic W/VideoCapabilities(32251): Unsupported mime image/vnd.android.heic I/org.webrtc.Logging(32251): WebRtcAudioRecordExternal: enableBuiltInAEC(true) I/org.webrtc.Logging(32251): WebRtcAudioEffectsExternal: setAEC(true) I/org.webrtc.Logging(32251): WebRtcAudioRecordExternal: enableBuiltInNS(true) I/org.webrtc.Logging(32251): WebRtcAudioEffectsExternal: setNS(true) I/org.webrtc.Logging(32251): PeerConnectionFactory: onNetworkThreadReady I/org.webrtc.Logging(32251): PeerConnectionFactory: onWorkerThreadReady I/org.webrtc.Logging(32251): PeerConnectionFactory: onSignalingThreadReady I/org.webrtc.Logging(32251): EglRenderer: Initializing EglRenderer I/org.webrtc.Logging(32251): EglRenderer: EglBase.create shared context I/org.webrtc.Logging(32251): EglBase14Impl: Using OpenGL ES version 2 I/org.webrtc.Logging(32251): EglRenderer: Initializing EglRenderer I/org.webrtc.Logging(32251): EglRenderer: EglBase.create shared context I/org.webrtc.Logging(32251): EglBase14Impl: Using OpenGL ES version 2 I/FlutterWebRTCPlugin(32251): getUserMedia(audio): mandatory: [], optional: [googNoiseSuppression: true, googEchoCancellation: true, echoCancellation: true, googEchoCancellation2: true, googDAEchoCancellation: true] I/FlutterWebRTCPlugin(32251): getUserMedia(video): ConstraintsMap{mMap={facingMode=user}} I/CameraManagerGlobal(32251): Connecting to camera service D/VendorTagDescriptor(32251): addVendorDescriptor: vendor tag id 14172875900359437128 added I/CameraManagerGlobal(32251): Camera 0 facing CAMERA_FACING_BACK state now CAMERA_STATE_CLOSED for client com.samsung.android.visionintelligence API Level 2 I/CameraManagerGlobal(32251): Camera 1 facing CAMERA_FACING_FRONT state now CAMERA_STATE_CLOSED for client com.futureteen.chat API Level 2 I/CameraManagerGlobal(32251): Camera 2 facing CAMERA_FACING_BACK state now CAMERA_STATE_CLOSED for client android.system API Level 2 D/FlutterWebRTCPlugin(32251): Creating video capturer using Camera2 API. I/CameraManagerGlobal(32251): Camera 20 facing CAMERA_FACING_BACK state now CAMERA_STATE_CLOSED for client com.sec.android.app.camera API Level 2 I/CameraManagerGlobal(32251): Camera 21 facing CAMERA_FACING_BACK state now CAMERA_STATE_CLOSED for client android.system API Level 2 I/CameraManagerGlobal(32251): Camera 23 facing CAMERA_FACING_BACK state now CAMERA_STATE_CLOSED for client android.system API Level 2 I/CameraManagerGlobal(32251): Camera 3 facing CAMERA_FACING_FRONT state now CAMERA_STATE_CLOSED for client android.system API Level 2 D/FlutterWebRTCPlugin(32251): Create front camera 1 succeeded I/CameraManagerGlobal(32251): Camera 4 facing CAMERA_FACING_FRONT state now CAMERA_STATE_CLOSED for client vendor.client.pid<1907> API Level 2 I/CameraManagerGlobal(32251): Camera 52 facing CAMERA_FACING_BACK state now CAMERA_STATE_CLOSED for client android.system API Level 2 I/CameraManagerGlobal(32251): Camera 54 facing CAMERA_FACING_BACK state now CAMERA_STATE_CLOSED for client android.system API Level 2 I/org.webrtc.Logging(32251): EglBase14Impl: Using OpenGL ES version 2 I/CameraManagerGlobal(32251): Camera 56 facing CAMERA_FACING_BACK state now CAMERA_STATE_CLOSED for client com.sec.android.app.camera API Level 2 I/CameraManagerGlobal(32251): Camera 58 facing CAMERA_FACING_BACK state now CAMERA_STATE_CLOSED for client android.system API Level 2 I/CameraManagerGlobal(32251): Camera 90 facing CAMERA_FACING_FRONT state now CAMERA_STATE_CLOSED for client android.system API Level 2 I/org.webrtc.Logging(32251): CameraCapturer: startCapture: 1280x720@30 D/FlutterWebRTCPlugin(32251): changeCaptureFormat: 1280x720@30 I/org.webrtc.Logging(32251): Camera2Session: Create new camera2 session on camera 1 I/org.webrtc.Logging(32251): Camera2Session: start D/FlutterWebRTCPlugin(32251): MediaStream id: 3d840e6c-64e7-4c1c-abd9-7e34575c00b3 I/flutter (32251): MediaStreamTrack:enableSpeakerphone true I/flutter (32251): MediaStreamTrack:enableSpeakerphone true I/org.webrtc.Logging(32251): Camera2Session: Available preview sizes: [3648x2736, 3648x2048, 3648x1640, 2736x2736, 2400x1080, 2320x1080, 1920x1440, 1920x1080, 1920x824, 1440x1080, 1280x720, 1088x1088, 960x720, 720x480, 640x480, 640x360, 352x288, 320x240, 176x144] I/org.webrtc.Logging(32251): Camera2Session: Available fps ranges: [[10.0:10.0], [7.0:15.0], [15.0:15.0], [24.0:24.0], [7.0:30.0], [30.0:30.0]] I/org.webrtc.Logging(32251): Camera2Session: Using capture format: 1280x720@[7.0:30.0] I/org.webrtc.Logging(32251): Camera2Session: Opening camera 1 D/FlutterWebRTCPlugin(32251): CameraEventsHandler.onCameraOpening: cameraName=1 D/RTCAudioManager(32251): ctor D/RTCBluetoothManager(32251): create@[name=main, id=2] D/RTCBluetoothManager(32251): ctor D/RTCAudioManager(32251): useSpeakerphone: auto D/RTCProximitySensor(32251): RTCProximitySensor@[name=main, id=2] D/RTCAudioManager(32251): defaultAudioDevice: SPEAKER_PHONE D/RTCAudioManager(32251): Android SDK: 31, Release: 12, Brand: samsung, Device: b0q, Id: SP1A.210812.016, Hardware: qcom, Manufacturer: samsung, Model: SM-S908E, Product: b0qxxx D/RTCAudioManager(32251): start D/RTCAudioManager(32251): AudioManager starts... W/AudioManager(32251): Use of stream types is deprecated for operations other than volume control W/AudioManager(32251): See the documentation of requestAudioFocus() for what to use instead with android.media.AudioAttributes to qualify your playback use case D/RTCAudioManager(32251): Audio focus request granted for VOICE_CALL streams D/RTCBluetoothManager(32251): start I/BluetoothAdapter(32251): BluetoothAdapter() : com.futureteen.chat D/RTCBluetoothManager(32251): BluetoothAdapter: enabled=false, state=OFF, name=Sokpheng's S22 Ultra, address=02:00:00:00:00:00 I/org.webrtc.Logging(32251): Camera2Session: Camera opened. D/BluetoothHeadset(32251): BTStateChangeCB is registed by 32251 @ com.futureteen.chat D/RTCBluetoothManager(32251): HEADSET profile state: DISCONNECTED D/RTCBluetoothManager(32251): Bluetooth proxy for headset profile has started D/RTCBluetoothManager(32251): start done: BT state=HEADSET_UNAVAILABLE D/RTCAudioManager(32251): --- updateAudioDeviceState: wired headset=false, BT state=HEADSET_UNAVAILABLE D/RTCAudioManager(32251): Device status: available=[], selected=NONE, user selected=NONE D/RTCAudioManager(32251): setAudioDeviceInternal(device=SPEAKER_PHONE) I/CameraManagerGlobal(32251): Camera 1 facing CAMERA_FACING_FRONT state now CAMERA_STATE_OPEN for client com.futureteen.chat API Level 2 D/RTCAudioManager(32251): New device status: available=[EARPIECE, SPEAKER_PHONE], selected=SPEAKER_PHONE D/FlutterWebRTCPlugin(32251): onAudioManagerDevicesChanged: [EARPIECE, SPEAKER_PHONE], selected: SPEAKER_PHONE D/RTCAudioManager(32251): --- updateAudioDeviceState done D/RTCAudioManager(32251): AudioManager started D/RTCAudioManager(32251): WiredHeadsetReceiver.onReceive@[name=main, id=2]: a=android.intent.action.HEADSET_PLUG, s=unplugged, m=mic, n=null, sb=true D/RTCAudioManager(32251): --- updateAudioDeviceState: wired headset=false, BT state=HEADSET_UNAVAILABLE D/RTCAudioManager(32251): Device status: available=[EARPIECE, SPEAKER_PHONE], selected=SPEAKER_PHONE, user selected=NONE D/RTCAudioManager(32251): --- updateAudioDeviceState done W/FlutterWebRTCPlugin(32251): FlutterRTCVideoRenderer.setVideoTrack, set video track to 9f56a813-5dab-4455-b6ff-9254b07e01a3 I/org.webrtc.Logging(32251): EglRenderer: Releasing. I/org.webrtc.Logging(32251): EglRenderer: eglBase detach and release. I/org.webrtc.Logging(32251): EglRenderer: Quitting render thread. I/org.webrtc.Logging(32251): EglRenderer: Releasing done. I/org.webrtc.Logging(32251): EglRenderer: Initializing EglRenderer I/org.webrtc.Logging(32251): EglRenderer: EglBase.create shared context I/org.webrtc.Logging(32251): EglBase14Impl: Using OpenGL ES version 2 I/org.webrtc.Logging(32251): Camera2Session: Camera capture session configured. I/org.webrtc.Logging(32251): Camera2Session: Using video stabilization. I/org.webrtc.Logging(32251): Camera2Session: Using continuous video auto-focus. I/org.webrtc.Logging(32251): Camera2Session: Camera device successfully started. I/org.webrtc.Logging(32251): CameraCapturer: Create session done. Switch state: IDLE I/org.webrtc.Logging(32251): SurfaceTextureHelper: Setting listener to org.webrtc.-$$Lambda$Camera2Session$CaptureSessionCallback$_XbqUL6ihfYRgME_EfDLZtLmkGA@83fe3b I/CameraManagerGlobal(32251): Camera 1 facing CAMERA_FACING_FRONT state now CAMERA_STATE_ACTIVE for client com.futureteen.chat API Level 2 I/BufferQueueProducer(32251): SurfaceTexture-1-32251-2 queueBuffer: queued for the first time. D/FlutterWebRTCPlugin(32251): CameraEventsHandler.onFirstFrameAvailable I/BufferQueueProducer(32251): SurfaceTexture-0-32251-0 queueBuffer: queued for the first time. I/org.webrtc.Logging(32251): CameraStatistics: Camera fps: 26. I/org.webrtc.Logging(32251): EglRenderer: Duration: 4004 ms. Frames received: 0. Dropped: 0. Rendered: 0. Render fps: .0. Average render time: NA. Average swapBuffer time: NA. I/org.webrtc.Logging(32251): EglRenderer: Duration: 4004 ms. Frames received: 107. Dropped: 0. Rendered: 107. Render fps: 26.7. Average render time: 1560 us. Average swapBuffer time: 774 us. I/org.webrtc.Logging(32251): CameraStatistics: Camera fps: 30. I/ViewRootImpl@f81f857MainActivity: ViewPostIme pointer 0 I/ViewRootImpl@f81f857MainActivity: ViewPostIme pointer 1 D/ThumbnailPlugin(32251): buildThumbnailFile( format:0, maxh:0, maxw:0, timeMs:0, quality:5 ) D/ThumbnailPlugin(32251): buildThumbnailData( format:0, maxh:0, maxw:0, timeMs:0, quality:5 ) V/MediaMetadataRetriever(32251): constructor V/MediaHTTPService(32251): MediaHTTPService(android.media.MediaHTTPService@844dab1): Cookies: null V/MediaMetadataRetriever(32251): setDataSource V/MediaHTTPService(32251): makeHTTPConnection: CookieManager created: java.net.CookieManager@5d93b96 V/MediaHTTPService(32251): makeHTTPConnection(android.media.MediaHTTPService@844dab1): cookieHandler: java.net.CookieManager@5d93b96 Cookies: null I/MediaHTTPConnection(32251): setReadTimeout and setConnectTimeout with 8000ms I/MediaHTTPConnection(32251): response code = 200 I/org.webrtc.Logging(32251): CameraStatistics: Camera fps: 30. D/MediaConstraintsUtils(32251): mandatory constraints are not a map D/MediaConstraintsUtils(32251): optional constraints are not an array I/org.webrtc.Logging(32251): NetworkMonitor: Start monitoring with native observer -5476376614449608560 D/ConnectivityManager(32251): StackLog: [android.net.ConnectivityManager.sendRequestForNetwork(ConnectivityManager.java:3937)] [android.net.ConnectivityManager.sendRequestForNetwork(ConnectivityManager.java:3979)] [android.net.ConnectivityManager.requestNetwork(ConnectivityManager.java:4117)] [android.net.ConnectivityManager.requestNetwork(ConnectivityManager.java:4095)] [org.webrtc.NetworkMonitorAutoDetect$ConnectivityManagerDelegate.requestMobileNetwork(NetworkMonitorAutoDetect.java:404)] [org.webrtc.NetworkMonitorAutoDetect.(NetworkMonitorAutoDetect.java:597)] [org.webrtc.NetworkMonitor$1.create(NetworkMonitor.java:50)] [org.webrtc.NetworkMonitor.createNetworkChangeDetector(NetworkMonitor.java:181)] [org.webrtc.NetworkMonitor.startMonitoring(NetworkMonitor.java:108)] [org.webrtc.NetworkMonitor.startMonitoring(NetworkMonitor.java:129)] D/ConnectivityManager(32251): StackLog: [android.net.ConnectivityManager.sendRequestForNetwork(ConnectivityManager.java:3937)] [android.net.ConnectivityManager.sendRequestForNetwork(ConnectivityManager.java:3979)] [android.net.ConnectivityManager.registerNetworkCallback(ConnectivityManager.java:4361)] [android.net.ConnectivityManager.registerNetworkCallback(ConnectivityManager.java:4331)] [org.webrtc.NetworkMonitorAutoDetect$ConnectivityManagerDelegate.registerNetworkCallback(NetworkMonitorAutoDetect.java:391)] [org.webrtc.NetworkMonitorAutoDetect.(NetworkMonitorAutoDetect.java:604)] [org.webrtc.NetworkMonitor$1.create(NetworkMonitor.java:50)] [org.webrtc.NetworkMonitor.createNetworkChangeDetector(NetworkMonitor.java:181)] [org.webrtc.NetworkMonitor.startMonitoring(NetworkMonitor.java:108)] [org.webrtc.NetworkMonitor.startMonitoring(NetworkMonitor.java:129)] D/FlutterWebRTCPlugin(32251): onIceGatheringChangeGATHERING D/FlutterWebRTCPlugin(32251): onIceCandidate D/FlutterWebRTCPlugin(32251): onIceCandidate D/FlutterWebRTCPlugin(32251): onIceCandidate D/FlutterWebRTCPlugin(32251): onIceCandidate D/FlutterWebRTCPlugin(32251): onIceCandidate D/FlutterWebRTCPlugin(32251): onIceCandidate I/org.webrtc.Logging(32251): NetworkMonitorAutoDetect: Network becomes available: 180 I/org.webrtc.Logging(32251): NetworkMonitorAutoDetect: capabilities changed: [ Transports: WIFI Capabilities: NOT_METERED&INTERNET&NOT_RESTRICTED&TRUSTED&NOT_VPN&VALIDATED&NOT_ROAMING&FOREGROUND&NOT_CONGESTED&NOT_SUSPENDED&NOT_VCN_MANAGED LinkUpBandwidth>=76233Kbps LinkDnBandwidth>=38894Kbps TransportInfo: <SSID: , BSSID: 02:00:00:00:00:00, MAC: 02:00:00:00:00:00, Security type: 2, Supplicant state: COMPLETED, Wi-Fi standard: 4, RSSI: -62, Link speed: 52Mbps, Tx Link speed: 52Mbps, Max Supported Tx Link speed: 300Mbps, Rx Link speed: 117Mbps, Max Supported Rx Link speed: 300Mbps, Frequency: 2452MHz, Net ID: -1, Metered hint: false, score: 60, CarrierMerged: false, SubscriptionId: -1, IsPrimary: -1> SignalStrength: -62 UnderlyingNetworks: Null] I/org.webrtc.Logging(32251): NetworkMonitorAutoDetect: link properties changed I/flutter (32251): singaling RTCSignalingState.RTCSignalingStateHaveLocalOffer D/FlutterWebRTCPlugin(32251): onIceCandidate D/FlutterWebRTCPlugin(32251): onIceCandidate D/FlutterWebRTCPlugin(32251): onIceCandidate D/FlutterWebRTCPlugin(32251): onIceCandidate V/MediaMetadataRetriever(32251): setDataSource return(0) V/MediaMetadataRetriever(32251): getFrameAtTime: time(0 us) option(3) colorFormat(4) metaOnly(0) V/MediaMetadataRetriever(32251): destructor V/MediaMetadataRetriever(32251): disconnect D/ThumbnailPlugin(32251): buildThumbnailFile( written:9479 ) D/FlutterWebRTCPlugin(32251): onIceCandidate I/org.webrtc.Logging(32251): WebRtcAudioTrackExternal: initPlayout(sampleRate=48000, channels=1, bufferSizeFactor=1.0) I/org.webrtc.Logging(32251): WebRtcAudioTrackExternal: byteBuffer.capacity: 960 I/org.webrtc.Logging(32251): WebRtcAudioTrackExternal: minBufferSizeInBytes: 9620 I/org.webrtc.Logging(32251): WebRtcAudioTrackExternal: createAudioTrackOnLollipopOrHigher I/org.webrtc.Logging(32251): WebRtcAudioTrackExternal: nativeOutputSampleRate: 48000 I/org.webrtc.Logging(32251): WebRtcAudioTrackExternal: AudioTrack: session ID: 13529, channels: 1, sample rate: 48000, max gain: 1.0 I/org.webrtc.Logging(32251): WebRtcAudioTrackExternal: AudioTrack: buffer size in frames: 4810 I/org.webrtc.Logging(32251): WebRtcAudioTrackExternal: AudioTrack: buffer capacity in frames: 4810 I/org.webrtc.Logging(32251): VolumeLogger: start@[name=worker_thread - 32454, id=154] I/org.webrtc.Logging(32251): VolumeLogger: audio mode is: MODE_NORMAL I/org.webrtc.Logging(32251): WebRtcAudioTrackExternal: startPlayout I/org.webrtc.Logging(32251): WebRtcAudioTrackExternal: AudioTrackThread@[name=AudioTrackJavaThread, id=170] I/org.webrtc.Logging(32251): WebRtcAudioTrackExternal: doAudioTrackStateCallback: 0 I/org.webrtc.Logging(32251): AndroidVideoDecoder: ctor name: c2.qti.avc.decoder type: H264 color format: 19 context: org.webrtc.EglBase14Impl$Context@6c18591 I/org.webrtc.Logging(32251): AndroidVideoDecoder: ctor name: c2.android.avc.decoder type: H264 color format: 19 context: org.webrtc.EglBase14Impl$Context@6c18591 D/FlutterWebRTCPlugin(32251): onAddTrack D/FlutterWebRTCPlugin(32251): onAddTrack D/FlutterWebRTCPlugin(32251): onConnectionChangeCONNECTING D/FlutterWebRTCPlugin(32251): onIceCandidate I/flutter (32251): singaling RTCSignalingState.RTCSignalingStateStable D/FlutterWebRTCPlugin(32251): onIceGatheringChangeCOMPLETE D/FlutterWebRTCPlugin(32251): onSelectedCandidatePairChanged I/flutter (32251): onIceConnectionState RTCIceConnectionState.RTCIceConnectionStateChecking W/FlutterWebRTCPlugin(32251): FlutterRTCVideoRenderer.setVideoTrack, set video track to 5c5648e7-f470-4365-84ba-923585071cdc I/org.webrtc.Logging(32251): EglRenderer: Releasing. I/flutter (32251): onConnectionState RTCPeerConnectionState.RTCPeerConnectionStateConnecting D/FlutterWebRTCPlugin(32251): onConnectionChangeCONNECTED I/org.webrtc.Logging(32251): EglRenderer: eglBase detach and release. I/org.webrtc.Logging(32251): EglRenderer: Quitting render thread. I/org.webrtc.Logging(32251): EglRenderer: Releasing done. I/org.webrtc.Logging(32251): EglRenderer: Initializing EglRenderer I/org.webrtc.Logging(32251): WebRtcAudioRecordExternal: initRecording(sampleRate=48000, channels=1) I/org.webrtc.Logging(32251): WebRtcAudioRecordExternal: byteBuffer.capacity: 960 I/org.webrtc.Logging(32251): EglRenderer: EglBase.create shared context I/org.webrtc.Logging(32251): EglBase14Impl: Using OpenGL ES version 2 I/org.webrtc.Logging(32251): HardwareVideoEncoder: initEncode: 1280 x 720. @ 300kbps. Fps: 60 Use surface mode: true I/CCodec (32251): state->set(ALLOCATING) I/CCodec (32251): allocate(c2.qti.avc.encoder) I/Codec2Client(32251): Available Codec2 services: "default" "default0" "software" I/CCodec (32251): setting up 'default' as default (vendor) store I/CCodec (32251): Created component [c2.qti.avc.encoder] I/CCodec (32251): state->set(ALLOCATED) D/CCodecConfig(32251): read media type: video/avc D/ReflectedParamUpdater(32251): ignored struct field coding.qp.values D/ReflectedParamUpdater(32251): extent() != 1 for single value type: vendor.qti-ext-enc-temporal-layer-bitrate.layerBitrates D/ReflectedParamUpdater(32251): ignored struct field coding.gop.values D/ReflectedParamUpdater(32251): extent() != 1 for single value type: output.buffers.pool-ids.values D/ReflectedParamUpdater(32251): extent() != 1 for single value type: vendor.qti-ext-enc-info-metadata-cvp.reserved D/CCodecConfig(32251): ignoring local param raw.color (0xc2001809) as it is already supported I/CCodecConfig(32251): query failed after returning 23 values (BAD_INDEX) D/CCodecConfig(32251): c2 config diff is Dict { D/CCodecConfig(32251): c2::u32 algo.bitrate-mode.value = 3 D/CCodecConfig(32251): c2::u32 algo.complexity.value = 100 D/CCodecConfig(32251): c2::i32 algo.priority.value = 0 D/CCodecConfig(32251): c2::float algo.rate.value = 30 D/CCodecConfig(32251): c2::u32 algo.secure-mode.value = 0 D/CCodecConfig(32251): c2::u32 coded.bitrate.value = 20000000 D/CCodecConfig(32251): c2::float coded.frame-rate.value = 30 D/CCodecConfig(32251): c2::u32 coded.pl.level = 0 D/CCodecConfig(32251): c2::u32 coded.pl.profile = 20484 D/CCodecConfig(32251): c2::u32 coded.vui.color.matrix = 255 D/CCodecConfig(32251): c2::u32 coded.vui.color.primaries = 0 D/CCodecConfig(32251): c2::u32 coded.vui.color.range = 0 D/CCodecConfig(32251): c2::u32 coded.vui.color.transfer = 255 D/CCodecConfig(32251): c2::u32 coding.intra-refresh.mode = 0 D/CCodecConfig(32251): c2::float coding.intra-refresh.period = 0 D/CCodecConfig(32251): c2::u32 coding.request-sync-frame.value = 0 D/CCodecConfig(32251): c2::i64 coding.sync-frame-interval.value = 1000000 D/CCodecConfig(32251): Buffer coding.temporal-layering = { D/CCodecConfig(32251): 00000000: 10 00 00 00 07 20 01 52 00 00 00 00 00 00 00 00 ..... .R........ D/CCodecConfig(32251): } D/CCodecConfig(32251): c2::u32 default.color.matrix = 0 D/CCodecConfig(32251): c2::u32 default.color.primaries = 0 D/CCodecConfig(32251): c2::u32 default.color.range = 0 D/CCodecConfig(32251): c2::u32 default.color.transfer = 0 D/CCodecConfig(32251): c2::u32 input.delay.value = 0 D/CCodecConfig(32251): string input.media-type.value = W/ColorUtils(32251): expected specified color aspects (0:0:255:255) I/org.webrtc.Logging(32251): HardwareVideoEncoder: Format: {color-format=2130708361, i-frame-interval=20, mime=video/avc, width=1280, bitrate-mode=2, bitrate=300000, frame-rate=60.0, height=720} I/org.webrtc.Logging(32251): WebRtcAudioRecordExternal: AudioRecord.getMinBufferSize: 3840 I/org.webrtc.Logging(32251): WebRtcAudioRecordExternal: bufferSizeInBytes: 7680 I/org.webrtc.Logging(32251): WebRtcAudioRecordExternal: createAudioRecordOnMOrHigher D/CodecSeeding(32251): Seed: codec c2.qti.avc.encoder, mediatype video/avc, overrideable 1 D/CodecProperties(32251): setTuningValue(vq-target-bpp,0) D/CodecProperties(32251): setTuningValue(vq-target-bpp-1080p,1.90) D/CodecProperties(32251): setTuningValue(vq-target-bpp-720p,2.25) D/CodecProperties(32251): setTuningValue(vq-target-bpp-540p,2.65) D/CodecProperties(32251): setTuningValue(vq-target-bpp-480p,3.00) D/CodecProperties(32251): setTuningValue(vq-target-bpp-320x240,0) D/CodecProperties(32251): setTuningValue(vq-target-qpmax,-1) D/CodecProperties(32251): setTuningValue(vq-target-qpmax-1080p,45) D/CodecProperties(32251): setTuningValue(vq-target-qpmax-720p,43) D/CodecProperties(32251): setTuningValue(vq-target-qpmax-540p,42) D/CodecProperties(32251): setTuningValue(vq-target-qpmax-480p,38) D/CodecProperties(32251): setTuningValue(vq-bitrate-phaseout,1.75) D/CodecProperties(32251): setTuningValue(vq-boost-missing-qp,0.20) D/CodecProperties(32251): setFeatureValue(intra-refresh,0) D/CodecProperties(32251): setFeatureValue(video-minimum-quality,0) D/CodecProperties(32251): setFeatureValue(_vq_eligible.device,1) D/CodecProperties(32251): setFeatureValue(_quality.target,1) D/CodecSeeding(32251): Seed: codec c2.qti.avc.encoder, mediatype video/avc, overrideable 0 D/VQApply (32251): minquality: applies only to VBR encoding D/MediaCodec(32251): shapeMediaFormat: deltas(0): AMessage(what = 0x00000000) = { D/MediaCodec(32251): } D/CCodec (32251): [c2.qti.avc.encoder] buffers are bound to CCodec for this session I/CCodec (32251): appPid(32251) width(1280) height(720) I/CCodec (32251): app-name: com.futureteen.chat I/CCodec (32251): Set content adaptive mode (0) I/CCodec (32251): VideoController::setValues() isSet [0] W/CCodec (32251): can't get ro.hardware.chipname I/CCodec (32251): set values for [taro] D/CCodecConfig(32251): no c2 equivalents for color-format D/CCodecConfig(32251): no c2 equivalents for flags D/CCodecConfig(32251): no c2 equivalents for encoder D/CCodecConfig(32251): c2 config diff is c2::u32 algo.bitrate-mode.value = 1 D/CCodecConfig(32251): c2::u32 coded.bitrate.value = 300000 D/CCodecConfig(32251): c2::float coded.frame-rate.value = 60 D/CCodecConfig(32251): c2::i64 coding.sync-frame-interval.value = 20000000 D/CCodecConfig(32251): c2::u32 raw.pixel-format.value = 34 D/CCodecConfig(32251): c2::u32 raw.size.height = 720 D/CCodecConfig(32251): c2::u32 raw.size.width = 1280 W/ColorUtils(32251): expected specified color aspects (0:0:255:255) W/Codec2Client(32251): query -- param skipped: index = 3254781982. D/CCodec (32251): setup formats input: AMessage(what = 0x00000000) = { D/CCodec (32251): int32_t android._color-format = 2130708361 D/CCodec (32251): Rect crop(0, 0, 1279, 719) D/CCodec (32251): int32_t color-standard = 130816 D/CCodec (32251): int32_t color-range = 0 D/CCodec (32251): int32_t color-transfer = 65791 D/CCodec (32251): int32_t width = 1280 D/CCodec (32251): int32_t android._dataspace = 12648448 D/CCodec (32251): int32_t feature-secure-playback = 0 D/CCodec (32251): int32_t frame-rate = 60 D/CCodec (32251): int32_t height = 720 D/CCodec (32251): int32_t intra-refresh-period = 0 D/CCodec (32251): string mime = "video/raw" D/CCodec (32251): int32_t prepend-sps-pps-to-idr-frames = 0 D/CCodec (32251): int32_t priority = 0 D/CCodec (32251): Buffer hdr-static-info = { D/CCodec (32251): 00000000: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ D/CCodec (32251): 00000010: 00 00 00 00 00 00 00 00 00 ......... D/CCodec (32251): } D/CCodec (32251): int64_t android._C2MemoryUsage = 4503599631631104 D/CCodec (32251): int32_t color-format = 2130708361 D/CCodec (32251): } D/CCodec (32251): setup formats output: AMessage(what = 0x00000000) = { D/CCodec (32251): int32_t bitrate = 300000 D/CCodec (32251): int32_t bitrate-mode = 2 D/CCodec (32251): Rect crop(0, 0, 1279, 719) D/CCodec (32251): int32_t width = 1280 D/CCodec (32251): int32_t color-standard = 130816 D/CCodec (32251): int32_t color-range = 0 D/CCodec (32251): int32_t color-transfer = 65791 D/CCodec (32251): int32_t feature-secure-playback = 0 D/CCodec (32251): int32_t frame-rate = 60 D/CCodec (32251): int32_t height = 720 D/CCodec (32251): int32_t intra-refresh-period = 0 D/CCodec (32251): int32_t max-bitrate = 300000 D/CCodec (32251): string mime = "video/avc" D/CCodec (32251): int32_t prepend-sps-pps-to-idr-frames = 0 D/CCodec (32251): int32_t priority = 0 D/CCodec (32251): int32_t profile = 8 D/CCodec (32251): } I/CCodecConfig(32251): query failed after returning 24 values (BAD_INDEX) I/org.webrtc.Logging(32251): EglBase14Impl: Using OpenGL ES version 2 D/CCodec (32251): input format changed to AMessage(what = 0x00000000) = { D/CCodec (32251): int32_t android._color-format = 2130708361 D/CCodec (32251): Rect crop(0, 0, 1279, 719) D/CCodec (32251): int32_t color-standard = 1 D/CCodec (32251): int32_t color-range = 2 D/CCodec (32251): int32_t color-transfer = 3 D/CCodec (32251): int32_t width = 1280 D/CCodec (32251): int32_t android._dataspace = 260 D/CCodec (32251): int32_t feature-secure-playback = 0 D/CCodec (32251): int32_t frame-rate = 60 D/CCodec (32251): int32_t height = 720 D/CCodec (32251): int32_t intra-refresh-period = 0 D/CCodec (32251): string mime = "video/raw" D/CCodec (32251): int32_t prepend-sps-pps-to-idr-frames = 0 D/CCodec (32251): int32_t priority = 0 D/CCodec (32251): Buffer hdr-static-info = { D/CCodec (32251): 00000000: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ D/CCodec (32251): 00000010: 00 00 00 00 00 00 00 00 00 ......... D/CCodec (32251): } D/CCodec (32251): int64_t android._C2MemoryUsage = 4503599631631104 D/CCodec (32251): int32_t color-format = 2130708361 D/CCodec (32251): } D/CCodec (32251): ISConfig not changed I/CCodec (32251): state->set(STARTING) W/Codec2Client(32251): query -- param skipped: index = 1342179345. W/Codec2Client(32251): query -- param skipped: index = 2415921170. W/Codec2Client(32251): query -- param skipped: index = 1610614798. D/CCodecBufferChannel(32251): [c2.qti.avc.encoder#634] Query input allocators returned 0 params => BAD_INDEX (6) D/CCodecBufferChannel(32251): [c2.qti.avc.encoder#634] Using basic input block pool with poolID 1 => got 1 - OK (0) D/CCodecBufferChannel(32251): [c2.qti.avc.encoder#634] Query output allocators returned 0 params => BAD_INDEX (6) I/CCodecBufferChannel(32251): [c2.qti.avc.encoder#634] Created output block pool with allocatorID 16 => poolID 989 - OK D/CCodecBufferChannel(32251): [c2.qti.avc.encoder#634] Configured output block pool ids 989 => OK I/CCodec (32251): state->set(RUNNING) I/MediaCodec(32251): setCodecState state(0), called in 6 I/org.webrtc.Logging(32251): WebRtcAudioEffectsExternal: enable(audioSession=13537) I/org.webrtc.Logging(32251): WebRtcAudioEffectsExternal: AcousticEchoCanceler: was enabled, enable: true, is now: enabled I/org.webrtc.Logging(32251): WebRtcAudioEffectsExternal: NoiseSuppressor: was disabled, enable: true, is now: enabled I/org.webrtc.Logging(32251): WebRtcAudioRecordExternal: AudioRecord: session ID: 13537, channels: 1, sample rate: 48000 I/org.webrtc.Logging(32251): WebRtcAudioRecordExternal: AudioRecord: buffer size in frames: 3840 I/org.webrtc.Logging(32251): WebRtcAudioRecordExternal: Number of active recording sessions: 0 I/org.webrtc.Logging(32251): WebRtcAudioRecordExternal: startRecording I/org.webrtc.Logging(32251): WebRtcAudioRecordExternal: scheduleLogRecordingConfigurationsTask I/Choreographer(32251): Skipped 47 frames! The application may be doing too much work on its main thread. I/org.webrtc.Logging(32251): WebRtcAudioRecordExternal: AudioRecordThread@[name=AudioRecordJavaThread, id=180] I/org.webrtc.Logging(32251): WebRtcAudioRecordExternal: doAudioRecordStateCallback: START I/flutter (32251): onConnectionState RTCPeerConnectionState.RTCPeerConnectionStateConnected I/flutter (32251): MediaStreamTrack:enableSpeakerphone true I/flutter (32251): onIceConnectionState RTCIceConnectionState.RTCIceConnectionStateConnected W/futureteen.cha(32251): Long monitor contention with owner Binder:32251_6 (631) at int android.media.AudioManager.updateAudioPortCache(java.util.ArrayList, java.util.ArrayList, java.util.ArrayList)(AudioManager.java:6525) waiters=0 in int android.media.AudioManager.resetAudioPortGeneration() for 727ms I/org.webrtc.Logging(32251): HardwareVideoEncoder: Releasing MediaCodec on output thread I/CCodec (32251): state->set(STOPPING) I/CCodec (32251): state->set(ALLOCATED) I/CCodec (32251): state->set(RELEASING) I/CCodec (32251): [c2.qti.avc.encoder] release(1) I/CCodec (32251): state->set(RELEASED) I/MediaCodec(32251): Codec shutdown complete I/hw-BpHwBinder(32251): onLastStrongRef automatically unlinking death recipients I/org.webrtc.Logging(32251): HardwareVideoEncoder: Release on output thread done E/org.webrtc.Logging(32251): HardwareVideoEncoder: MediaCodec is only tested with resolutions that are 16x16 aligned. E/org.webrtc.Logging(32251): HardwareVideoEncoder: MediaCodec is only tested with resolutions that are 16x16 aligned. I/org.webrtc.Logging(32251): WebRtcAudioRecordExternal: Number of active recording sessions: 1 I/org.webrtc.Logging(32251): WebRtcAudioRecordExternal: AudioRecordingConfigurations: I/org.webrtc.Logging(32251): WebRtcAudioRecordExternal: client audio source=VOICE_COMMUNICATION, client session id=13537 (13537) I/org.webrtc.Logging(32251): Device AudioFormat: channel count=1, channel index mask=0, channel mask=IN_MONO, encoding=PCM_16BIT, sample rate=48000 I/org.webrtc.Logging(32251): Client AudioFormat: channel count=1, channel index mask=0, channel mask=IN_MONO, encoding=PCM_16BIT, sample rate=48000 I/org.webrtc.Logging(32251): AudioDevice: type=TYPE_BUILTIN_MIC, id=25 I/org.webrtc.Logging(32251): WebRtcAudioRecordExternal: verifyAudioConfig: PASS I/org.webrtc.Logging(32251): EglRenderer: Duration: 4003 ms. Frames received: 119. Dropped: 0. Rendered: 119. Render fps: 29.7. Average render time: 1388 us. Average swapBuffer time: 766 us. I/org.webrtc.Logging(32251): CameraStatistics: Camera fps: 30. I/org.webrtc.Logging(32251): NetworkMonitorAutoDetect: Network becomes available: 200 I/org.webrtc.Logging(32251): NetworkMonitorAutoDetect: capabilities changed: [ Transports: CELLULAR Capabilities: SUPL&INTERNET&NOT_RESTRICTED&TRUSTED&NOT_VPN&NOT_ROAMING&FOREGROUND&NOT_CONGESTED&NOT_SUSPENDED&NOT_VCN_MANAGED LinkUpBandwidth>=1800Kbps LinkDnBandwidth>=4300Kbps Specifier: <TelephonyNetworkSpecifier [mSubId = 1]> UnderlyingNetworks: Null] I/org.webrtc.Logging(32251): NetworkMonitorAutoDetect: link properties changed I/org.webrtc.Logging(32251): CameraStatistics: Camera fps: 30. I/org.webrtc.Logging(32251): EglRenderer: Duration: 4006 ms. Frames received: 0. Dropped: 0. Rendered: 0. Render fps: .0. Average render time: NA. Average swapBuffer time: NA. I/org.webrtc.Logging(32251): NetworkMonitorAutoDetect: capabilities changed: [ Transports: CELLULAR Capabilities: SUPL&INTERNET&NOT_RESTRICTED&TRUSTED&NOT_VPN&NOT_ROAMING&FOREGROUND&NOT_CONGESTED&NOT_SUSPENDED&NOT_VCN_MANAGED LinkUpBandwidth>=1705Kbps LinkDnBandwidth>=4305Kbps Specifier: <TelephonyNetworkSpecifier [mSubId = 1]> UnderlyingNetworks: Null] I/org.webrtc.Logging(32251): EglRenderer: Duration: 4003 ms. Frames received: 120. Dropped: 0. Rendered: 120. Render fps: 30.0. Average render time: 1634 us. Average swapBuffer time: 972 us. I/org.webrtc.Logging(32251): CameraStatistics: Camera fps: 30. I/org.webrtc.Logging(32251): NetworkMonitorAutoDetect: capabilities changed: [ Transports: CELLULAR Capabilities: SUPL&INTERNET&NOT_RESTRICTED&TRUSTED&NOT_VPN&VALIDATED&NOT_ROAMING&FOREGROUND&NOT_CONGESTED&NOT_SUSPENDED&NOT_VCN_MANAGED LinkUpBandwidth>=1705Kbps LinkDnBandwidth>=4305Kbps Specifier: <TelephonyNetworkSpecifier [mSubId = 1]> UnderlyingNetworks: Null] I/org.webrtc.Logging(32251): CameraStatistics: Camera fps: 30. E/org.webrtc.Logging(32251): HardwareVideoEncoder: MediaCodec is only tested with resolutions that are 16x16 aligned. I/org.webrtc.Logging(32251): EglRenderer: Duration: 4006 ms. Frames received: 0. Dropped: 0. Rendered: 0. Render fps: .0. Average render time: NA. Average swapBuffer time: NA. E/org.webrtc.Logging(32251): HardwareVideoEncoder: MediaCodec is only tested with resolutions that are 16x16 aligned. I/org.webrtc.Logging(32251): EglRenderer: Duration: 4003 ms. Frames received: 120. Dropped: 0. Rendered: 120. Render fps: 30.0. Average render time: 1776 us. Average swapBuffer time: 1032 us. I/org.webrtc.Logging(32251): CameraStatistics: Camera fps: 30. I/org.webrtc.Logging(32251): CameraStatistics: Camera fps: 30. I/org.webrtc.Logging(32251): EglRenderer: Duration: 4004 ms. Frames received: 0. Dropped: 0. Rendered: 0. Render fps: .0. Average render time: NA. Average swapBuffer time: NA. I/org.webrtc.Logging(32251): NetworkMonitorAutoDetect: capabilities changed: [ Transports: CELLULAR Capabilities: SUPL&INTERNET&NOT_RESTRICTED&TRUSTED&NOT_VPN&VALIDATED&NOT_ROAMING&FOREGROUND&NOT_CONGESTED&NOT_SUSPENDED&NOT_VCN_MANAGED LinkUpBandwidth>=1800Kbps LinkDnBandwidth>=4300Kbps Specifier: <TelephonyNetworkSpecifier [mSubId = 1]> UnderlyingNetworks: Null] I/org.webrtc.Logging(32251): EglRenderer: Duration: 4003 ms. Frames received: 120. Dropped: 0. Rendered: 120. Render fps: 30.0. Average render time: 1718 us. Average swapBuffer time: 1022 us. I/org.webrtc.Logging(32251): CameraStatistics: Camera fps: 30. E/org.webrtc.Logging(32251): HardwareVideoEncoder: MediaCodec is only tested with resolutions that are 16x16 aligned. E/org.webrtc.Logging(32251): HardwareVideoEncoder: MediaCodec is only tested with resolutions that are 16x16 aligned. I/flutter (32251): onIceConnectionState RTCIceConnectionState.RTCIceConnectionStateCompleted I/org.webrtc.Logging(32251): CameraStatistics: Camera fps: 30. I/org.webrtc.Logging(32251): EglRenderer: Duration: 4003 ms. Frames received: 0. Dropped: 0. Rendered: 0. Render fps: .0. Average render time: NA. Average swapBuffer time: NA. I/org.webrtc.Logging(32251): EglRenderer: Duration: 4002 ms. Frames received: 120. Dropped: 0. Rendered: 120. Render fps: 30.0. Average render time: 1669 us. Average swapBuffer time: 997 us. I/org.webrtc.Logging(32251): CameraStatistics: Camera fps: 30. I/org.webrtc.Logging(32251): CameraStatistics: Camera fps: 30. I/org.webrtc.Logging(32251): EglRenderer: Duration: 4006 ms. Frames received: 0. Dropped: 0. Rendered: 0. Render fps: .0. Average render time: NA. Average swapBuffer time: NA. I/org.webrtc.Logging(32251): EglRenderer: Duration: 4003 ms. Frames received: 119. Dropped: 0. Rendered: 119. Render fps: 29.7. Average render time: 1681 us. Average swapBuffer time: 1029 us. I/org.webrtc.Logging(32251): CameraStatistics: Camera fps: 30. E/org.webrtc.Logging(32251): HardwareVideoEncoder: MediaCodec is only tested with resolutions that are 16x16 aligned. E/org.webrtc.Logging(32251): HardwareVideoEncoder: MediaCodec is only tested with resolutions that are 16x16 aligned. I/org.webrtc.Logging(32251): CameraStatistics: Camera fps: 30. I/org.webrtc.Logging(32251): EglRenderer: Duration: 4006 ms. Frames received: 0. Dropped: 0. Rendered: 0. Render fps: .0. Average render time: NA. Average swapBuffer time: NA. I/org.webrtc.Logging(32251): NetworkMonitorAutoDetect: capabilities changed: [ Transports: CELLULAR Capabilities: SUPL&INTERNET&NOT_RESTRICTED&TRUSTED&NOT_VPN&VALIDATED&NOT_ROAMING&FOREGROUND&NOT_CONGESTED&NOT_SUSPENDED&NOT_VCN_MANAGED LinkUpBandwidth>=1705Kbps LinkDnBandwidth>=4305Kbps Specifier: <TelephonyNetworkSpecifier [mSubId = 1]> UnderlyingNetworks: Null] I/org.webrtc.Logging(32251): EglRenderer: Duration: 4006 ms. Frames received: 121. Dropped: 0. Rendered: 121. Render fps: 30.2. Average render time: 1647 us. Average swapBuffer time: 976 us. I/org.webrtc.Logging(32251): CameraStatistics: Camera fps: 31. I/org.webrtc.Logging(32251): CameraStatistics: Camera fps: 30. I/org.webrtc.Logging(32251): EglRenderer: Duration: 4006 ms. Frames received: 0. Dropped: 0. Rendered: 0. Render fps: .0. Average render time: NA. Average swapBuffer time: NA. I/org.webrtc.Logging(32251): EglRenderer: Duration: 4006 ms. Frames received: 120. Dropped: 0. Rendered: 120. Render fps: 30.0. Average render time: 1702 us. Average swapBuffer time: 1004 us. I/org.webrtc.Logging(32251): CameraStatistics: Camera fps: 31. I/org.webrtc.Logging(32251): VolumeLogger: VOICE_CALL stream volume: 8 (max=8) I/org.webrtc.Logging(32251): CameraStatistics: Camera fps: 30. I/org.webrtc.Logging(32251): EglRenderer: Duration: 4006 ms. Frames received: 0. Dropped: 0. Rendered: 0. Render fps: .0. Average render time: NA. Average swapBuffer time: NA. I/org.webrtc.Logging(32251): EglRenderer: Duration: 4006 ms. Frames received: 120. Dropped: 0. Rendered: 120. Render fps: 30.0. Average render time: 1707 us. Average swapBuffer time: 1025 us. I/org.webrtc.Logging(32251): CameraStatistics: Camera fps: 30. I/org.webrtc.Logging(32251): CameraStatistics: Camera fps: 30. I/org.webrtc.Logging(32251): EglRenderer: Duration: 4006 ms. Frames received: 0. Dropped: 0. Rendered: 0. Render fps: .0. Average render time: NA. Average swapBuffer time: NA. I/org.webrtc.Logging(32251): EglRenderer: Duration: 4012 ms. Frames received: 121. Dropped: 0. Rendered: 121. Render fps: 30.2. Average render time: 1566 us. Average swapBuffer time: 963 us. I/org.webrtc.Logging(32251): CameraStatistics: Camera fps: 30. I/org.webrtc.Logging(32251): CameraStatistics: Camera fps: 30. I/org.webrtc.Logging(32251): EglRenderer: Duration: 4003 ms. Frames received: 0. Dropped: 0. Rendered: 0. Render fps: .0. Average render time: NA. Average swapBuffer time: NA. I/org.webrtc.Logging(32251): EglRenderer: Duration: 4006 ms. Frames received: 120. Dropped: 0. Rendered: 120. Render fps: 30.0. Average render time: 1778 us. Average swapBuffer time: 1169 us. I/org.webrtc.Logging(32251): CameraStatistics: Camera fps: 30. I/org.webrtc.Logging(32251): CameraStatistics: Camera fps: 30. I/org.webrtc.Logging(32251): EglRenderer: Duration: 4006 ms. Frames received: 0. Dropped: 0. Rendered: 0. Render fps: .0. Average render time: NA. Average swapBuffer time: NA. I/org.webrtc.Logging(32251): EglRenderer: Duration: 4002 ms. Frames received: 120. Dropped: 0. Rendered: 120. Render fps: 30.0. Average render time: 1616 us. Average swapBuffer time: 989 us. I/org.webrtc.Logging(32251): CameraStatistics: Camera fps: 30. I/org.webrtc.Logging(32251): CameraStatistics: Camera fps: 30. I/org.webrtc.Logging(32251): EglRenderer: Duration: 4008 ms. Frames received: 0. Dropped: 0. Rendered: 0. Render fps: .0. Average render time: NA. Average swapBuffer time: NA. I/org.webrtc.Logging(32251): EglRenderer: Duration: 4003 ms. Frames received: 120. Dropped: 0. Rendered: 120. Render fps: 30.0. Average render time: 1737 us. Average swapBuffer time: 1071 us. I/org.webrtc.Logging(32251): CameraStatistics: Camera fps: 30. I/org.webrtc.Logging(32251): CameraStatistics: Camera fps: 30. I/org.webrtc.Logging(32251): EglRenderer: Duration: 4005 ms. Frames received: 0. Dropped: 0. Rendered: 0. Render fps: .0. Average render time: NA. Average swapBuffer time: NA. I/org.webrtc.Logging(32251): EglRenderer: Duration: 4004 ms. Frames received: 121. Dropped: 0. Rendered: 120. Render fps: 30.0. Average render time: 1623 us. Average swapBuffer time: 974 us. I/org.webrtc.Logging(32251): CameraStatistics: Camera fps: 30. I/org.webrtc.Logging(32251): CameraStatistics: Camera fps: 30. I/org.webrtc.Logging(32251): EglRenderer: Duration: 4007 ms. Frames received: 0. Dropped: 0. Rendered: 0. Render fps: .0. Average render time: NA. Average swapBuffer time: NA. I/org.webrtc.Logging(32251): EglRenderer: Duration: 4002 ms. Frames received: 120. Dropped: 0. Rendered: 121. Render fps: 30.2. Average render time: 1712 us. Average swapBuffer time: 1040 us. I/org.webrtc.Logging(32251): CameraStatistics: Camera fps: 31. I/org.webrtc.Logging(32251): CameraStatistics: Camera fps: 30. I/org.webrtc.Logging(32251): NetworkMonitorAutoDetect: capabilities changed: [ Transports: CELLULAR Capabilities: SUPL&INTERNET&NOT_RESTRICTED&TRUSTED&NOT_VPN&VALIDATED&NOT_ROAMING&FOREGROUND&NOT_CONGESTED&NOT_SUSPENDED&NOT_VCN_MANAGED LinkUpBandwidth>=1800Kbps LinkDnBandwidth>=4300Kbps Specifier: <TelephonyNetworkSpecifier [mSubId = 1]> UnderlyingNetworks: Null] I/org.webrtc.Logging(32251): VolumeLogger: VOICE_CALL stream volume: 8 (max=8) I/org.webrtc.Logging(32251): EglRenderer: Duration: 4004 ms. Frames received: 0. Dropped: 0. Rendered: 0. Render fps: .0. Average render time: NA. Average swapBuffer time: NA. I/org.webrtc.Logging(32251): EglRenderer: Duration: 4002 ms. Frames received: 120. Dropped: 0. Rendered: 120. Render fps: 30.0. Average render time: 1772 us. Average swapBuffer time: 1060 us. I/org.webrtc.Logging(32251): CameraStatistics: Camera fps: 30. I/org.webrtc.Logging(32251): CameraStatistics: Camera fps: 30. I/org.webrtc.Logging(32251): EglRenderer: Duration: 4003 ms. Frames received: 0. Dropped: 0. Rendered: 0. Render fps: .0. Average render time: NA. Average swapBuffer time: NA. I/org.webrtc.Logging(32251): EglRenderer: Duration: 4002 ms. Frames received: 120. Dropped: 0. Rendered: 120. Render fps: 30.0. Average render time: 1799 us. Average swapBuffer time: 1085 us. I/org.webrtc.Logging(32251): CameraStatistics: Camera fps: 30. I/org.webrtc.Logging(32251): CameraStatistics: Camera fps: 30. I/org.webrtc.Logging(32251): EglRenderer: Duration: 4003 ms. Frames received: 0. Dropped: 0. Rendered: 0. Render fps: .0. Average render time: NA. Average swapBuffer time: NA. I/org.webrtc.Logging(32251): EglRenderer: Duration: 4004 ms. Frames received: 120. Dropped: 0. Rendered: 120. Render fps: 30.0. Average render time: 1575 us. Average swapBuffer time: 941 us. I/org.webrtc.Logging(32251): CameraStatistics: Camera fps: 30. I/org.webrtc.Logging(32251): CameraStatistics: Camera fps: 30. I/org.webrtc.Logging(32251): EglRenderer: Duration: 4007 ms. Frames received: 0. Dropped: 0. Rendered: 0. Render fps: .0. Average render time: NA. Average swapBuffer time: NA. I/org.webrtc.Logging(32251): EglRenderer: Duration: 4004 ms. Frames received: 120. Dropped: 0. Rendered: 120. Render fps: 30.0. Average render time: 1668 us. Average swapBuffer time: 1025 us. I/org.webrtc.Logging(32251): CameraStatistics: Camera fps: 30. I/org.webrtc.Logging(32251): CameraStatistics: Camera fps: 30. I/org.webrtc.Logging(32251): EglRenderer: Duration: 4004 ms. Frames received: 0. Dropped: 0. Rendered: 0. Render fps: .0. Average render time: NA. Average swapBuffer time: NA. I/org.webrtc.Logging(32251): EglRenderer: Duration: 4005 ms. Frames received: 120. Dropped: 0. Rendered: 120. Render fps: 30.0. Average render time: 1579 us. Average swapBuffer time: 951 us. I/org.webrtc.Logging(32251): CameraStatistics: Camera fps: 30. I/org.webrtc.Logging(32251): CameraStatistics: Camera fps: 30. I/org.webrtc.Logging(32251): EglRenderer: Duration: 4003 ms. Frames received: 0. Dropped: 0. Rendered: 0. Render fps: .0. Average render time: NA. Average swapBuffer time: NA. I/org.webrtc.Logging(32251): EglRenderer: Duration: 4003 ms. Frames received: 121. Dropped: 0. Rendered: 120. Render fps: 30.0. Average render time: 1650 us. Average swapBuffer time: 1017 us. I/org.webrtc.Logging(32251): CameraStatistics: Camera fps: 30. I/org.webrtc.Logging(32251): CameraStatistics: Camera fps: 30. I/org.webrtc.Logging(32251): EglRenderer: Duration: 4007 ms. Frames received: 0. Dropped: 0. Rendered: 0. Render fps: .0. Average render time: NA. Average swapBuffer time: NA. I/org.webrtc.Logging(32251): EglRenderer: Duration: 4011 ms. Frames received: 120. Dropped: 0. Rendered: 120. Render fps: 29.9. Average render time: 1633 us. Average swapBuffer time: 1023 us. I/org.webrtc.Logging(32251): CameraStatistics: Camera fps: 30. I/org.webrtc.Logging(32251): CameraStatistics: Camera fps: 30. I/org.webrtc.Logging(32251): EglRenderer: Duration: 4005 ms. Frames received: 0. Dropped: 0. Rendered: 0. Render fps: .0. Average render time: NA. Average swapBuffer time: NA. I/org.webrtc.Logging(32251): EglRenderer: Duration: 4004 ms. Frames received: 120. Dropped: 0. Rendered: 121. Render fps: 30.2. Average render time: 1591 us. Average swapBuffer time: 953 us. I/org.webrtc.Logging(32251): CameraStatistics: Camera fps: 30. I/org.webrtc.Logging(32251): VolumeLogger: VOICE_CALL stream volume: 8 (max=8) I/org.webrtc.Logging(32251): CameraStatistics: Camera fps: 31. I/org.webrtc.Logging(32251): EglRenderer: Duration: 4010 ms. Frames received: 0. Dropped: 0. Rendered: 0. Render fps: .0. Average render time: NA. Average swapBuffer time: NA. I/org.webrtc.Logging(32251): EglRenderer: Duration: 4004 ms. Frames received: 120. Dropped: 0. Rendered: 120. Render fps: 30.0. Average render time: 1740 us. Average swapBuffer time: 1035 us. I/org.webrtc.Logging(32251): CameraStatistics: Camera fps: 30. I/org.webrtc.Logging(32251): CameraStatistics: Camera fps: 30. I/org.webrtc.Logging(32251): EglRenderer: Duration: 4006 ms. Frames received: 0. Dropped: 0. Rendered: 0. Render fps: .0. Average render time: NA. Average swapBuffer time: NA. I/org.webrtc.Logging(32251): EglRenderer: Duration: 4005 ms. Frames received: 120. Dropped: 0. Rendered: 120. Render fps: 30.0. Average render time: 1663 us. Average swapBuffer time: 1037 us. I/org.webrtc.Logging(32251): CameraStatistics: Camera fps: 30. I/org.webrtc.Logging(32251): CameraStatistics: Camera fps: 30. I/org.webrtc.Logging(32251): EglRenderer: Duration: 4005 ms. Frames received: 0. Dropped: 0. Rendered: 0. Render fps: .0. Average render time: NA. Average swapBuffer time: NA. I/org.webrtc.Logging(32251): EglRenderer: Duration: 4003 ms. Frames received: 121. Dropped: 0. Rendered: 120. Render fps: 30.0. Average render time: 1629 us. Average swapBuffer time: 958 us. I/org.webrtc.Logging(32251): CameraStatistics: Camera fps: 30. I/org.webrtc.Logging(32251): CameraStatistics: Camera fps: 30. I/org.webrtc.Logging(32251): EglRenderer: Duration: 4003 ms. Frames received: 0. Dropped: 0. Rendered: 0. Render fps: .0. Average render time: NA. Average swapBuffer time: NA. I/org.webrtc.Logging(32251): EglRenderer: Duration: 4003 ms. Frames received: 120. Dropped: 0. Rendered: 121. Render fps: 30.2. Average render time: 1591 us. Average swapBuffer time: 948 us. I/org.webrtc.Logging(32251): CameraStatistics: Camera fps: 30. I/org.webrtc.Logging(32251): CameraStatistics: Camera fps: 30. I/org.webrtc.Logging(32251): EglRenderer: Duration: 4006 ms. Frames received: 0. Dropped: 0. Rendered: 0. Render fps: .0. Average render time: NA. Average swapBuffer time: NA. I/org.webrtc.Logging(32251): EglRenderer: Duration: 4002 ms. Frames received: 120. Dropped: 0. Rendered: 120. Render fps: 30.0. Average render time: 1722 us. Average swapBuffer time: 1093 us. I/org.webrtc.Logging(32251): CameraStatistics: Camera fps: 30. I/org.webrtc.Logging(32251): CameraStatistics: Camera fps: 30. I/org.webrtc.Logging(32251): EglRenderer: Duration: 4010 ms. Frames received: 0. Dropped: 0. Rendered: 0. Render fps: .0. Average render time: NA. Average swapBuffer time: NA. I/org.webrtc.Logging(32251): EglRenderer: Duration: 4003 ms. Frames received: 120. Dropped: 0. Rendered: 120. Render fps: 30.0. Average render time: 1715 us. Average swapBuffer time: 1068 us. I/org.webrtc.Logging(32251): CameraStatistics: Camera fps: 30. I/org.webrtc.Logging(32251): CameraStatistics: Camera fps: 30. I/org.webrtc.Logging(32251): EglRenderer: Duration: 4007 ms. Frames received: 0. Dropped: 0. Rendered: 0. Render fps: .0. Average render time: NA. Average swapBuffer time: NA. I/org.webrtc.Logging(32251): EglRenderer: Duration: 4003 ms. Frames received: 120. Dropped: 0. Rendered: 120. Render fps: 30.0. Average render time: 1778 us. Average swapBuffer time: 1054 us. I/org.webrtc.Logging(32251): CameraStatistics: Camera fps: 30. I/org.webrtc.Logging(32251): CameraStatistics: Camera fps: 30. I/org.webrtc.Logging(32251): VolumeLogger: VOICE_CALL stream volume: 8 (max=8) I/org.webrtc.Logging(32251): EglRenderer: Duration: 4006 ms. Frames received: 0. Dropped: 0. Rendered: 0. Render fps: .0. Average render time: NA. Average swapBuffer time: NA.

    Platform information

    • Flutter version: 2.8.1
    • Plugin version: ^0.8.3
    • OS: Android
    • OS version: Android 12
    opened by sokpheng 15
  • Get audio sources list and change localstream audio

    Get audio sources list and change localstream audio

    Hello,

    Is it possible to list all audio sources : headphones, speaker, bluetooth, ... available on the device ? An how can I change from one to another during a call ?

    Thank you, Luc

    wontfix 
    opened by LucMoreau33560 15
  • How to choose an audio / video codec?

    How to choose an audio / video codec?

    Need help, please tell me:

    1. Logs say that the default codec is H264. How to specify VP9 video codec and OPUS audio codec in configuration?
    2. And another question: how can you quickly switch the established connection to the "audio only" mode, when we do not send and do not receive the video track? And then re-enable video conferencing?
    🚀enhancement 🦔rostopira wontfix 
    opened by kostasoft 15
  • Fatal error in: .../task_queue_libevent.cc, line 178

    Fatal error in: .../task_queue_libevent.cc, line 178

    Describe the bug I think there are several problems.

    1. List of remote streams in PeerConnection contains duplicate of each stream;
    2. Remote streams in the same List do not disappearing after stopping stream;
    3. Looks like C++ lib crashing (check "To Peproduce" for case).

    To Reproduce If opposite user turn off and turn on stream (for example webcamera stream) for some amount of time I got the error;

    E/rtc (17935): #
    E/rtc (17935): # Fatal error in: ../../../../usr/local/google/home/sakal/code/webrtc-aar-release/src/rtc_base/task_queue_libevent.cc, line 178
    E/rtc (17935): # last system error: 24
    E/rtc (17935): # Check failed: pipe(fds) == 0
    E/rtc (17935): #
    F/libc (17935): Fatal signal 6 (SIGABRT), code -6 in tid 18053 (worker_thread -)
    

    Expected behavior I expect no crash... Please <3

    Platform information Linux 20.04

    • Flutter version:
    [✓] Flutter (Channel master, 1.23.0-8.0.pre.105, on Linux, locale en_US.UTF-8)
        • Flutter version 1.23.0-8.0.pre.105 at
          /home/firstname_lastname/snap/flutter/common/flutter
        • Framework revision f1013e6873 (6 weeks ago), 2020-10-02 09:50:33 +0800
        • Engine revision 0522ff22cc
        • Dart version 2.11.0 (build 2.11.0-181.0.dev)
    
     
    [✓] Android toolchain - develop for Android devices (Android SDK version 30.0.2)
        • Android SDK at /home/firstname_lastname/Android/Sdk
        • Platform android-30, build-tools 30.0.2
        • Java binary at: /usr/local/android-studio/jre/bin/java
        • Java version OpenJDK Runtime Environment (build
          1.8.0_242-release-1644-b3-6222593)
        • All Android licenses accepted.
    
    [✓] Chrome - develop for the web
        • Chrome at google-chrome
    
    [✓] Android Studio (version 4.0)
        • Android Studio at /usr/local/android-studio
        • Flutter plugin version 50.0.1
        • Dart plugin version 193.7547
        • Java version OpenJDK Runtime Environment (build
          1.8.0_242-release-1644-b3-6222593)
    
    [✓] VS Code (version 1.50.1)
        • VS Code at /usr/share/code
        • Flutter extension version 3.16.0
    
    [✓] Connected device (3 available)
        • Nexus 7 (mobile) • 08f4ceaf   • android-arm    • Android 6.0.1 (API 23)
        • Web Server (web) • web-server • web-javascript • Flutter Tools
        • Chrome (web)     • chrome     • web-javascript • Google Chrome
          86.0.4240.183
    
    • No issues found!
    
    • Plugin version: 0.4.0
    • OS: Android&iOS
    • OS version:
    opened by Blancduman 14
  • Android embedding v2

    Android embedding v2

    This migrates the Android side of the plugin to the new Embedding V2 API.

    • The V2 APIs make lifecycle a lot more explicit to plugins, thus should allow for improve code structure and predictable memory usage
    • There may have been a memory leak observed due to missing cleanup methods in the previous implementation (I've been testing with "leakcanary" and "Don't Keep Activities" both set to on
    • The plugin will now lazily initialize the audio manager and most of the RTC classes on the first method call invocation (important when in a multi-engine environment, e.g. when a App utilizes firebase_messaging & flutter-webrtc)
    • Small refactors and decouplings have been done

    Functionality has been tested locally on a few phones, but I'll appreciate if others can test as well.

    Note: My Android Studio installation probably formats the code different than other contributors. Could the project agree on a standard set of rules? Most of the official flutter code uses google-java-format (a plugin in Android Studio) with the Google rules. Maybe this project could use it, too.

    opened by ened 14
  • [windows]How to compile flutter-webrtc under windows

    [windows]How to compile flutter-webrtc under windows

    cmake windows error.

    -- Building for: Visual Studio 16 2019 -- Selecting Windows SDK version 10.0.19041.0 to target Windows 10.0.19045. -- The CXX compiler identification is MSVC 19.29.30146.0 -- Check for working CXX compiler: C:/Program Files (x86)/Microsoft Visual Studio/2019/Community/VC/Tools/MSVC/14.29.30133/bin/Hostx64/x64/cl.exe -- Check for working CXX compiler: C:/Program Files (x86)/Microsoft Visual Studio/2019/Community/VC/Tools/MSVC/14.29.30133/bin/Hostx64/x64/cl.exe -- works -- Detecting CXX compiler ABI info -- Detecting CXX compiler ABI info - done -- Detecting CXX compile features -- Detecting CXX compile features - done CMake Error at CMakeLists.txt:31 (apply_standard_settings): Unknown CMake command "apply_standard_settings".

    -- Configuring incomplete, errors occurred!

    How to compile flutter-webrtc under windows?

    opened by freeeyes 0
  • The method `setParameters` of the `RTCRtpSenderNative` doesn't work properly

    The method `setParameters` of the `RTCRtpSenderNative` doesn't work properly

    Describe the bug Some null parameters are ignored when trying to use them with the method setParameters, e.g. when trying to discard the limitations of the maxBitrate that was set before. To Reproduce My method for changing bandwidth:

      void setMaxBandwidth(int? bandwidth) {
        _peerConnection?.senders.then((senders) {
          senders.forEach((sender) async {
            var parameters = sender.parameters;
            var encodings = parameters.encodings;
    
            if (encodings == null || encodings.isEmpty) {
              encodings = List.of([RTCRtpEncoding()]);
            }
    
            encodings.forEach((encoding) {
              if (bandwidth == null || bandwidth == 0) {
                encoding.maxBitrate = null;
              } else {
                encoding.maxBitrate = bandwidth * 1000;
              }
            });
    
            parameters.encodings = encodings;
            sender.setParameters(parameters);
          });
        });
      }
    

    It works perfectly when using some numerical value. But it doesn't work if set a null value. It happens because the lib ignores null parameters. If remove checks on the null statement there https://github.com/flutter-webrtc/flutter-webrtc/blob/main/common/darwin/Classes/FlutterWebRTCPlugin.m#L1804-L1822

    and there https://github.com/flutter-webrtc/flutter-webrtc/blob/main/android/src/main/java/com/cloudwebrtc/webrtc/PeerConnectionObserver.java#L765-L776

    it starts to work.

    But I can't fix it for other platforms such as Linux and Windows. I found these checks there https://github.com/flutter-webrtc/flutter-webrtc/blob/main/common/cpp/src/flutter_peerconnection.cc#L586-L615 but the code gets stuck earlier there https://github.com/flutter-webrtc/flutter-webrtc/blob/main/common/cpp/src/flutter_webrtc.cc#L798 and it looks like the lib has an issue with parsing incoming parameters in the C code. I don't have experience with C language and can't fix it by myself.

    @cloudwebrtc could you please check it and make the required fixes?

    Expected behavior The method setParameters should accept null values for some parameters.

    Platform information

    • Flutter version:
    [✓] Flutter (Channel stable, 3.3.2, on macOS 13.1 22C65 darwin-x64, locale en-UA)
        • Flutter version 3.3.2 on channel stable at /Users/tereha/Programming/flutter
        • Upstream repository https://github.com/flutter/flutter
        • Framework revision e3c29ec00c (4 months ago), 2022-09-14 08:46:55 -0500
        • Engine revision a4ff2c53d8
        • Dart version 2.18.1
        • DevTools version 2.15.0
    
    [✓] Android toolchain - develop for Android devices (Android SDK version 33.0.0)
        • Android SDK at /Users/tereha/Library/Android/sdk/
        • Platform android-33, build-tools 33.0.0
        • ANDROID_HOME = /Users/tereha/Library/Android/sdk/
        • Java binary at: /Applications/Android Studio.app/Contents/jre/Contents/Home/bin/java
        • Java version OpenJDK Runtime Environment (build 11.0.13+0-b1751.21-8125866)
        • All Android licenses accepted.
    
    [✓] Xcode - develop for iOS and macOS (Xcode 14.2)
        • Xcode at /Applications/Xcode.app/Contents/Developer
        • Build 14C18
        • CocoaPods version 1.11.3
    
    [✓] Chrome - develop for the web
        • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome
    
    [✓] Android Studio (version 2021.3)
        • Android Studio at /Applications/Android Studio.app/Contents
        • Flutter plugin can be installed from:
          🔨 https://plugins.jetbrains.com/plugin/9212-flutter
        • Dart plugin can be installed from:
          🔨 https://plugins.jetbrains.com/plugin/6351-dart
        • Java version OpenJDK Runtime Environment (build 11.0.13+0-b1751.21-8125866)
    
    [✓] Android Studio (version 3.6)
        • Android Studio at /Applications/Android Studio (old).app/Contents
        • Flutter plugin can be installed from:
          🔨 https://plugins.jetbrains.com/plugin/9212-flutter
        • Dart plugin can be installed from:
          🔨 https://plugins.jetbrains.com/plugin/6351-dart
        • Java version OpenJDK Runtime Environment (build 1.8.0_212-release-1586-b4-5784211)
    
    [✓] VS Code (version 1.74.1)
        • VS Code at /Applications/Visual Studio Code.app/Contents
        • Flutter extension can be installed from:
          🔨 https://marketplace.visualstudio.com/items?itemName=Dart-Code.flutter
    
    [✓] Connected device (4 available)
        • POCO F1 (mobile)   • b2ef296f                  • android-arm64  • Android 13 (API 33)
        • iPhone XR (mobile) • 00008020-001A15920C61402E • ios            • iOS 16.2 20C65
        • macOS (desktop)    • macos                     • darwin-x64     • macOS 13.1 22C65 darwin-x64
        • Chrome (web)       • chrome                    • web-javascript • Google Chrome 108.0.5359.124
    
    [✓] HTTP Host Availability
        • All required HTTP hosts are available
    
    • No issues found!
    
    • Plugin version: 0.9.18
    • OS: Android / iOS / Linux / Windows
    • OS version:
      • Android 13
      • iOS 16.2
      • Linux Ubuntu 22.04
      • Windows 11 Pro
    opened by TatankaConCube 2
  • Unable to RTCPeerConnection::createAnswer

    Unable to RTCPeerConnection::createAnswer

    I get the issue Unable to RTCPeerConnection::createAnswer: peerConnectionCreateAnswer(): WEBRTC_CREATE_ANSWER_ERROR: PeerConnection cannot create an answer in a state other than have-remote-offer or have-local-pranswer. when I call for create answer like this:

    void createAnswer() async {
        RTCSessionDescription? description =
            await _peerConnection?.createAnswer({'offerToReceiveVideo': 1});
        await _peerConnection?.setLocalDescription(description!);
        var data = {
          'type': 'answer',
          'sdp': description?.sdp.toString(),
        };
        sendMessage(data);
      }
    

    can anyone help to solve this issue?

    opened by torretorich 2
  • Linux fatal error when building

    Linux fatal error when building

    Describe the bug

    When building on Linux I get this error:

    [  +96 ms] Building Linux application... (completed in 6.1s)
    [  +26 ms] (fluffychat:230187): Gtk-WARNING **: 20:33:18.576: Locale not supported by C library.
    [        ]      Using the fallback 'C' locale.
    [ +131 ms] #
    [        ] # Fatal error in: ../../media/engine/adm_helpers.cc, line 39
    [        ] # last system error: 0
    [        ] # Check failed: 0 == adm->Init() (0 vs. -1)
    [  +84 ms] # Failed to initialize the ADM.
    [   +2 ms] Error waiting for a debug connection: The log reader stopped unexpectedly, or never started.
    [   +1 ms] Error launching application on Linux.
    

    To Reproduce

    Build on Ubuntu 22.10 with Flutter 3.3.9

    Expected behavior

    Just builds

    Platform information

    • Flutter version: 3.3.9
    • Plugin version: 0.9.18
    • OS: Ubuntu
    • OS version: 22.10
    opened by krillefear 6
  • [ios] how to stop screen share from app

    [ios] how to stop screen share from app

    @cloudwebrtc Describe the bug when i stop from controller is working fine To Reproduce

    Expected behavior

    Platform information

    • Flutter version:
    • Plugin version:
    • OS:
    • ios
    • OS version:
    • 16.2
    opened by mohd-afid 0
Releases(0.9.17)
  • 0.9.17(Nov 28, 2022)

  • 0.9.16(Nov 14, 2022)

    [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.
    Source code(tar.gz)
    Source code(zip)
  • 0.9.15(Nov 13, 2022)

  • 0.9.13(Nov 12, 2022)

    [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).
    Source code(tar.gz)
    Source code(zip)
  • 0.9.12(Nov 2, 2022)

    [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.
    Source code(tar.gz)
    Source code(zip)
  • 0.9.11(Oct 16, 2022)

    [0.9.11] - 2022-10-16

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

    Source code(tar.gz)
    Source code(zip)
  • 0.9.9(Oct 12, 2022)

    [0.9.9] - 2022-10-12

    • [Darwin/Android/Windows] Support getStats for RtpSender/RtpReceiver (Migrate from Legacy to Standard Stats for getStats).
    • [Android] Dispose of streams and connections.
    • [Android] Support RTP transceiver direction type 4.
    • [Web] Update dart_webrtc dependency.
    Source code(tar.gz)
    Source code(zip)
  • 0.9.8(Sep 30, 2022)

    [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).
    Source code(tar.gz)
    Source code(zip)
  • 0.9.7(Sep 13, 2022)

  • 0.9.6(Sep 6, 2022)

    [0.9.6] - 2022-09-06

    • [Dart] The dc created by didOpenDataChannel needs to set the state to open.
    • [Dart] Added callback onFirstFrameRendered.
    Source code(tar.gz)
    Source code(zip)
  • 0.9.5(Aug 30, 2022)

    [0.9.5] - 2022-08-30

    • [Android] fix: Fix crashes when using multiple renderers.
    • [Android] fix bug with dispose of track cannot close video
    • [Andorid/iOS/macOS/Windows] Fix bug of missing events in data-channel.
    Source code(tar.gz)
    Source code(zip)
  • 0.9.4(Aug 22, 2022)

    [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.
    Source code(tar.gz)
    Source code(zip)
  • 0.9.3(Aug 15, 2022)

  • 0.9.2(Aug 9, 2022)

    [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.
    Source code(tar.gz)
    Source code(zip)
  • 0.9.0(Jul 27, 2022)

    [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)
    Source code(tar.gz)
    Source code(zip)
  • 0.8.12(Jul 15, 2022)

  • 0.8.11(Jul 11, 2022)

    [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.
    Source code(tar.gz)
    Source code(zip)
  • 0.8.10(Jun 29, 2022)

  • 0.8.9(Jun 8, 2022)

    [0.8.8] - 2022-06-08

    • [Android] Fixes DataChannel issue described in #974
    • [iOS] Fixes DataChannel issue described in #974
    • [Darwin/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.
    Source code(tar.gz)
    Source code(zip)
  • 0.8.7(May 18, 2022)

    [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.
    Source code(tar.gz)
    Source code(zip)
  • 0.8.6(May 8, 2022)

    [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.
    Source code(tar.gz)
    Source code(zip)
  • 0.8.5(Apr 1, 2022)

    [0.8.5] - 2022-04-01

    • [Dart] Expose RTCDataChannel.id (#898)
    • [Android] Enable H264 high profile for SimulcastVideoEncoderFactoryWrapper (#890)
    Source code(tar.gz)
    Source code(zip)
  • 0.8.4(Mar 28, 2022)

    [0.8.4] - 2022-03-28

    • [Android] Fix simulcast factory not sending back EncoderInfo (#891)
    • [Android] fix: correct misspell in method screenRequestPermissions (#876)
    Source code(tar.gz)
    Source code(zip)
  • 0.8.3(Mar 1, 2022)

    [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).
    Source code(tar.gz)
    Source code(zip)
  • 0.8.2(Feb 7, 2022)

  • 0.8.1(Dec 29, 2021)

  • 0.8.0(Dec 4, 2021)

    [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)
    Source code(tar.gz)
    Source code(zip)
  • 0.7.1(Nov 4, 2021)

    [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.
    Source code(tar.gz)
    Source code(zip)
  • 0.7.0+hotfix.2(Oct 22, 2021)

  • 0.7.0+hotfix.1(Oct 21, 2021)

Owner
Flutter WebRTC
About flutter's voip, webrtc related solutions.
Flutter WebRTC
Video call with WebRTC and Flutter

This is sandbox video call application using Flutter and WebRTC, you can call from browser to browser, phone to phone, browser to phone and opposite.

Dao Hong Vinh 21 Nov 9, 2022
Demo for flutter-webrtc

flutter-webrtc-demo Flutter WebRTC plugin Demo Online Demo: https://demo.cloudwebrtc.com:8086/ Usage git clone https://github.com/cloudwebrtc/flutter-

Flutter WebRTC 977 Dec 30, 2022
Sandbox video call application using Flutter and WebRTC

Video Call Flutter App ?? Description: This is sandbox video call application using Flutter and WebRTC, you can call from browser to browser, phone to

Dao Hong Vinh 21 Nov 9, 2022
Simple peer-to-peer with WebRTC for Dart. PeerJS port for Flutter.

PeerDart: Simple peer-to-peer with WebRTC PeerDart provides a complete, configurable, and easy-to-use peer-to-peer API built on top of WebRTC, support

Muhammed Kaplan 42 Jan 8, 2023
A simple audio room using WebRTC P2P mesh network.

P2P Audio Room A simple audio room using peer to peer technology with WebRTC mesh network. Download the app from here Here I have used:- flutter_webrt

Krishnendu Bera 9 Oct 28, 2022
Flutter plugin for use Video.js in flutter web

Flutter Video.js player Flutter plugin for use Video.js in flutter web Installation Add it to your package's pubspec.yaml file dependencies: video_j

null 15 Oct 17, 2022
Flutter (web-only at this moment) plugin for recording audio (using the microphone).

Microphone Flutter (web-only at this moment) plugin for recording audio (using the microphone). Getting started To learn more about the plugin and get

null 28 Sep 26, 2022
A Flutter audio plugin (Swift/Java) to play remote or local audio files on iOS / Android / MacOS and Web

AudioPlayer A Flutter audio plugin (Swift/Java) to play remote or local audio files on iOS / Android / MacOS and Web. Online demo Features Android / i

Erick Ghaumez 489 Dec 18, 2022
Spotube - A lightweight free Spotify desktop-client built using flutter

Spotube is a Flutter based lightweight spotify client. It utilizes the power of

Kingkor Roy Tirtho 2.3k Jan 7, 2023
Play simultaneously music/audio from assets/network/file directly from Flutter, compatible with android / ios / web / macos, displays notifications

?? assets_audio_player ?? Play music/audio stored in assets files (simultaneously) directly from Flutter (android / ios / web / macos). You can also u

Florent CHAMPIGNY 651 Dec 24, 2022
Apps For streaming audio via url (Android, iOS & Web ). Developed with Dart & Flutter ❤

Flutter Sleep App (Dicoding Submission : Learn to Make Flutter Apps for Beginners) Stream Great collection of high-definition sounds that can be mixed

Utrodus Said Al Baqi 13 Nov 29, 2022
Just_audio: a feature-rich audio player for Android, iOS, macOS and web

just_audio just_audio is a feature-rich audio player for Android, iOS, macOS and web. Mixing and matching audio plugins The flutter plugin ecosystem c

Ensar Yusuf Yılmaz 2 Jun 28, 2022
This Flutter plugin created to show how to use OpenCV and ZXing C++ libraries natively in Flutter with Dart FFI using the camera stream

OpenCV and ZXing C++ libraries natively in Flutter with Dart FFI using the camera stream

Khoren Markosyan 17 Oct 21, 2022
Flutter plugin that can support audio recording and level metering

flutter_audio_recorder English | 简体中文 Flutter Audio Record Plugin that supports Record Pause Resume Stop and provide access to audio level metering pr

RMBR ONE 108 Dec 13, 2022
Flutter plugin for sound. Audio recorder and player.

Flutter Sound user: your documentation is there The CHANGELOG file is here Overview Flutter Sound is a Flutter package allowing you to play and record

null 764 Jan 2, 2023
A flutter plugin to handle Android / iOS camera

?? Overview Flutter plugin to add Camera support inside your project. CamerAwesome include a lot of useful features like: ?? Live camera flip ( switch

Apparence.io 511 Jan 5, 2023
A Flutter plugin to use speech recognition on iOS & Android (Swift/Java)

speech_recognition A flutter plugin to use the speech recognition iOS10+ / Android 4.1+ Basic Example Sytody, speech to todo app Installation Depend o

Erick Ghaumez 331 Dec 19, 2022
A Flutter audio-plugin to playing and recording sounds

medcorder_audio Flutter record/play audio plugin. Developed for Evrone.com Funded by Medcorder Medcorder.com Getting Started For help getting started

Evrone 106 Oct 29, 2022
Playify is a Flutter plugin for play/pause/seek songs, fetching music metadata, and browsing music library.

Playify Playify is a Flutter plugin for play/pause/seek songs, fetching music metadata, and browsing music library. Playify was built using iOS's Medi

Ibrahim Berat Kaya 32 Dec 14, 2022