【秒懂音视频开发】07_音频录制01_命令行
命令簡介
FFmpeg的bin目錄中提供了3個命令(可執行程序),可以直接在命令行上使用。
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 full關注+私信扣1,免費分享發放2022最新最全學習提升資料包,資料內容包括《Andoird音視頻開發必備手冊+音視頻最新學習視頻+大廠面試真題+2022最新學習路線圖+項目實戰源碼》(C/C++,Linux,FFmpeg ,webRTC ,rtmp ,hls ,rtsp ,ffplay ,srs)等等?
?
hide_banner
增加-hide_bannder參數可以隱藏一些冗余的描述信息,可以去實踐比較以下2條命令的區別:
ffprobe xx.mp3ffprobe -hide_banner xx.mp3# ffmpeg、ffprobe、ffplay都適用通過命令行錄音
查看可用設備
使用命令行查看當前平臺的可用設備:
ffmpeg -devicesWindows的輸出結果如下所示:
- 列表中有個dshow,全名叫DirectShow,是Windows平臺的多媒體系統庫
- 我們可以使用dshow去操作多媒體輸入設備(比如錄音設備)
- Devices:D. = Demuxing supported.E = Muxing supported--E caca caca (color ASCII art) output deviceD dshow DirectShow captureD gdigrab GDI API Windows frame grabberD lavfi Libavfilter virtual input deviceD libcdioE sdl,sdl2 SDL2 output deviceD vfwcap VfW video capture
Mac的輸出結果如下所示:
- 列表中有個avfoundation,是Mac平臺的多媒體系統庫
- 我們可以使用avfoundation去操作多媒體輸入設備(比如錄音設備)
- Devices:D. = Demuxing supported.E = Muxing supported--D avfoundation AVFoundation input deviceD lavfi Libavfilter virtual input deviceE sdl,sdl2 SDL2 output device
查看dshow支持的設備
- # 查看dshow支持的設備 ffmpeg -f dshow -list_devices true -i dummy# 或者 # ffmpeg -list_devices true -f dshow -i '' # ffmpeg -list_devices true -f dshow -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(R) 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_命令行的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 关于Openlayers Overlay
- 下一篇: C++ strtok函数详解