3

I've been trying to record WebRTC stream with the help of library flutter_webrtc-0.6.3. Recording video only works perfectly well, but recording with specified audio channel (either INPUT or OUTPUT) seems to crash my app. Interestingly, when creating a session with receiver(s) app doesn't crashes, but output file contains video only for the duration of session.

Code to start the recording

final localStream = await mediaRepository.createLocalStream();
await recorder.start(
        '/storage/emulated/0/Movies/${Uuid().v4().toString()}.mp4', 
        videoTrack: localStream.getVideoTracks().first, 
        audioChannel: RecorderAudioChannel.INPUT);

mediaRepository.createLocalStream() function

Future<MediaStream> createLocalStream() async {
    MediaStream? localStream = _localStream;
    if (localStream != null) {
      return localStream;
    }
    localStream = await navigator.mediaDevices.getUserMedia({
    'audio': true,
    'video': {
      'mandatory': {
        'minWidth': '640',
        'minHeight': '480',
        'minFrameRate': '30',
      },
      'facingMode': 'environment',
      'optional': [],
    }
  });
    _localStream = localStream;
    return localStream;
  }

Code to stop the recording

await recorder.stop();
await mediaRepository.closeLocalStream();

mediaRepository.closeLocalStream() function

Future<void> closeLocalStream() async {
    final localStream = _localStream;
    _localStream = null;
    await localStream?.dispose();
  }

flutter doctor output:

Doctor summary (to see all details, run flutter doctor -v):
[√] Flutter (Channel stable, 2.2.2, on Microsoft Windows [Version 10.0.18363.1440])
[√] Android toolchain - develop for Android devices (Android SDK version 30.0.3)
[√] Chrome - develop for the web
[!] Android Studio (not installed)
[√] IntelliJ IDEA Ultimate Edition (version 2021.1)
[√] Connected device (2 available)
tosemite
  • 31
  • 3

0 Answers0