Запись файла .wmv с использованием фильтра WMA sf

Я пытаюсь создать выходной файл .wmv, используя фильтр записи WM Asf. Вот мой код.

IBaseFilter* pASFWriter; CoCreateInstance(CLSID_WMAsfWriter,NULL,CLSCTX_INPROC_SERVER,IID_IBaseFilter,(void**) (&pASFWriter));
pGraphBuilder->AddFilter(pASFWriter,L"FileWriter");
IFileSinkFilter *pSink2=NULL;
pASFWriter- >QueryInterface(IID_IFileSinkFilter,(void**)&pSink2); pSink2->SetFileName(OUTFILENAME,NULL);

Все вышеперечисленное возвращает S_OK, однако файл не создается. Я не могу понять, почему это так?


person Manish    schedule 09.06.2010    source источник


Ответы (1)


Все, что вы здесь делаете, это создаете фильтр DirectShow и настраиваете его для записи в файл. Ничего не произойдет, пока фильтр не будет подключен к другим фильтрам, которые снабжают его данными, и график не будет запущен. Файл не будет создан, пока не будут получены первые действительные данные.

Дополнительные сведения см. в этом разделе MDSN. .

person Stu Mackellar    schedule 10.06.2010
comment
Что ж, я попробовал это. На самом деле я хочу обрезать файл .wmv в файлы .wmv меньшей продолжительности. Вот что я делаю: Фильтр источника-> Фильтр захвата образцов-> WMA sf записывающий. Последние 2 соединены двумя контактами (видео и аудио). Затем я указываю желаемую продолжительность, используя IMediaPostion для времени запуска и остановки. Затем я запускаю график. Все остальное возвращает S_OK, но команда запуска графика возвращает E_FAIL.I не знаю, почему это происходит - person Manish; 11.06.2010