07_音频录制01_命令行
終于要開始進行FFmpeg實戰了,一起來感受一下FFmpeg的強大吧。
命令簡介
FFmpeg的bin目錄中提供了3個命令(可執行程序),可以直接在命令行上使用。
ffmpeg
ffmpeg的主要作用:對音視頻進行編解碼。
# 將MP3文件轉成WAV文件 ffmpeg -i xx.mp3 yy.wav當輸入命令ffmpeg時,可以看到ffmpeg命令的使用格式是:
ffmpeg [options] [[infile options] -i infile]... {[outfile options] outfile}...簡化一下,常用格式是:
ffmpeg arg1 arg2 -i arg3 arg4 arg5- arg1:全局參數
- arg2:輸入文件參數
- arg3:輸入文件
- arg4:輸出文件參數
- arg5:輸出文件
更多詳細用法,可以參考官方文檔:ffmpeg-all.html,或者使用以下命令查看:
# 簡易版 ffmpeg -h # 詳細版 ffmpeg -h long # 完整版 ffmpeg -h full# 或者使用 # ffmpeg -help # ffmpeg -help long # ffmpeg -help fullffprobe
ffprobe的主要作用:查看音視頻的參數信息。
# 可以查看MP3文件的采樣率、比特率、時長等信息 ffprobe xx.mp3當輸入命令ffprobe時,可以看到ffprobe命令的使用格式是:
ffprobe [OPTIONS] [INPUT_FILE] # OPTIONS:參數 # INPUT_FILE:輸入文件更多詳細用法,可以參考官方文檔:ffprobe-all.html,或者使用以下命令查看:
# 簡易版 ffprobe -h # 詳細版 ffprobe -h long # 完整版 ffprobe -h full# 或者使用 # ffprobe -help # ffprobe -help long # ffprobe -help fullffplay
ffplay的主要作用:播放音視頻。
# 播放MP3文件 ffplay xx.mp3當輸入命令ffplay時,可以看到ffplay命令的使用格式是:
ffplay [options] input_file # options:參數 # input_file:輸入文件更多詳細用法,可以參考官方文檔:ffplay-all.html,或者使用以下命令查看:
# 簡易版 ffplay -h # 詳細版 ffplay -h long # 完整版 ffplay -h full# 或者使用 # ffplay -help # ffplay -help long # ffplay -help fullhide_banner
增加*-hide_bannder*參數可以隱藏一些冗余的描述信息,可以去實踐比較以下2條命令的區別:
ffprobe xx.mp3ffprobe -hide_banner xx.mp3# ffmpeg、ffprobe、ffplay都適用通過命令行錄音
查看可用設備
使用命令行查看當前平臺的可用設備:
ffmpeg -devicesWindows的輸出結果如下所示:
- 列表中有個dshow,全名叫DirectShow,是Windows平臺的多媒體系統庫
- 我們可以使用dshow去操作多媒體輸入設備(比如錄音設備)
Mac的輸出結果如下所示:
- 列表中有個avfoundation,是Mac平臺的多媒體系統庫
- 我們可以使用avfoundation去操作多媒體輸入設備(比如錄音設備)
查看dshow支持的設備
# 查看dshow支持的設備 ffmpeg -f dshow -list_devices true -i dummy# 或者 # ffmpeg -list_devices true -f dshow -i '' # ffmpeg -list_devices true -f dshow -i ""-
-f dshow
- dshow支持的
-
-list_devices true
- 打印出所有的設備
-
-i dummy 或 -i ‘’ 或 -i “”
- 立即退出
我的筆記本外接了一只麥克風。
因此,命令的執行結果大致如下所示:
DirectShow video devices (some may be both video and audio devices)"Integrated Camera"DirectShow audio devices"線路輸入 (3- 魅聲T800)""麥克風陣列 (Realtek(R) Audio)"-
dshow支持的視頻設備
- Integrated Camera:筆記本自帶的攝像頭
-
dshow支持的音頻設備
- 線路輸入 (3- 魅聲T800):外接的麥克風
- 麥克風陣列 (Realtek? Audio):筆記本自帶的麥克風
查看avfoundation支持的設備
在Mac平臺,使用的是avfoundation,而不是dshow。
ffmpeg -f avfoundation -list_devices true -i ''輸出結果如下所示:
AVFoundation video devices:[0] FaceTime高清攝像頭(內建)[1] Capture screen 0 AVFoundation audio devices:[0] MS-T800[1] Edu Audio Device[2] MacBook Pro麥克風列表中的MS-T800是外接的麥克風。在Mac上,FFmpeg還給每一個視頻、音頻設備進行了編號,比如MS-T800的編號是0、Mac自帶麥克風的編號是2。
指定設備進行錄音
# 使用外接的麥克風進行錄音,最后生成一個wav文件 ffmpeg -f dshow -i audio="麥克風陣列 (Realtek(R) Audio)" out.wav# 在Mac上通過編號指定設備 ffmpeg -f avfoundation -i :2 out.wav # :0表示使用0號音頻設備 # 0:2表示使用0號視頻設備和2號音頻設備- 可以使用快捷鍵Ctrl + C終止錄音
- 我這邊的測試結果顯示,音頻參數是:
- Windows:44100Hz采樣率、16位深度、2聲道、1411Kbps比特率
- Mac:48000Hz采樣率、16位深度、2聲道、1536Kbps比特率
設置dshow的參數
先通過命令查看一下dshow可以使用的參數,詳情可以查看官方文檔:dshow參數。
# 從ffmpeg -devices命令的結果可以看得出來:dshow屬于demuxer,而不是muxer ffmpeg -h demuxer=dshow部分輸出結果如下所示:
# 采樣率 -sample_rate <int> set audio sample rate (from 0 to INT_MAX) # 采樣大小(位深度) -sample_size <int> set audio sample size (from 0 to 16) # 聲道數 -channels <int> set number of audio channels, such as 1 or 2 (from 0 to INT_MAX) # 列出特定設備支持的參數 -list_options <boolean> list available options for specified device (default false)然后再看看你的設備支持哪些參數。
ffmpeg -f dshow -list_options true -i audio="麥克風陣列 (Realtek(R) Audio)"輸出結果如下所示:
DirectShow audio only device options (from audio devices)Pin "Capture" (alternative pin name "Capture")min ch=1 bits=8 rate= 11025 max ch=2 bits=16 rate= 44100# 可以看出來:采樣率范圍是11025~44100Hz接下來設置錄音時的音頻參數。
ffmpeg -f dshow -sample_rate 15000 -sample_size 16 -channels 1 -i audio="麥克風陣列 (Realtek(R) Audio)" out.wav總結
以上是生活随笔為你收集整理的07_音频录制01_命令行的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MITxPro平台 Base SPOC-
- 下一篇: 场景分析法设计测试用例