WebRTC通话期间Android录音麦克风

Tan*_*ham 4 android record webrtc

我有一个调用use的应用程序WebRTC。但是在通话中,我需要录制麦克风。WebRTC有一个对象WebRTCAudioRecord可以录制音频,但音频文件太大(PCM_16bit)。我想记录但尺寸较小。我已经尝试过MediaRecorder,但由于WebRtc记录了该记录,并且MediaRecorder在通话时没有记录权限,因此无法使用。有人这样做吗,有什么想法可以帮助我吗?

Muh*_*man 5

Webrtc被认为是相对更好的音频视频预处理工具。

Webrtc本机开发包括完全优化的本机C和C ++类,以便保持音频和视频的出色**语音质量和可理解性**,这非常有趣。

定期访问参考链接:https : //github.com/jitsi/webrtc/tree/master/examples

但是,您只需要使用Android应用程序进行录音。

默认的Android音频记录格式:

ENCODING_PCM_16BIT是在Android上表示音频数据的格式。

访问参考链接:https : //developer.android.com/reference/android/media/AudioRecord?hl=zh-CN

至于大小的音频数据而言,它主要取决于采样率时间为您记录块和音频数据包。

对于40毫秒的时间->记录的数据= 640千字节

采样率= 8000或16000等

记录数据的大小与时间和采样率均成正比

但是Webrtc主要处理10ms音频数据以进行预处理,其中数据包大小减小到160 KB

我认为您的问题只是减少或最小化记录数据的大小。因此,您应该查看不同类型的语音编解码器,它们可以通过将声音质量保持在一定水平上,从而从根本上减少录制数据的大小。以下是一些著名的语音编解码器,例如:

  • OPUS

  • 斯佩克斯

  • G7.11(G系列语音编解码器)

访问参考链接:

** http://opus-codec.org/ ** https://www.speex.org/ ** https://www.voip-info.org/codecs/ **


Pra*_*tim 0

解决方案分为两部分:

  1. 从 webrtc 获取原始 PCM 音频帧
  2. 将它们以压缩大小保存到本地文件,以便稍后播放

对于第一部分,您必须通过调用的方法来附加SamplesReadyCallback创建时的内容。此回调将为您提供 webrtc 的 AudioRecord 从麦克风捕获的原始音频帧。audioDeviceManagersetSamplesReadyCallbackJavaAudioDeviceModule

对于第二部分,您必须对原始帧进行编码并写入文件。查看来自谷歌的示例,了解如何执行此操作 - https://android.googlesource.com/platform/frameworks/base/+/master/packages/SystemUI/src/com/android/systemui/screenrecord/ScreenInternalAudioRecorder.java# 234