一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

FFmpeg獲取DirectShow設(shè)備數(shù)據(jù)(攝像頭,錄屏)

 看見(jiàn)就非常 2015-04-01

這兩天研究了FFmpeg獲取DirectShow設(shè)備數(shù)據(jù)的方法,在此簡(jiǎn)單記錄一下以作備忘。本文所述的方法主要是對(duì)應(yīng)Windows平臺(tái)的。

1.       列設(shè)備

  1. ffmpeg -list_devices true -f dshow -i dummy  

命令執(zhí)行后輸出的結(jié)果如下(注:中文的設(shè)備會(huì)出現(xiàn)亂碼的情況)。列表顯示設(shè)備的名稱很重要,輸入的時(shí)候都是使用“-f dshow -i video="{設(shè)備名}"”的方式。


我自己的機(jī)器上列出了以下設(shè)備:

  1. [dshow @0388f5e0] DirectShow video devices  
  2. [dshow @0388f5e0]  "Integrated Camera"  
  3. [dshow @0388f5e0] "screen-capture-recorder"  
  4. [dshow @0388f5e0] DirectShow audio devices  
  5. [dshow @0388f5e0]  "鍐呰楹﹀厠椋?(Conexant20672 SmartAudi"  
  6. [dshow @0388f5e0]  "virtual-audio-capturer"  

下文的測(cè)試中,使用其中的兩個(gè)視頻輸入:"Integrated Camera"和"screen-capture-recorder"。

 注:音頻設(shè)備出現(xiàn)亂碼,這個(gè)問(wèn)題還沒(méi)有解決。

2.       獲取攝像頭數(shù)據(jù)(保存為本地文件或者發(fā)送實(shí)時(shí)流)

2.1. 編碼為H.264,保存為本地文件

下面這條命令,實(shí)現(xiàn)了從攝像頭讀取數(shù)據(jù)并編碼為H.264,最后保存成mycamera.mkv。

  1. ffmpeg -f dshow -i video="Integrated Camera" -vcodec libx264 mycamera.mkv  

2.2. 直接播放攝像頭的數(shù)據(jù)

使用ffplay可以直接播放攝像頭的數(shù)據(jù),命令如下:

  1. ffplay -f dshow -i video="Integrated Camera"  

如果設(shè)備名稱正確的話,會(huì)直接打開(kāi)本機(jī)的攝像頭,如圖所示。


注:除了使用DirectShow作為輸入外,使用VFW也可以讀取到攝像頭的數(shù)據(jù),例如下述命令可以播放攝像頭數(shù)據(jù):

  1. ffplay -f vfwcap -i 0  

2.3. 編碼為H.264,發(fā)布UDP

下面這條命令,實(shí)現(xiàn)了:獲取攝像頭數(shù)據(jù)->編碼為H.264->封裝為UDP并發(fā)送至組播地址。

  1. ffmpeg -f dshow -i video="Integrated Camera" -vcodec libx264 -preset:v ultrafast -tune:v zerolatency -f h264 udp://233.233.233.223:6666  

注1:考慮到提高libx264的編碼速度,添加了-preset:v ultrafast和-tune:v zerolatency兩個(gè)選項(xiàng)。

注2:高分辨率的情況下,使用UDP可能出現(xiàn)丟包的情況。為了避免這種情況,可以添加–s 參數(shù)(例如-s 320x240)調(diào)小分辨率。

2.4. 編碼為H.264,發(fā)布RTP

下面這條命令,實(shí)現(xiàn)了:獲取攝像頭數(shù)據(jù)->編碼為H.264->封裝為RTP并發(fā)送至組播地址。

  1. ffmpeg -f dshow -i video="Integrated Camera" -vcodec libx264 -preset:v ultrafast -tune:v zerolatency -f rtp rtp://233.233.233.223:6666>test.sdp  

注1:考慮到提高libx264的編碼速度,添加了-preset:v ultrafast和-tune:v zerolatency兩個(gè)選項(xiàng)。

注2:結(jié)尾添加“>test.sdp”可以在發(fā)布的同時(shí)生成sdp文件。該文件可以用于該視頻流的播放。

