《FFmpeg Basics》中文版-20-麥克風(fēng)和攝像頭

寫在前面

如果您對音視頻技術(shù)感興趣,可以訂閱我的專題:音視頻專輯
也可以關(guān)注我的簡書賬戶: 張芳濤,我后期會發(fā)布更多的音視頻以及圖像處理方面的文章。

正文

麥克風(fēng)和網(wǎng)絡(luò)攝像頭(網(wǎng)絡(luò)攝像頭)是計算機設(shè)備的常用部分,而FFmpeg包含了它們的使用元素。

輸入設(shè)備介紹

FFmpeg可以識別麥克風(fēng)和網(wǎng)絡(luò)攝像頭等輸入設(shè)備,這些輸入設(shè)備被定義為可以從附加的多媒體設(shè)備訪問數(shù)據(jù)的元素。 在Windows上,麥克風(fēng)和網(wǎng)絡(luò)攝像頭可通過dshow輸入設(shè)備進行訪問,如表中所述:

描述 在Windows操作系統(tǒng)上的輸入設(shè)備,支持的是音頻和視頻設(shè)備
語法 options type=media_type[:type=media_type]
[]中的參數(shù)是可選的
類型參數(shù)的描述
type 值可以是視頻或音頻
選項參數(shù)的可用值
audio_buffer_size 音頻設(shè)備緩沖區(qū)大?。ㄒ院撩霝閱挝唬芍苯佑绊懷舆t,取決于設(shè)備),默認(rèn)使用設(shè)備的默認(rèn)緩沖區(qū)大小(通常為500ms的倍數(shù))。 將此值設(shè)置得過低可能會降低性能
audio_device_number 具有相同名稱的設(shè)備的音頻設(shè)備號(從0開始,默認(rèn)為0)
channels 捕獲音頻中的通道數(shù)
framerate 在拍攝的視頻中幀頻
list_devices 如果設(shè)置為1,則打印設(shè)備列表并退出
list_options 如果設(shè)置為1,則打印選定設(shè)備的選項列表并退出
pixel_format 像素格式的使用,只有在視頻編解碼器沒有設(shè)置或設(shè)置為rawvideo時才能設(shè)置
sample_rate 捕獲音頻的采樣率(在Hz中)
sample_size 捕獲音頻的樣本大小(二進制)
video_device_number 同名設(shè)備的視頻設(shè)備編號(從0開始,默認(rèn)為0)
video_size 視頻大小在捕獲的視頻

可用的相機和麥克風(fēng)的列表

便攜式電腦有一個內(nèi)置的攝像頭,或者我們可以通過USB接口連接到電腦。麥克風(fēng)也經(jīng)常在電腦里制造,或者我們可以把一個放在電腦的麥克風(fēng)插孔上,通常是粉紅色的,耳機的插孔是綠色的。要在Windows上顯示所有可用的輸入設(shè)備,我們使用dshow設(shè)備的list_devices選項,比如在命令中:

ffmpeg -list_devices 1 -f dshow -i dummy

輸出取決于所使用的計算機,示例輸出說明下一個圖像:


輸出顯示有一個名為“HP webcam”的網(wǎng)絡(luò)攝像頭和一個名為“麥克風(fēng)(Realtek High Defini)”的麥克風(fēng)。麥克風(fēng)的全稱是“麥克風(fēng)(Realtek高清)”,但顯示的只有31個字符。

  • 因為上面的命令是針對Windows的,所以我的MAC平臺下面需要下面的命令:

    ffmpeg -f avfoundation -list_devices true -i ""
    
  • 顯示效果如下:

可用選項的攝像頭

Webcam通常有幾種使用-list_options參數(shù)顯示的工作模式。要顯示來自以前輸出的“HP webcam”網(wǎng)絡(luò)攝像頭的選項,我們可以使用以下命令:

ffmpeg -list_options true -f dshow -i video="HP Webcam"

我的測試命令:

ffmpeg -f avfoundation -r 30  -i "1:0"  -t 20 /Users/zhangfangtao/Desktop/test2.mp4 
  • 聲明一下,我的facetime沒登錄,也打不開,所以就錄屏了,錄了二十秒鐘的屏幕

效果圖如下:

輸出取決于攝像機類型,通常顯示可用的分辨率(幀大小)和幀速率:


顯示和記錄網(wǎng)絡(luò)攝像機的輸入

