Флаттер WebRTC: Запись потока в файл со звуком

#android #flutter #dart #webrtc

Вопрос:

Я пытался записать поток WebRTC с помощью библиотеки flutter_webrtc-0.6.3. Запись видео работает отлично, но запись с указанным аудиоканалом (ВХОДНЫМ или выходным), похоже, приводит к сбою моего приложения. Интересно, что при создании сеанса с приемником(ами) приложение не вылетает, но выходной файл содержит видео только на время сеанса.

Код для начала записи

 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()

 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;
  }
 

Код для остановки записи

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

Функция mediaRepository.closeLocalStream()

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

выход доктора флаттера:

 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)