我正在使用flutter-webrtc-plugin,想要录制本地和远程音频流。有什么方法可以让我从媒体流中获取音频缓冲区吗?我已经尝试在unified-plan分支中使用AudioFileRenderer。在MediaRecorderImpl.java的startRecording函数中,我提供了文件存储路径,例如" storage /emulated/0/Android/data",每次结束通话都会成功创建一个文件,但是录制的文件已经损坏,无法播放。终端没有错误。我使用的是flutter v1.22.6,并从0.5.8开始派生了flutter-webrtc。我将AudioFileRenderer文件添加到flutter-WebRTC0.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);
}
}
}如有任何帮助,我们不胜感激!谢谢!
发布于 2021-06-12 10:26:37
我也在寻找同样的解决方案,到目前为止还没有找到。
因此,我使用webview来处理实时通信部分(通信和记录),同时保持Firebase消息传递和EventSource/SSE (我没有使用socket)。
这并不是直接回答你的问题,只是提供替代的解决方案,这总比没有解决方案好,可能在未来当flutter RTC更新并支持仅语音录制时,我们可以更新我们开发的应用程序。
https://stackoverflow.com/questions/67833936
复制相似问题