寫在前面
如果您對(duì)音視頻技術(shù)感興趣犁珠,可以訂閱我的專題:音視頻專輯
也可以關(guān)注我的簡(jiǎn)書賬戶: 張芳濤互亮,我后期會(huì)發(fā)布更多的音視頻以及圖像處理方面的文章。
正文
麥克風(fēng)和網(wǎng)絡(luò)攝像頭(網(wǎng)絡(luò)攝像頭)是計(jì)算機(jī)設(shè)備的常用部分饼疙,而FFmpeg包含了它們的使用元素。
輸入設(shè)備介紹
FFmpeg可以識(shí)別麥克風(fēng)和網(wǎng)絡(luò)攝像頭等輸入設(shè)備屏积,這些輸入設(shè)備被定義為可以從附加的多媒體設(shè)備訪問數(shù)據(jù)的元素磅甩。 在Windows
上,麥克風(fēng)和網(wǎng)絡(luò)攝像頭可通過dshow
輸入設(shè)備進(jìn)行訪問渣聚,如表中所述:
描述 | 在Windows操作系統(tǒng)上的輸入設(shè)備僧叉,支持的是音頻和視頻設(shè)備 |
---|---|
語(yǔ)法 | options type=media_type[:type=media_type] []中的參數(shù)是可選的 |
類型參數(shù)的描述 | |
type | 值可以是視頻或音頻 |
選項(xiàng)參數(shù)的可用值 | |
audio_buffer_size | 音頻設(shè)備緩沖區(qū)大衅慷椤(以毫秒為單位)(可直接影響延遲,取決于設(shè)備)郎笆,默認(rèn)使用設(shè)備的默認(rèn)緩沖區(qū)大型痱尽(通常為500ms的倍數(shù))。 將此值設(shè)置得過低可能會(huì)降低性能 |
audio_device_number | 具有相同名稱的設(shè)備的音頻設(shè)備號(hào)(從0開始远舅,默認(rèn)為0) |
channels | 捕獲音頻中的通道數(shù) |
framerate | 在拍攝的視頻中幀頻 |
list_devices | 如果設(shè)置為1痕钢,則打印設(shè)備列表并退出 |
list_options | 如果設(shè)置為1,則打印選定設(shè)備的選項(xiàng)列表并退出 |
pixel_format | 像素格式的使用爆办,只有在視頻編解碼器沒有設(shè)置或設(shè)置為rawvideo時(shí)才能設(shè)置 |
sample_rate | 捕獲音頻的采樣率(在Hz中) |
sample_size | 捕獲音頻的樣本大小(二進(jìn)制) |
video_device_number | 同名設(shè)備的視頻設(shè)備編號(hào)(從0開始课梳,默認(rèn)為0) |
video_size | 視頻大小在捕獲的視頻 |
可用的相機(jī)和麥克風(fēng)的列表
便攜式電腦有一個(gè)內(nèi)置的攝像頭暮刃,或者我們可以通過USB接口連接到電腦。麥克風(fēng)也經(jīng)常在電腦里制造椭懊,或者我們可以把一個(gè)放在電腦的麥克風(fēng)插孔上,通常是粉紅色的背犯,耳機(jī)的插孔是綠色的漠魏。要在Windows上顯示所有可用的輸入設(shè)備,我們使用dshow設(shè)備的list_devices選項(xiàng)柱锹,比如在命令中:
ffmpeg -list_devices 1 -f dshow -i dummy
輸出取決于所使用的計(jì)算機(jī)禁熏,示例輸出說明下一個(gè)圖像:
輸出顯示有一個(gè)名為“HP webcam”的網(wǎng)絡(luò)攝像頭和一個(gè)名為“麥克風(fēng)(Realtek High Defini)”的麥克風(fēng)。麥克風(fēng)的全稱是“麥克風(fēng)(Realtek高清)”隙笆,但顯示的只有31個(gè)字符升筏。
-
因?yàn)樯厦娴拿钍轻槍?duì)Windows的您访,所以我的MAC平臺(tái)下面需要下面的命令:
ffmpeg -f avfoundation -list_devices true -i ""
顯示效果如下:
可用選項(xiàng)的攝像頭
Webcam通常有幾種使用-list_options參數(shù)顯示的工作模式剪决。要顯示來自以前輸出的“HP webcam”網(wǎng)絡(luò)攝像頭的選項(xiàng)柑潦,我們可以使用以下命令:
ffmpeg -list_options true -f dshow -i video="HP Webcam"
我的測(cè)試命令:
ffmpeg -f avfoundation -r 30 -i "1:0" -t 20 /Users/zhangfangtao/Desktop/test2.mp4
- 聲明一下,我的facetime沒登錄览露,也打不開譬胎,所以就錄屏了,錄了二十秒鐘的屏幕
效果圖如下:
輸出取決于攝像機(jī)類型偏化,通常顯示可用的分辨率(幀大小)和幀速率:
顯示和記錄網(wǎng)絡(luò)攝像機(jī)的輸入
當(dāng)我們知道網(wǎng)絡(luò)攝像頭的名稱時(shí)侦讨,我們可以在屏幕上顯示它的輸入,或者將它記錄到文件中骗污。下一個(gè)命令顯示帶有默認(rèn)設(shè)置的webcam輸入(通常是最大大小和最大幀速率)怜俐,第一個(gè)是ffplay媒體播放器,第二個(gè)是SDL輸出設(shè)備:
ffplay -f dshow -i video="HP Webcam"
ffmpeg -f dshow -i video="HP Webcam" -f sdl "webcam via ffmpeg"
我的測(cè)試命令:
ffplay -f avfoundation -i "2:0"
-
錄制的副屏的屏幕信息
-
解釋一下,錄制的是我的副屏屏幕信息季稳。如果錄制主屏幕信息,就是另外一個(gè)樣子了仲翎。铛漓。。玫坛。:
要將webcam輸入記錄到文件中湿镀,我們可以使用以下命令:
ffmpeg -f dshow -i video="HP Webcam" webcam.avi
我的測(cè)試命令:
ffmpeg -f avfoundation -r 30 -i "0:0" -t 30 /Users/zhangfangtao/Desktop/test2.mp4
- 結(jié)果就是生成了一個(gè)30秒鐘的視頻文件伐憾,視頻內(nèi)容就是FaceTime里面的內(nèi)容。
- 這里說明一下蒸矛,我一開始是想生成一個(gè)10MB的視頻文件胸嘴,結(jié)果都錄了二十多分鐘了,還沒有停下來的意思磁玉,我就強(qiáng)制終止了驾讲,結(jié)果那時(shí)候視頻已經(jīng)將近五十兆了席赂。颅停。掠拳。。大小設(shè)置真的很不準(zhǔn)喊熟、姐刁。。壁拉。
Webcams通常有一個(gè)默認(rèn)的媒體格式柏靶,比如AVI、MOV等痘昌,它們將輸入保存在一個(gè)與網(wǎng)絡(luò)攝像頭相關(guān)的應(yīng)用程序中梆靖。使用這些默認(rèn)的文件格式有時(shí)會(huì)導(dǎo)致比使用其他文件格式更好的視頻質(zhì)量笔诵。
使用兩個(gè)攝像頭
如果有兩個(gè)網(wǎng)絡(luò)攝像頭可用乎婿,我們可以通過USB端口將它們連接到電腦上,同時(shí)用ffmpeg工具顯示它們的輸出捍靠。下一個(gè)命令顯示網(wǎng)絡(luò)攝像頭的名稱森逮,包括麥克風(fēng)名,控制臺(tái)輸出如下:
ffmpeg -list_devices 1 -f dshow -i dummy
惠普Webcam的選項(xiàng)和如何顯示它們的命令在Webcam的可用選項(xiàng)部分中良风,下面是第二個(gè)Webcam命名為Sirius USB2.0相機(jī)的選項(xiàng):
顯示輸入網(wǎng)絡(luò)攝像頭我們可以使用覆蓋過濾器和因?yàn)槟J(rèn)視頻大小的攝像頭是640 x480像素,我們第二個(gè)輸入的大小設(shè)置為320 x240(qvga)-video_size選項(xiàng),該命令(單引號(hào)返回錯(cuò)誤,只能使用雙引號(hào)):
ffmpeg -f dshow -i "video=Sirius USB2.0 Camera" -f dshow -video_size qvga ^ -i "video=HP Webcam" -filter_complex overlay -f sdl "2 webcams"
前面的命令將第二個(gè)webcam輸入定位到左上角于个,將其放置到右下角,我們將寬度和高度參數(shù)添加到疊加過濾器中:疊加=W/2:H/2。錄音并發(fā)送到揚(yáng)聲器
與網(wǎng)絡(luò)攝像頭類似伍玖,麥克風(fēng)也有幾個(gè)工作模式钞艇,這些工作模式顯示為-list_options參數(shù)設(shè)置為true或1。對(duì)于輸入?yún)?shù)使用音頻類型而不是視頻这难,在前幾節(jié)中使用-list_devices選項(xiàng)列出的麥克風(fēng)的命令是:
ffmpeg -list_options 1 -f dshow -i "audio=Microphone (Realtek High Defini"
要將聲音從麥克風(fēng)傳到揚(yáng)聲器姻乓,我們可以使用以下命令:
ffplay -f dshow -i audio="Microphone (Realtek High Defini"
將聲音記錄到音頻文件的命令如下:
ffmpeg -f dshow -i audio="Microphone (Realtek High Defini" -t 60 mic.mp3
從麥克風(fēng)和網(wǎng)絡(luò)攝像頭錄制音頻和視頻眯牧,我們可以使用以下命令:
ffmpeg -f dshow -i audio="Microphone (Realtek High Defini":^ video="HP Webcam" webcam_with_sound.avi