當(dāng)我們知道網(wǎng)絡(luò)攝像頭的名稱時,我們可以在屏幕上顯示它的輸入,或者將它記錄到文件中。下一個命令顯示帶有默認(rèn)設(shè)置的webcam輸入(通常是最大大小和最大幀速率),第一個是ffplay媒體播放器,第二個是SDL輸出設(shè)備:

ffplay -f dshow -i video="HP Webcam"
ffmpeg -f dshow -i video="HP Webcam" -f sdl "webcam via ffmpeg"

我的測試命令:

ffplay -f avfoundation  -i "2:0"
  • 錄制的副屏的屏幕信息


  • 解釋一下,錄制的是我的副屏屏幕信息。如果錄制主屏幕信息,就是另外一個樣子了。。。。:

要將webcam輸入記錄到文件中,我們可以使用以下命令:

ffmpeg -f dshow -i video="HP Webcam" webcam.avi

我的測試命令:

ffmpeg -f avfoundation -r 30 -i "0:0" -t 30 /Users/zhangfangtao/Desktop/test2.mp4 
  • 結(jié)果就是生成了一個30秒鐘的視頻文件,視頻內(nèi)容就是FaceTime里面的內(nèi)容。
  • 這里說明一下,我一開始是想生成一個10MB的視頻文件,結(jié)果都錄了二十多分鐘了,還沒有停下來的意思,我就強制終止了,結(jié)果那時候視頻已經(jīng)將近五十兆了。。。。大小設(shè)置真的很不準(zhǔn)、。。。

Webcams通常有一個默認(rèn)的媒體格式,比如AVI、MOV等,它們將輸入保存在一個與網(wǎng)絡(luò)攝像頭相關(guān)的應(yīng)用程序中。使用這些默認(rèn)的文件格式有時會導(dǎo)致比使用其他文件格式更好的視頻質(zhì)量。

使用兩個攝像頭

如果有兩個網(wǎng)絡(luò)攝像頭可用,我們可以通過USB端口將它們連接到電腦上,同時用ffmpeg工具顯示它們的輸出。下一個命令顯示網(wǎng)絡(luò)攝像頭的名稱,包括麥克風(fēng)名,控制臺輸出如下:

ffmpeg -list_devices 1 -f dshow -i dummy

惠普Webcam的選項和如何顯示它們的命令在Webcam的可用選項部分中,下面是第二個Webcam命名為Sirius USB2.0相機的選項:

顯示輸入網(wǎng)絡(luò)攝像頭我們可以使用覆蓋過濾器和因為默認(rèn)視頻大小的攝像頭是640 x480像素,我們第二個輸入的大小設(shè)置為320 x240(qvga)-video_size選項,該命令(單引號返回錯誤,只能使用雙引號):

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"

前面的命令將第二個webcam輸入定位到左上角,將其放置到右下角,我們將寬度和高度參數(shù)添加到疊加過濾器中:疊加=W/2:H/2。

錄音并發(fā)送到揚聲器

與網(wǎng)絡(luò)攝像頭類似,麥克風(fēng)也有幾個工作模式,這些工作模式顯示為-list_options參數(shù)設(shè)置為true或1。對于輸入?yún)?shù)使用音頻類型而不是視頻,在前幾節(jié)中使用-list_devices選項列出的麥克風(fēng)的命令是:

ffmpeg -list_options 1 -f dshow -i "audio=Microphone (Realtek High Defini"

要將聲音從麥克風(fē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
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • WebSocket-Swift Starscream的使用 WebSocket 是 HTML5 一種新的協(xié)議。它實...
    香橙柚子閱讀 24,808評論 8 183
  • 我輾轉(zhuǎn)千回, 只為夢中見到你。 終是山仞千丈, 我亦雄心萬丈。 終是迷霧千重, 我亦乘風(fēng)破萬。 愿我如夢, 似幻似...
    星辰溥天閱讀 312評論 0 4
  • 珠江鋼琴@潮州 一道 四、高級階段:如果說鋼琴的初級階段我們側(cè)重于手指技能的訓(xùn)練,學(xué)習(xí)和掌握各類基本彈奏...
    ZMDPR閱讀 472評論 0 0
  • 2016—8—22 莒鍋鍋 1 我們都知道,不論在體制內(nèi)還是體制外,即使在同一個單位...
    莒鍋鍋閱讀 512評論 3 4
  • “媽,快看,快看,太可怕了?!迸畠耗坎晦D(zhuǎn)睛地盯著電視,朝著廚房里的我大聲嚷嚷?!笆裁垂?jié)目讓你這么激動?”我一邊擦著...
    緣末閱讀 797評論 47 52

友情鏈接更多精彩內(nèi)容