2.5. 編碼為H.264,發(fā)布RTMP

下面這條命令,實(shí)現(xiàn)了:獲取攝像頭數(shù)據(jù)->編碼為H.264->并發(fā)送至RTMP服務(wù)器。

  1. ffmpeg -f dshow -i video="Integrated Camera" -vcodec libx264 -preset:v ultrafast -tune:v zerolatency -f flv rtmp://localhost/oflaDemo/livestream  

2.6. 編碼為MPEG2,發(fā)布UDP

與編碼為H.264類似,指明-vcodec即可。

  1. ffmpeg -f dshow -i video="Integrated Camera" -vcodec mpeg2video -f mpeg2video udp://233.233.233.223:6666  

播放MPEG2的UDP流如下。指明-vcodec為mpeg2video即可

  1. ffplay -vcodec mpeg2video udp://233.233.233.223:6666  

 

3.       屏幕錄制(Windows平臺(tái)下保存為本地文件或者發(fā)送實(shí)時(shí)流)

Linux下使用FFmpeg進(jìn)行屏幕錄制相對(duì)比較方便,可以使用x11grab,使用如下的命令:

  1. ffmpeg -f x11grab -s 1600x900 -r 50 -vcodec libx264 –preset:v ultrafast –tune:v zerolatency -crf 18 -f mpegts udp://localhost:1234  

詳細(xì)時(shí)使用方式可以參考這篇文章:DesktopStreaming With FFmpeg for Lower Latency

Linux錄屏在這里不再贅述。在Windows平臺(tái)下屏幕錄像則要稍微復(fù)雜一些。在Windows平臺(tái)下,使用-dshow取代x11grab。一句話介紹:注冊(cè)錄屏dshow濾鏡(例如screen-capture-recorder),然后通過(guò)dshow獲取錄屏圖像然后編碼處理。

因此,在使用FFmpeg屏幕錄像之前,需要先安裝dshow濾鏡。在這里推薦一個(gè)軟件:screen capture recorder。安裝這個(gè)軟件之后,就可以通過(guò)FFmpeg屏幕錄像了。

 

screen capture recorder項(xiàng)目主頁(yè):

http:///projects/screencapturer/

下載地址:

http:///projects/screencapturer/files

下載完后,一路“Next”即可安裝完畢。注意,需要Java運(yùn)行環(huán)境(Java Runtime Environment),如果沒(méi)有的話下載一個(gè)就行。

screen capture recorder本身就可以錄屏,不過(guò)這里我們使用FFmpeg進(jìn)行錄屏。


3.1. 編碼為H.264,保存為本地文件

下面的命令可以將屏幕錄制后編碼為H.264并保存為本地文件。

  1. ffmpeg -f dshow -i video="screen-capture-recorder" -r 5 -vcodec libx264 -preset:v ultrafast -tune:v zerolatency MyDesktop.mkv  

注:“-r 5”的意思是把幀率設(shè)置成5。         

最后得到的效果如下圖。


此外,也可以錄聲音,聲音輸入可以分成兩種:一種是真人說(shuō)話的聲音,通過(guò)話筒輸入;一種是虛擬的聲音,即錄屏的時(shí)候電腦耳機(jī)里的聲音。下面兩條命令可以分別錄制話筒的聲音和電腦耳機(jī)里的聲音。

錄屏,伴隨話筒輸入的聲音

  1. ffmpeg -f dshow -i video="screen-capture-recorder" -f dshow -i audio="鍐呰楹﹀厠椋?(Conexant 20672SmartAudi" -r 5 -vcodec libx264 -preset:v ultrafast -tune:v zerolatency -acodec libmp3lame MyDesktop.mkv  

上述命令有問(wèn)題:audio那里有亂碼,把亂碼ANSI轉(zhuǎn)UTF-8之后(亂碼變成“內(nèi)裝麥克”)依然不行,這個(gè)問(wèn)題先留著,以后有時(shí)間再解決。

PS:感覺(jué)這條命令適合做講座之類的時(shí)候使用

 

