![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
DSPack SampleGrabber
novichek © (2012-05-27 01:55:00)FilterGraph.ClearGraph;
FilterGraph.Active := false;
FilterGraph.Active := true;
FilterGraph.RenderFile(OpenDialog.FileName);
FilterGraph.QueryInterface(IID_IVideoWindow, VideoWindow);
FilterGraph.Play;
procedure SampleGrabberBuffer
begin
..
SampleGrabber.GetBitmap(B, pBuffer, BufferLen);
..
end;
при воспроизведении avi всё нормально.
при попытке воспроизвести mkv, vob в ActiveMovie Window (или владельце VideoWindow если установить) видео выводится нормально, но обрабочик граббера (SampleGrabberBuffer) даже не вызывается.
насколько я понимаю FilterGraph сам строит цепочку нужных фильтров или я не прав?
как заставить граббер обрабатывать кадры не avi?
Sapersky (2012-05-27 12:01:00) [1]SampleGrabber не поддерживает Mpeg-2 и ещё некоторые типы видео.
"The filter has the following limitations for video formats:
It does not support video types with top-down orientation (negative biHeight).
It does not support the VIDEOINFOHEADER2 format structure (format type equal to FORMAT_VideoInfo2).
It rejects any video type where the surface stride does not match the video width.
As a result, the Sample Grabber will not connect to the Video Mixing Renderer (VMR) for some video types"
http://msdn.microsoft.com/en-us/library/windows/desktop/dd377544(v=vs.85).aspx
Нужно делать свой фильтр или рендер. Скорее фильтр, если тебе нужно сохранить стандартное воспроизведение. Ищи пример самого простого фильтра обработки картинки, вместо обработки дёргай callback или ещё как-то сохраняй.