1. 程式人生 > >windows下ffmpeg音視訊採集並推流【較亂,懶的整理了】

windows下ffmpeg音視訊採集並推流【較亂,懶的整理了】

【大多為蒐集的文章,都歸類為,轉載。所以沒有標明,來處。】

1.windows下ffmpeg的編譯:

        如:./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 0 -s 176x144 -f rawvideo -pix_fmt yuv420p ss.yuv

3.如果要想深入下ffmpeg中vfwcap:

4.記錄一下遇到的問題

        Aconnect裝置失敗

5.前面提到的是VFW(video for windows)裝置,現在攝像頭都會支援vfw/wdm,但各系統並非有對應驅動程式。

        【電腦插上USB攝像頭時,會為其安裝通用驅動,測試其是VFW還是WDM,在裝置管理檢視驅動程式詳細資訊應該能辨別,或者直接上程式,編譯測試。】

        【根據使用的驅動程式的不同來分類,目前市場上大致有兩種捕捉卡:VFW (Video for Windows)卡和WDM (Windows Driver Model)卡。VFW是DirectShow的前身,攝像頭驅動未必支援。新的程式應該使用DirectShow。參考DirectShow SDK中的amcap示例。】

        【視訊捕捉卡的介面,可以是以PCI或AGP的方式插入PC機箱,也可以直接以USB介面的方式外掛;還有就是通過1394介面與PC機相連的數碼攝像機等等。】

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

上面是分開採集的,同時採集,合併就行了,兩個輸入檔案是ffmpeg -f dshow -i video="6RoomsCam" -f dshow -i audio="Realtek HD Audio Input" -y out.flv。

若要檢視本機有哪些裝置,可以參考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 -f dshow -i dummy //可檢視攝像頭和音效卡裝置名稱

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裝置的版本【編譯遇到問題,就自己解決吧,不是很麻煩。】

        ffplay -f dshow video="USB video capture 0"

【交代後期遇到的問題,以及提示】

『用ffmpeg推音視訊流(音視訊皆用dshow為輸入,視訊編碼用X264,以flv格式輸出)的延遲問題,據我所看,有兩點如下:』

1. 音訊取樣的帶來的延遲,這個延遲很小。它是如何影響到延遲大小的呢?這樣的:dshow中,音視訊源filter的capture pin,資料包buffer大小是可設定的,假設它預設為1秒的資料,也就是每一秒才回調並向外投遞出一包資料,此時(假設視訊fps=15)編碼器得到了15幀,在format的interleave(音視訊包交錯存放)處理裡ff_interleave_packet_per_dts時,就快取了接近1秒,即造成等量延遲。

如何修改capture pin呢?參考程式碼如下:

dshow_cycle_formats()
{
......
	IAMBufferNegotiation *negotiate = NULL;
	ALLOCATOR_PROPERTIES prop = {0};
	if (devtype == AudioDevice)
		if (IPin_QueryInterface(pin, &, (void **) &negotiate) != S_OK)
			return;//IID_IAMBufferNegotiation
......
		if (devtype == AudioDevice)
		{
			{
				prop.cbAlign = 1;
				prop.cBuffers = 2;
				prop.cbBuffer = ??;
			}
			if (IAMBufferNegotiation_SuggestAllocatorProperties(negotiate, &prop) != S_OK)
				goto next;
		}
......
	if (devtype == AudioDevice)
		IAMBufferNegotiation_Release(negotiate);
......	
}

至於該buffer設定多大,可以結合,音訊編碼的frame_size、interleave是單幀視訊對應多少音訊包,來考慮

2. X264編碼帶來的延遲,在配置引數的時候,先參考下這篇文章:如何計算x264編碼延遲(轉載如下)

