1. windows下ffmpeg的編譯: 可參考:在windows下編譯ffmpeg的詳細(xì)說(shuō)明 如:./configure --disable-yasm --enable-static --enable-indev=dshow 如果裝了yasm,x264,就:./configure --enable-static --enable-indev=dshow --enable-gpl --enable-libx264 2. windows下用ffmpeg采集視頻: 命令如:ffmpeg.exe -r 5 -f vfwcap -i 3. 如果要想深入下ffmpeg中vfwcap: 4.記錄一下遇到的問(wèn)題 Aconnect設(shè)備失敗 Win7系統(tǒng)下使用capDriverConnect()連接失敗的解決辦法 5. 前面提到的是VFW(video for windows)設(shè)備,現(xiàn)在攝像頭都會(huì)支持vfw/wdm,但各系統(tǒng)并非有對(duì)應(yīng)驅(qū)動(dòng)程序。 【電腦插上USB攝像頭時(shí),會(huì)為其安裝通用驅(qū)動(dòng),測(cè)試其是VFW還是WDM,在設(shè)備管理查看驅(qū)動(dòng)程序詳細(xì)信息應(yīng)該能辨別,或者直接上程序,編譯測(cè)試?!?/p> 【根據(jù)使用的驅(qū)動(dòng)程序的不同來(lái)分類,目前市場(chǎng)上大致有兩種捕捉卡:VFW (Video for Windows)卡和WDM (Windows Driver Model)卡。VFW是DirectShow的前身,攝像頭驅(qū)動(dòng)未必支持。新的程序應(yīng)該使用DirectShow。參考DirectShow 【視頻捕捉卡的接口,可以是以PCI或AGP的方式插入PC機(jī)箱,也可以直接以USB接口的方式外掛;還有就是通過(guò)1394接口與PC機(jī)相連的數(shù)碼攝像機(jī)等等。】 6.windows下用ffmpeg采集音頻: 7.windows下使用ffmpeg中的dshow 如:ffmpeg -f dshow -i video="6RoomsCam" -y out.flv //用的六間房的虛擬攝像頭 ffmpeg-f dshow -i audio="Realtek HD Audio Input" -y out.flv 上面是分開(kāi)采集的,同時(shí)采集,合并就行了,兩個(gè)輸入文件是ffmpeg -f dshow -i video="6RoomsCam" -f dshow -i audio="Realtek HD Audio Input" -y out.flv。若要查看本機(jī)有哪些設(shè)備,可以參考10. 8.null. 9.在linux下,如: ffmpeg -f video4linux2 -s 320*240 -r 10 -i /dev/video0 test.asf ffmpeg -f oss -i /dev/dsp /tmp/out.mpg 10. 最后可以參考這里: 記錄一些命令,直接研究也可: ffmpeg -list_devices true ffmpeg -y -f vfwcap -i list ffmpeg -y -f vfwcap -r 25 -i 0 out.mp4 ffmpeg -f video4linux2 -r 25 -s 640x480 -i /dev/video0 out.avi ffmpeg -f v4l2 -r 25 -s 640x480 -i /dev/video0 out.avi ffmpeg -f dshow -i video="Integrated Camera" out.mp4 ffmpeg -f dshow -s 1280x720 -r 15 -vcodec mjpeg -i video="Integrated Camera" out.avi dshow編譯方面參考:如何編譯包含dshow設(shè)備的版本【編譯遇到問(wèn)題,就自己解決吧,不是很麻煩?!?/p> ffplay -f dshow video="USB video capture 0" 【交代后期遇到的問(wèn)題,以及提示】 『用ffmpeg推音視頻流(音視頻皆用dshow為輸入,視頻編碼用X264,以flv格式輸出)的延遲問(wèn)題,據(jù)我所看,有兩點(diǎn)如下:』 1. 音頻采樣的帶來(lái)的延遲,這個(gè)延遲很小。它是如何影響到延遲大小的呢?這樣的:dshow中,音視頻源filter的capture pin,數(shù)據(jù)包buffer大小是可設(shè)置的,假設(shè)它默認(rèn)為1秒的數(shù)據(jù),也就是每一秒才回調(diào)并向外投遞出一包數(shù)據(jù),此時(shí)(假設(shè)視頻fps=15)編碼器得到了15幀,在format的interleave(音視頻包交錯(cuò)存放)處理里ff_interleave_packet_per_dts時(shí),就緩存了接近1秒,即造成等量延遲。 如何修改capture pin呢?參考代碼如下:
2. X264編碼帶來(lái)的延遲,在配置參數(shù)的時(shí)候,先參考下這篇文章:如何計(jì)算x264編碼延遲(轉(zhuǎn)載如下) |
|