我試圖將從捕獲卡接收的4:2:0 rawdata寫入AVI文件。對於每個像素char緩衝區包含2個字節(16位)。數據的順序與FOURCC UYVY:YUV 4:2:2相同(每個像素Y採樣,每行水平每隔一個像素採樣一次U和V)。一個macropixel包含1個u_int32中的2個像素。通過C++中的DirectShow將YUV-Rawdata寫入AVI文件
首先我嘗試了OpenCV Videowriter。但是這對於這麼大量的視頻數據來說太慢了(我正在捕獲2個視頻流,每個視頻流都是1080p25格式),所以我轉而使用Windows的「Video for Windows」庫。但即使這樣,也不會實時進行文件寫入。我最後的機會是Directshow。我想用AVI Mux和File Writer Filters將我的原始數據存儲爲AVI文件,但我不知道如何「給」AVI Mux我的原始數據(char數組),它只包含視頻數據UYVY順序和沒有音頻。也許你可以給我一個建議。這是我有什麼,直到如今:
CoInitialize(NULL);
IGraphBuilder*pGraph= NULL;
CoCreateInstance(CLSID_FilterGraph, NULL,CLSCTX_INPROC_SERVER,IID_IGraphBuilder, (void **)&pGraph);
IMediaControl*pMediaControl= NULL;
pGraph->QueryInterface(IID_IMediaControl,(void **)&pMediaControl);
ICaptureGraphBuilder2 *pCapture= NULL;
CoCreateInstance(CLSID_CaptureGraphBuilder2, NULL,CLSCTX_INPROC,IID_ICaptureGraphBuilder2, (void **)&pCapture);
IBaseFilter *pMux;
pCapture->SetOutputFileName(&MEDIASUBTYPE_Avi,L"Test.avi",&pMux,NULL);
IBaseFilter *pCap;
pCapture->RenderStream(&PIN_CATEGORY_CAPTURE, &MEDIATYPE_Video,pCap,NULL,pMux);
THX了很多和問候,
瓦倫丁
有時簡單的解決方案是最好的^^。多謝。使用RAID解決了這個問題。問候 – user1213697 2012-02-16 15:20:16