錄屏,伴隨耳機(jī)輸入的聲音

  1. ffmpeg -f dshow -i video="screen-capture-recorder" -f dshow -i audio="virtual-audio-capturer" -r 5 -vcodec libx264 -preset:v ultrafast -tune:v zerolatency -acodec libmp3lame MyDesktop.mkv  

PS:測(cè)這條命令的時(shí)候,這在聽(tīng)歌,因此錄制的視頻中的音頻就是那首歌曲。

 

3.2. 編碼為H.264,發(fā)布UDP

下面的命令可以將屏幕錄制后編碼為H.264并封裝成UDP發(fā)送到組播地址

  1. ffmpeg -f dshow -i video="screen-capture-recorder" -r 5 -vcodec libx264 -preset:v ultrafast -tune:v zerolatency -f h264 udp://233.233.233.223:6666  

注1:考慮到提高libx264的編碼速度,添加了-preset:v ultrafast和-tune:v zerolatency兩個(gè)選項(xiàng)。

注2:高分辨率的情況下,使用UDP可能出現(xiàn)丟包的情況。為了避免這種情況,可以添加–s 參數(shù)(例如-s 320x240)調(diào)小分辨率。

3.3. 編碼為H.264,發(fā)布RTP

下面的命令可以將屏幕錄制后編碼為H.264并封裝成RTP并發(fā)送到組播地址

  1. ffmpeg -f dshow -i video="screen-capture-recorder" -vcodec libx264 -preset:v ultrafast -tune:v zerolatency -f rtp rtp://233.233.233.223:6666>test.sdp  

注1:考慮到提高libx264的編碼速度,添加了-preset:v ultrafast和-tune:v zerolatency兩個(gè)選項(xiàng)。

注2:結(jié)尾添加“>test.sdp”可以在發(fā)布的同時(shí)生成sdp文件。該文件可以用于該視頻流的播放。如下命令即可播放:

  1. ffplay test.sdp  

3.4. 編碼為H.264,發(fā)布RTMP

原理同上,不再贅述。

  1. ffmpeg -f dshow -i video="Integrated Camera" -vcodec libx264 -preset:v ultrafast -tune:v zerolatency -f flv rtmp://localhost/oflaDemo/livestream  

注意:播放RTMP的時(shí)候,-max_delay參數(shù)會(huì)比較明顯的影響延遲,將此參數(shù)值設(shè)定小一些,有利于降低延時(shí)。

  1. ffplay -max_delay 100000 "rtmp://localhost/oflaDemo/livestream live=1"  


    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多

    东京热男人的天堂一二三区| 欧美色欧美亚洲日在线| 久久国产青偷人人妻潘金莲| 国产美女精品午夜福利视频| 91福利视频日本免费看看| 欧美区一区二在线播放| 国产传媒免费观看视频| 麻豆一区二区三区精品视频| 手机在线不卡国产视频| 精品久久久一区二区三| 久久精品色妇熟妇丰满人妻91| 国内女人精品一区二区三区| 亚洲国产综合久久天堂| 亚洲美女国产精品久久| 老外那个很粗大做起来很爽| 丰满少妇被猛烈撞击在线视频| 欧美日韩最近中国黄片| 在线观看中文字幕91| 久久精品亚洲情色欧美| 欧美精品激情视频一区| 国产欧美日韩精品一区二区| 中文字幕一区久久综合| 在线观看国产午夜福利| 激情五月天深爱丁香婷婷| 91在线爽的少妇嗷嗷叫| 国产一区二区三区午夜精品| 欧美日韩免费观看视频| 中文字幕佐山爱一区二区免费| 亚洲熟女一区二区三四区| 国产一区二区三区av在线| 国产一区二区在线免费| 日韩性生活视频免费在线观看| 日本人妻丰满熟妇久久| 日本东京热视频一区二区三区| 国产在线一区中文字幕| 日韩一区二区三区在线日| 千仞雪下面好爽好紧好湿全文| 一区二区日韩欧美精品| av一区二区三区天堂| 欧美日韩国产福利在线观看| 亚洲视频偷拍福利来袭|