Я пытаюсь записать некоторые 4: 2: 0 необработанные данные, полученные с карты захвата, в AVI-файл.Для каждого пикселя буфер символов содержит 2 байта (16 бит).Порядок данных такой же, как у FOURCC UYVY: YUV 4: 2: 2 (выборка Y для каждого пикселя, выборка Y и V для каждого второго пикселя по горизонтали в каждой строке).Макропиксель содержит 2 пикселя в 1 u_int32.
Сначала я попробовал Videowriter OpenCV.Но это просто слишком медленно для такого огромного количества видеоданных (я записываю 2 видеопотока, каждый в формате 1080p25), поэтому я переключился на библиотеку «Видео для Windows» - Windows.Но даже этот не выполняет запись файла в режиме реального времени.Мой последний шанс - Directshow.Я хочу использовать AVI Mux и фильтры File Writer для хранения моих необработанных данных в виде AVI-файла, но я не уверен, как «дать» AVI Mux мои необработанные данные (массив символов), который содержит только видеоданные в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);
Большое спасибо и с уважением,
Валентин