Delphi + DSPack (наложение текста на видео)

Бюджет: по договоренности
Необходимо помочь разобраться в коде, суть которого – вывод текста по вверх видео. Проблема в том, что видео проигрывается из памяти и подключение к ней фильтра CLSID_VideoMixingRenderer9, не дает результат, сама картинка черная, звук идет, такое ощущение что запускается отдельным потоком. 

Код при котором наложение текста происходит верно, и все работает как надо, только видео проигрывается не из памяти, а из файла:

CoCreateInstance(CLSID_FilterGraph, nil, CLSCTX_INPROC_SERVER, IID_IGraphBuilder, MyGraphBuilder);

CoCreateInstance(CLSID_CaptureGraphBuilder2, nil, CLSCTX_INPROC, IID_ICaptureGraphBuilder2, pCaptureGraphBuilder2);

pCaptureGraphBuilder2.SetFiltergraph(MyGraphBuilder);

CoCreateInstance(CLSID_VideoMixingRenderer9, nil, CLSCTX_INPROC, IID_IBaseFilter, FVideoRender);

MyGraphBuilder.QueryInterface(IID_IVideoWindow, pVideoWindow);

FVideoRender.QueryInterface(IID_IVMRFilterConfig9, FConfig);

FConfig.SetNumberOfStreams(1);

FVideoRender.QueryInterface(IID_IVMRMixerBitmap9, FBitmap);


MyGraphBuilder.AddFilter(FVideoRender, 'Video Mixing');

{ //////////////////// Заремарино

MyGraphBuilder.AddFilter(FileReader, 'Video Memory');

Pin:= FileReader.GetPin(0);

MyGraphBuilder.Render(Pin);

//////////////////////// }


MyGraphBuilder.RenderFile(StringToOleStr(PChar('d:\Termovolt7.avi')), '');




Если разремарить и убрать строку MyGraphBuilder.RenderFile(StringToOleStr(PChar('d:\Termovolt7.avi')), ''); то звук идет, но видео не проигрывается. Если заремарить еще строку MyGraphBuilder.AddFilter(FVideoRender, 'Video Mixing'); – то видео проигрывается нормально, но не накладывается текст.
Опубликован 28.11.2014 в 16:32

Выберите способ верификации:

Обновите страницу после прохождения верификации.