一.ffmpeg打开麦克风,录制音频并重采样
一.windows
windows下使用msys编译ffmpeg,先编译libx264和libx265,然后编译ffmpeg的时候需要添加这两个库的路径才能--enable;为什么ffplay--enable了还是没有呢,仔细看编译打印,可能刚有一段报错提示SDL找不到,这个时候咱们就直接使用msys安装SDL,然后--enable启动sdl,这样ffplay就可以编译成功了。参考这个博主:
FFmpeg在 Windows 环境编译(64位)支持h264,h265,和Intel QSV,Nvidia Cuda,AMD amf 硬件加速_ffmpeg x64-CSDN博客
注意:
此时ffmpeg的libfdk_aac、opus等编码器还没下载,需要使用msys下载
pacman -S mingw-w64-x86_64-fdk-aac pacman -S mingw-w64-x86_64-lame pacman -S mingw-w64-x86_64-opus
#windows中我这里使用cmakelists进行编译,使用的工具是msys+make(随便一搜就有如何下载)
#build下构建指令
cmake .. -G "Unix Makefiles"
make
ffmpeg的源码是c风格的,添加头文件需要使用extern “C”{}括起来
打开麦克风
#查看自己系统的音频设备信息
ffmpeg -list_devices true -f dshow -i dummy
#录制音频(windows)
ffmpeg -f dshow -i audio="virtual-audio-capturer" out1.wav
#linux
ffmpeg -f alsa-i audio="virtual-audio-capturer" out1.wav
录制音频
#采样率44100 双声道 s16le表示位深度为16位,
#意味着每个样本大小使用16位(8位一个字节,2个字节)来表示值
ffmpeg -f dshow -i default -ac 2 -ar 44100 -c:a s16le output.wav
重采样
在重采样之前,我们先获取自己的音频设备采样参数:
//获取音频设备列表
ffmpeg -list_devices true -f dshow -i dummy
//获取音频采样参数
ffmpeg -f dshow -i audio="xxxxx"
也可以先用ffmpeg在本地录制一段音频,然后使用ffplay播放就可以看到了。
#使用ffplay播放pcm
ffplay -f s16le -ar 44100 -ac 2 out.pcm
注意:需要戴耳机否则没麦声音特别小。