【秒懂音视频开发】07_音频录制01_命令行
命令簡(jiǎn)介
FFmpeg的bin目錄中提供了3個(gè)命令(可執(zhí)行程序),可以直接在命令行上使用。
3個(gè)命令
ffmpeg
ffmpeg的主要作用:對(duì)音視頻進(jìn)行編解碼。
# 將MP3文件轉(zhuǎn)成WAV文件 ffmpeg -i xx.mp3 yy.wav當(dāng)輸入命令ffmpeg時(shí),可以看到ffmpeg命令的使用格式是:
ffmpeg [options] [[infile options] -i infile]... {[outfile options] outfile}...簡(jiǎn)化一下,常用格式是:
ffmpeg arg1 arg2 -i arg3 arg4 arg5- arg1:全局參數(shù)
- arg2:輸入文件參數(shù)
- arg3:輸入文件
- arg4:輸出文件參數(shù)
- arg5:輸出文件
更多詳細(xì)用法,可以參考官方文檔:ffmpeg-all.html,或者使用以下命令查看:
# 簡(jiǎn)易版 ffmpeg -h # 詳細(xì)版 ffmpeg -h long # 完整版 ffmpeg -h full# 或者使用 # ffmpeg -help # ffmpeg -help long # ffmpeg -help fullffprobe
ffprobe的主要作用:查看音視頻的參數(shù)信息。
# 可以查看MP3文件的采樣率、比特率、時(shí)長(zhǎng)等信息 ffprobe xx.mp3當(dāng)輸入命令ffprobe時(shí),可以看到ffprobe命令的使用格式是:
ffprobe [OPTIONS] [INPUT_FILE] # OPTIONS:參數(shù) # INPUT_FILE:輸入文件更多詳細(xì)用法,可以參考官方文檔:ffprobe-all.html,或者使用以下命令查看:
# 簡(jiǎn)易版 ffprobe -h # 詳細(xì)版 ffprobe -h long # 完整版 ffprobe -h full# 或者使用 # ffprobe -help # ffprobe -help long # ffprobe -help fullffplay
ffplay的主要作用:播放音視頻。
# 播放MP3文件 ffplay xx.mp3當(dāng)輸入命令ffplay時(shí),可以看到ffplay命令的使用格式是:
ffplay [options] input_file # options:參數(shù) # input_file:輸入文件更多詳細(xì)用法,可以參考官方文檔:ffplay-all.html,或者使用以下命令查看:
# 簡(jiǎn)易版 ffplay -h # 詳細(xì)版 ffplay -h long # 完整版 ffplay -h full# 或者使用 # ffplay -help # ffplay -help long # ffplay -help full關(guān)注+私信扣1,免費(fèi)分享發(fā)放2022最新最全學(xué)習(xí)提升資料包,資料內(nèi)容包括《Andoird音視頻開(kāi)發(fā)必備手冊(cè)+音視頻最新學(xué)習(xí)視頻+大廠面試真題+2022最新學(xué)習(xí)路線圖+項(xiàng)目實(shí)戰(zhàn)源碼》(C/C++,Linux,FFmpeg ,webRTC ,rtmp ,hls ,rtsp ,ffplay ,srs)等等?
?
hide_banner
增加-hide_bannder參數(shù)可以隱藏一些冗余的描述信息,可以去實(shí)踐比較以下2條命令的區(qū)別:
ffprobe xx.mp3ffprobe -hide_banner xx.mp3# ffmpeg、ffprobe、ffplay都適用通過(guò)命令行錄音
查看可用設(shè)備
使用命令行查看當(dāng)前平臺(tái)的可用設(shè)備:
ffmpeg -devicesWindows的輸出結(jié)果如下所示:
- 列表中有個(gè)dshow,全名叫DirectShow,是Windows平臺(tái)的多媒體系統(tǒng)庫(kù)
- 我們可以使用dshow去操作多媒體輸入設(shè)備(比如錄音設(shè)備)
- 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的輸出結(jié)果如下所示:
- 列表中有個(gè)avfoundation,是Mac平臺(tái)的多媒體系統(tǒng)庫(kù)
- 我們可以使用avfoundation去操作多媒體輸入設(shè)備(比如錄音設(shè)備)
- Devices:D. = Demuxing supported.E = Muxing supported--D avfoundation AVFoundation input deviceD lavfi Libavfilter virtual input deviceE sdl,sdl2 SDL2 output device
查看dshow支持的設(shè)備
- # 查看dshow支持的設(shè)備 ffmpeg -f dshow -list_devices true -i dummy# 或者 # ffmpeg -list_devices true -f dshow -i '' # ffmpeg -list_devices true -f dshow -i ""
?
因此,命令的執(zhí)行結(jié)果大致如下所示:
DirectShow video devices (some may be both video and audio devices)"Integrated Camera"DirectShow audio devices"線路輸入 (3- 魅聲T800)""麥克風(fēng)陣列 (Realtek(R) Audio)"?
-
dshow支持的視頻設(shè)備
- Integrated Camera:筆記本自帶的攝像頭
-
dshow支持的音頻設(shè)備
- 線路輸入 (3- 魅聲T800):外接的麥克風(fēng)
- 麥克風(fēng)陣列 (Realtek(R) Audio):筆記本自帶的麥克風(fēng)
查看avfoundation支持的設(shè)備
在Mac平臺(tái),使用的是avfoundation,而不是dshow。
ffmpeg -f avfoundation -list_devices true -i ''?輸出結(jié)果如下所示:
AVFoundation video devices:[0] FaceTime高清攝像頭(內(nèi)建)[1] Capture screen 0 AVFoundation audio devices:[0] MS-T800[1] Edu Audio Device[2] MacBook Pro麥克風(fēng)列表中的MS-T800是外接的麥克風(fēng)。在Mac上,FFmpeg還給每一個(gè)視頻、音頻設(shè)備進(jìn)行了編號(hào),比如MS-T800的編號(hào)是0、Mac自帶麥克風(fēng)的編號(hào)是2。
指定設(shè)備進(jìn)行錄音
# 使用外接的麥克風(fēng)進(jìn)行錄音,最后生成一個(gè)wav文件 ffmpeg -f dshow -i audio="麥克風(fēng)陣列 (Realtek(R) Audio)" out.wav# 在Mac上通過(guò)編號(hào)指定設(shè)備 ffmpeg -f avfoundation -i :2 out.wav # :0表示使用0號(hào)音頻設(shè)備 # 0:2表示使用0號(hào)視頻設(shè)備和2號(hào)音頻設(shè)備?
- 可以使用快捷鍵Ctrl + C終止錄音
- 我這邊的測(cè)試結(jié)果顯示,音頻參數(shù)是:
- Windows:44100Hz采樣率、16位深度、2聲道、1411Kbps比特率
- Mac:48000Hz采樣率、16位深度、2聲道、1536Kbps比特率
設(shè)置dshow的參數(shù)
先通過(guò)命令查看一下dshow可以使用的參數(shù),詳情可以查看官方文檔:dshow參數(shù)。
# 從ffmpeg -devices命令的結(jié)果可以看得出來(lái):dshow屬于demuxer,而不是muxer ffmpeg -h demuxer=dshow?部分輸出結(jié)果如下所示:
# 采樣率 -sample_rate <int> set audio sample rate (from 0 to INT_MAX) # 采樣大小(位深度) -sample_size <int> set audio sample size (from 0 to 16) # 聲道數(shù) -channels <int> set number of audio channels, such as 1 or 2 (from 0 to INT_MAX) # 列出特定設(shè)備支持的參數(shù) -list_options <boolean> list available options for specified device (default false)?然后再看看你的設(shè)備支持哪些參數(shù)。
ffmpeg -f dshow -list_options true -i audio="麥克風(fēng)陣列 (Realtek(R) Audio)"輸出結(jié)果如下所示:
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# 可以看出來(lái):采樣率范圍是11025~44100Hz?接下來(lái)設(shè)置錄音時(shí)的音頻參數(shù)。
ffmpeg -f dshow -sample_rate 15000 -sample_size 16 -channels 1 -i audio="麥克風(fēng)陣列 (Realtek(R) Audio)" out.wav?
總結(jié)
以上是生活随笔為你收集整理的【秒懂音视频开发】07_音频录制01_命令行的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 关于Openlayers Overlay
- 下一篇: OSChina 周三乱弹 —— 哽住