FFmpeg是否支持在Android平台直接录制音频源?
答复
ffmpeg 并非仅支持已有音视频文件的编码转换,只要编译时集成了对应平台的音频采集模块,完全可以直接从Android音频源录制音频,直接输出mp3格式不需要依赖系统MediaRecorder组件。
普通应用场景(无Root/系统签名)
普通第三方应用需要使用开启了android_audio输入模块的ffmpeg构建包,采集时通过-f android_audio指定输入格式为Android音频采集,再通过-audio_source参数指定具体音频源,参数取值和Android系统MediaRecorder.AudioSource的常量值完全对齐,常用值如下:
0:默认音频源,一般映射为主麦克风1:设备主麦克风2:通话上行语音流3:通话下行语音流4:通话双向语音流5:摄像头配套麦克风6:设备降噪副麦克风
录制时需要先申请android.permission.RECORD_AUDIO动态权限,直接录制生成mp3的示例命令如下:
ffmpeg -f android_audio -audio_source 1 -i - -c:a libmp3lame -b:a 192k output.mp3
Root/系统签名应用场景
拥有Root权限或系统签名的应用,可以跳过Android框架层直接读取ALSA音频硬件节点采集音频,不需要申请录音权限,指定输入的方式如下:
ffmpeg -f alsa -i hw:0,0 -c:a libmp3lame -b:a 192k output.mp3
其中hw:0,0需要替换为你设备实际的音频采集设备节点编号。
注意:如果你使用的ffmpeg构建包没有编入
android_audio/alsa采集模块、也没有集成libmp3lamemp3编码库,那就只能完成已有音频文件的格式转码,无法实现直接从音频源录制输出mp3的功能。
内容的提问来源于stack exchange,提问作者Pavel Poley
相关产品推荐
相关产品推荐

