Как получить звуковые буферы из плагина flutter webrtc?

#flutter #audio #stream #webrtc #record

Вопрос:

Я использую плагин flutter-webrtc и хотел бы записывать как локальные, так и удаленные аудиопотоки. Есть ли у меня какой-нибудь способ получить звуковые буферы из медиапотоков? Я пробовал использовать аудиофайлерендерер в ветке единого плана. В функции начальной записи MediaRecorderImpl.java, Я указал путь к хранилищу файлов, например «хранилище/эмулировано/0/Android/данные», файл успешно создается каждый раз, когда я заканчиваю вызов, но файл записи поврежден, поэтому его невозможно воспроизвести. Никаких ошибок, исходящих от терминала, нет. Я использую flutter v1.22.6 и разветвил flutter-webrtc с версии 0.5.8. Я добавил файл аудиофайлера в flutter-webrtc 0.5.8, мой код выглядит следующим образом:

 public void startRecording(File file) throws Exception {
    recordFile = file;
    if (isRunning)
        return;
    isRunning = true;
    //noinspection ResultOfMethodCallIgnored
    file.getParentFile().mkdirs();
    if (videoTrack != null) {
      System.out.println("try123 1");
        videoFileRenderer = new VideoFileRenderer(
            file.getAbsolutePath(),
            EglUtils.getRootEglBaseContext(),
            audioInterceptor != null
        );
        videoTrack.addSink(videoFileRenderer);
        if (audioInterceptor != null)
            audioInterceptor.attachCallback(id, videoFileRenderer);
    } else {
        Log.e(TAG, "Video track is null");
        if (audioInterceptor != null) {
            //TODO(rostopira): audio only recording
            // throw new Exception("Audio-only recording not implemented yet");
     
            Log.d(TAG, "Try to use onWebrtcSamplesReady");
            audioFileRenderer = new AudioFileRenderer(file);
            audioInterceptor.attachCallback(id, audioFileRenderer);
        }
    }
}
 

Любая помощь будет признательна! Спасибо!

Ответ №1:

Я также ищу то же самое решение, но пока ничего не найдено.

Итак, я использую webview для части RTC (связь и запись), сохраняя при этом обмен сообщениями Firebase и источник событий/SSE (я не использую сокет) в Flutter.

Это не прямой ответ на ваш вопрос, просто предоставление альтернативного решения, это лучше, чем вообще не иметь решения, вероятно, в будущем, когда flutter RTC обновится и будет поддерживать только запись голоса, мы сможем обновить приложения, которые мы разрабатываем.

Комментарии:

1. Спасибо за предоставление альтернативного решения. Надеюсь, что flutterwebrtc скоро предоставит решение для записи только аудио!