01 delay = 0
02
03 if b-adapt=2 and not (nopass or pass2):
04 delay = MAX(bframes,3)*4
05 else:
06 delay = bframes
07
08 if mb-tree or vbv:
09 delay = MAX(delay,rc_lookahead)
10
11 if not sliced-threads:
12 delay = delay + threads - 1
13
14 delay = delay + sync-lookahead
15
16 if vbv and (vfr-input or abr or pass1:
17 delay = delay + 1

計算出來是x264要buffer掉的frame數。當然在這之外還要算上編碼計算的時間,但是這個buffer掉的時間是不可逾越的延遲的極限了。

“B幀給客戶端帶來的延遲,並不能簡單的說,是B幀數目的兩倍關係,請畫出時序圖去衡量。”  “編碼速度帶來的延遲?編碼幀緩衝與策略帶來延遲?網路延遲?流媒體伺服器帶來延遲?解碼帶來延遲?。。。”

『』

相關推薦

windowsffmpeg視訊採集整理

【大多為蒐集的文章,都歸類為,轉載。所以沒有標明,來處。】 1.windows下ffmpeg的編譯:         如:./configure --disable-yasm --enable-static --enable-indev=dshow 如果裝了yasm,x2

windowsffmpeg命令+nginx + rtmp實現

ffmpeg命令配置 1.下載ffmpeg官網地址:http://ffmpeg.org 找到window系統對應版本下載 2.配置path路徑 下載解壓完成,在環境變數中新增bin路徑: 我這裡配置 配置好以後就可以可以執行ffmpeg命令 剩

Windows ffmpeg + labelImg 提取視頻幀 得到圖片集 標註圖片 來 構造數據集

.com pyqt4 打開文件 href for idt 視頻 round PE 構造數據集的流程 視頻文件 >> ffmpeg處理 >> 圖片集 >> labelImg進行標註 >> 標註好的數據集 準備

C#FFmpeg視訊採集送RTMP伺服器程式碼思路整理

C#視訊採集與推送RTMP伺服器程式碼思路整理:在看過FFmpeg後是否認為寫C#的視訊流採集和推送還是一頭霧水啊?深有此感。領導是C#的高手,說可以通過C或C++的程式碼直接複製貼上到C#工程然後進行適配程式碼就可以了,因為C#使用ffmpeg的類名和變數、方法等都與C保持

視訊採集封裝到直播原理

上次好早之前也寫過一篇,隨著工作的深入對這塊知識又鞏固了一遍,算是一個重寫和擴充套件版 舊的總結跳轉,那麼有啥不同呢? 1. 介紹協議的優缺點以及怎麼選擇 2. 會介紹壓縮編碼的原理 3. 測試關注的質量指標 那麼基本框架其實是

視訊採集封裝到直播的簡單原理

那麼今天要分享的主要是兩個內容,第一個是對硬體採集的資源怎麼做一個打包封裝,另一個是處理完成的資源如何直播,作為在日常業務測試線的一個業務邏輯擴充套件,純粹個人理解,所以不會有一些深入的講解,畢竟網上的文章夠多了。 直接用visio花了一張圖:

手機Android視訊採集與直播實現單兵、移動監控類應用

      最新手機採集推送直播監控以及EasyDarwin開源流媒體平臺的版本及程式碼:恰逢2014 Google I/O大會,不難看出安卓在Google的推進以及本身的開放性作用下,已經快延生到生活

手機Android視訊採集與直播

恰逢2014 Google I/O大會,不難看出安卓在Google的推進以及本身的開放性作用下,已經快延生到生活的  各個方面了,從安卓智慧手機、平板,到可穿戴的Android Ware、眼鏡、手錶、再到Android汽車、智慧家  居、電視,甚至最近看新聞,日本出的幾

python學習-windows使用python27將合多個xlsx文件

res mar def 主函數 忽略 單元格 .com 模塊 一個 有時候需要處理很多報表,將一個目錄下的所有excel格式報表合並,手工操作費事費力如果能使用python,將多個.xlsx同時能夠合並多個excel表的話,多麽方便。1、windows上python配

ffmpeg分解視訊檔案加密

ffmpeg,可以將視訊分解成小塊,並根據金鑰進行內容加密。首先需要將金鑰寫入檔案video.key。 還需要第二個檔案,key_info來儲存是關鍵資訊檔案。它具有以下格式: key URI key file path IV (optional) 例如: http://examp

FFmpeg視訊核心技術精講

你將學到什麼 在這一步中,您將瞭解如何: 使用在Node.js上執行的Socket.IO執行WebRTC信令服務 使用該服務在對等體之間交換WebRTC元資料。 此步驟的完整版本位於step-05資料夾中。 替換HTML和JavaScript 用記憶體的內容替換

FFmpeg視訊開發實戰

FFmpeg音視訊開發實戰5 iOS/Android/windows/Linux 一共350集,全面講解FFmpeg音視訊知識點,專案實戰。 FFmpeg實時寫AAC音訊流 FFmpeg 跨平臺開發 Android JNI專題  FFmpeg 音視訊轉碼 Darwi

WindowsPhpEd將php升級到最新版本5.6.27支援Redis步驟

1. 從http://windows.php.net/download/下載指定的版本,我這裡下載的是x86的Win32版本 2. 將下載的php壓縮包解壓到PhpEd的安裝目錄下,並改名為php56 3. 調整PhpEd中除錯瀏覽器的配置,為php56目錄 4. 複製

最新FFmpeg視訊核心技術精講與實戰分享

第1章 課程導學與準備工作全民娛樂時代,需要音視訊等多媒體產品層出不窮,但會處理音視訊資料的工程師卻極度匱乏,進入音視訊開發領域正當時,這門課程就是為這樣的你而生。來吧!加入我們,成就更好的自己。1-1 課前必讀(不看會錯過一個億)1-2 課程導學1-3 音視訊的應用範圍與播放器架構講解(選看

FFmpeg視訊核心技術精講與實戰完整版

第1章 課程導學與準備工作全民娛樂時代,需要音視訊等多媒體產品層出不窮,但會處理音視訊資料的工程師卻極度匱乏,進入音視訊開發領域正當時,這門課程就是為這樣的你而生。來吧!加入我們,成就更好的自己。1-1 課前必讀(不看會錯過一個億)1-2 課程導學1-3 音視訊的應用範圍與播放器架構講解(選看

最新FFmpeg視訊核心技術精講與實戰完整版

第1章 課程導學與準備工作全民娛樂時代,需要音視訊等多媒體產品層出不窮,但會處理音視訊資料的工程師卻極度匱乏,進入音視訊開發領域正當時,這門課程就是為這樣的你而生。來吧!加入我們,成就更好的自己。1-1 課前必讀(不看會錯過一個億)1-2 課程導學1-3 音視訊的應用範圍與播放器架構講解(選看

ffmpeg解碼視訊檔案播放

        最近學習了一下如何使用ffmpeg解碼音視訊,網上的教程挺多但是也挺雜的,搞了好幾天,明白了ffmpeg解碼音視訊的大體流程,這裡記錄一下ffmpeg解碼視訊並播放音視訊的例子,但並沒有做音訊、視訊播放 的同步處理。 直接上程式碼: #include &l

某課網FFmpeg視訊核心技術精講與實戰

第1章 課程導學與準備工作 本章首先介紹音視訊行業的未來前景,然後介紹本課程的具體安排,適合人群以及學習建議,然後會給大家介紹下目前音視訊的應用場景,然後為大家提前講解下播放器架構和音視訊渲染流程,讓大家有個印象,後面在具體章節也會具體的深入的講解。最後會帶大家下載,編譯

FFMPEG視訊解碼流程&MP4視訊檔案讀取(轉)

1.播放多媒體檔案步驟 通常情況下,我們下載的視訊檔案如MP4,MKV、FLV等都屬於封裝格式,就是把音視訊資料按照相應的規範,打包成一個文字檔案。我們可以使用MediaInfo這個工具檢視媒體檔案的相關資訊。 所以當我們播放一個媒體檔案時,通常需要經過以下幾個步驟

某課無加密FFmpeg視訊核心技術精講與實戰

第1章 課程導學與準備工作 本章首先介紹音視訊行業的未來前景,然後介紹本課程的具體安排,適合人群以及學習建議,然後會給大家介紹下目前音視訊的應用場景,然後為大家提前講解下播放器架構和音視訊渲染流程,讓大家有個印象,後面在具體章節也會具體的深入的講解。最後會帶大家下載,編譯