По моим previous post я пытался использовать sampleGrabber, который будет захватывать кадры из видео файлов и затем вызывает обратный вызов функции:Как сделать запись видео с помощью текстового наложения с помощью Directshow и C#?
Type comType = Type.GetTypeFromCLSID(new Guid("e436ebb3-524f-11ce-9f53-0020af0ba770"));
IGraphBuilder graphBuilder = (IGraphBuilder)Activator.CreateInstance(comType);
comType = Type.GetTypeFromCLSID(new Guid("C1F400A0-3F08-11d3-9F0B-006008039E37"));
ISampleGrabber sampleGrabber = (ISampleGrabber)Activator.CreateInstance(comType);
graphBuilder.AddFilter((IBaseFilter)sampleGrabber, "samplegrabber");
AMMediaType mediaType = new AMMediaType();
mediaType.majorType = MediaType.Video;
mediaType.subType = MediaSubType.RGB24;
mediaType.formatType = FormatType.VideoInfo;
sampleGrabber.SetMediaType(mediaType);
int hr = graphBuilder.RenderFile(@"D:\test.wmv", null);
IMediaEventEx mediaEvent = (IMediaEventEx)graphBuilder;
IMediaControl mediaControl = (IMediaControl)graphBuilder;
IVideoWindow videoWindow = (IVideoWindow)graphBuilder;
IBasicAudio basicAudio = (IBasicAudio)graphBuilder;
videoWindow.put_AutoShow(OABool.False);
basicAudio.put_Volume(-10000);
sampleGrabber.SetOneShot(false);
sampleGrabber.SetBufferSamples(true);
//the same object has implemented the ISampleGrabberCB interface.
//0 sets the callback to the ISampleGrabberCB::SampleCB() method.
sampleGrabber.SetCallback(this, 0);
mediaControl.Run();
EventCode eventCode;
mediaEvent.WaitForCompletion(-1, out eventCode);
Marshal.ReleaseComObject(sampleGrabber);
Marshal.ReleaseComObject(graphBuilder);
обратного вызова функции
public int SampleCB (double sampleTime, IMediaSample mediaSample)
{
//WHAT TO DO HERE.
}
Что я сделать в функции обратного вызова, чтобы добавить наложение на каждый кадр, а затем все видео получит магазин с наложением текста?
Есть ли способ добавить текст наложения при записи видео?
i woukd хотел бы пойти с DMO с любым образцом кода? Я использую [этот] (http://stackoverflow.com/questions/10847477/text-overlay-when-video-is-recording-using-directshow-and-c-sharp) код для записи? по крайней мере, давайте шаги? Спасибо за ваш ответ .. – Amogh
В образце DirectShowNet есть образец для видео-Dmo: DMOFlip [ссылка] (http://directshownet.sourceforge.net/about.html). Это должно быть хорошей отправной точкой, потому что этот образец также содержит справочный файл, как написать dmo. – CPlusSharp
Большое спасибо, сэр, я прохожу через этот образец. – Amogh