1. 程式人生 > >[原]從管道傳送資料到ffmpeg進行視訊編碼

[原]從管道傳送資料到ffmpeg進行視訊編碼

在windows編譯ffmpeg,一般的方法是mingw+msys,編譯出來的是windows的可執行檔案ffmpeg.exe。

閱讀 ffmpeg 原始碼的時候,發現 ffmpeg 支援 pipe,也就是說,傳遞給ffmpeg.exe程序的輸入檔案引數和輸出檔案引數不需要是硬碟檔案路徑,整個過程可以直接在記憶體完整。

測試方法:

1、用VC呼叫CreateNamedPipe建立一個命名管道,注意開闢的空間要至少能容納1幀資料。

2、呼叫ConnectNamedPipe連線命名管道,這時程式會被掛起,直到有程序連線這個命名管道。

3、開啟命令列,到ffmpeg目錄,輸入命令列:ffmpeg -f rawvideo -pix_fmt rgb24 -s 320x240 -i 

\\.\pipe\MyPipe -f avi -s 320x240 C:\out.avi

4、這時VC程序被喚醒,ffmpeg程序掛起等待影象資料寫入。VC程序呼叫WriteFile寫影象資料到命名管道。(注意寫入的資料格式,必須跟命令列傳入的引數一致)

5、當命名管道被寫入資料時,ffmpeg自動喚醒進行編碼,編碼完一幀後繼續掛起等待下一幀資料,如此重複。