筆記:ffmpeg和alsa指令錄音PCM及WAV
因為工作研發及驗證需要整理一下ffmpeg和alsa錄音指令
用ALSA錄音
0. 列出ALSA錄音裝置
1. 錄音成wav檔
$ arecord -D plughw:CARD=U0x46d0x825 -d 5 rec_arecord.wav -v
-d 5是指錄音5秒
-v 會顯示錄音細節
我電腦錄出來的取樣格式是pcm u8, 取樣率8k Hz,單聲道
2. 指定wav錄音格式
$ arecord -D plughw:CARD=U0x46d0x825 -d 5 -f S16_LE -r 16000 -c 1 -t wav rec_arecord.wav -v
-f 指定錄音取樣格式是S16_LE
-r 指定取樣率
-c 指定聲道數
3. 邊錄邊播
$ arecord -Dhw:0,2 -r48000 -f S32_LE -c 2 | aplay -Dhw:0,1 -r48000$ arecord -Dhw:0,0 -r32000 -f cd|aplay -Dhw:0,0 -r32000
4. 其他奇淫巧計
用ALSA播放
1. 播放PCM檔
2. 播放wav檔
$ aplay rec.wav
wave檔自帶標頭所以不用像pcm檔案要指定3. 列出ALSA播音裝置
用FFMPEG錄音
1. 錄音成wav檔
$ ffmpeg -f alsa -i plughw:CARD=U0x46d0x825 -t 5 -f wav rec_ffmpeg.wav
-i 是指定從哪個裝置錄音
-t 5是指5秒
我電腦錄出來的取樣格式是pcm s16le, 取樣率48k Hz,雙聲道
2. 指定wav錄音格式
$ ffmpeg -f alsa -i plughw:CARD=U0x46d0x825 -t 5 -c:a pcm_s16le -ar 16k -ac 1 -f wav rec_ffmpeg.wav
-t 5是指5秒
-c:a 指定轉換格式
-ar 指定取樣率
-ac指定聲道數
3. 列出可用的alsa裝置
$ ffmpeg -sources alsa
因為現在的主機板都自帶很多裝置導致這指令列出來的裝置實在很多
用ffplay播放
1. 播放PCM檔
$ ffplay -autoexit -ar 16k -ac 1 -f f32le rec.pcm
$ ffplay -autoexit -ar 16k -ac 1 -f s16le rec.pcm
pcm播放需要用-f指定格式 -ar指定取樣率 -ac指定聲道數
比較新的版本需要用-autoexit不然不會結束播放
2. 播放wav檔
$ ffplay rec.wav
PCM切檔
$ split -b 4800 got.pcm -d got_part.pcm
留言