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