WebRTC通话期间Android录音麦克风

时间:2018-07-20 11:39:27

标签: android webrtc record

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

1 个答案:

答案 0 :(得分:8)

对于音频视频

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

Webrtc本机开发包括完整的optimized native C and C++类,为了保持音频和视频的出色语音质量和可理解性,这很有趣。

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


问题出现状态; <​​/ p>

  

我想记录但尺寸较小。我已经尝试了MediaRecorder,但由于记录了WebRtc并且MediaRecorder在通话时没有记录权限,因此无法正常工作。


首先,要reduce or minimize记录数据的大小(音频字节),您应该查看不同类型的语音编解码器通过将sound quality保持在一个级别来记录数据的大小。要查看不同的voice codecs,以下是一些知名的语音编解码器,如下所示:

就音频数据的大小而言,它基本上取决于您录制块的采样率时间或音频数据包。

Supppose time = 40ms ---then---> Reocrded Data = 640 bytes (or 320 short)

Size of recorded data is **directly proportional** to both Time and Sample rate.

Sample Rate = 8000 or 16000 etc. (greater the sample rate, greater would be the size)

要查看更多详细信息,请访问:fundamentals of audio data representation。但是Webrtc主要处理10ms音频数据以进行预处理,其中将数据包大小减小到160 bytes


第二,如果您想一次使用多个AudioRecorder 实例,那么实际上是不可能的。由于WebRtc已经从麦克风录制,因此实际上MediaRecorder实例将不会执行任何功能,因为此答案描述了audio-record-multiple-audio-at-a-time。 Webrtc具有以下管理音频字节的方法,例如;

 1. Push input PCM data into `ProcessCaptureStream` to process in place.
 2. Get the processed PCM data from `ProcessCaptureStream` and send to far-end.
 3. The far end pushed the received data into `ProcessRenderStream`.

我已经维护了有关使用Webrtc进行音频处理的完整教程,您可以访问以查看更多详细信息; Android-Audio-Processing-Using-Webrtc