Tan*_*ham 4 android record webrtc
我有一个调用use的应用程序WebRTC。但是在通话中,我需要录制麦克风。WebRTC有一个对象WebRTCAudioRecord可以录制音频,但音频文件太大(PCM_16bit)。我想记录但尺寸较小。我已经尝试过MediaRecorder,但由于WebRtc记录了该记录,并且MediaRecorder在通话时没有记录权限,因此无法使用。有人这样做吗,有什么想法可以帮助我吗?
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/ **
解决方案分为两部分:
对于第一部分,您必须通过调用的方法来附加SamplesReadyCallback创建时的内容。此回调将为您提供 webrtc 的 AudioRecord 从麦克风捕获的原始音频帧。audioDeviceManagersetSamplesReadyCallbackJavaAudioDeviceModule
对于第二部分,您必须对原始帧进行编码并写入文件。查看来自谷歌的示例,了解如何执行此操作 - https://android.googlesource.com/platform/frameworks/base/+/master/packages/SystemUI/src/com/android/systemui/screenrecord/ScreenInternalAudioRecorder.java# 234
| 归档时间: |
|
| 查看次数: |
241 次 |
| 最近记录: |