How to do video recording with Text overlay using Directshow and C#? -
according previous post have tried use samplegrabber grab frames video file , calls call function:
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 isamplegrabbercb interface. //0 sets callback isamplegrabbercb::samplecb() method. samplegrabber.setcallback(this, 0); mediacontrol.run(); eventcode eventcode; mediaevent.waitforcompletion(-1, out eventcode); marshal.releasecomobject(samplegrabber); marshal.releasecomobject(graphbuilder); call function
public int samplecb ( double sampletime, imediasample mediasample ) { //what here. } what do in call function add overlay on each frame , whole video store overlay text?
is there way add overlay text when video recording?
the best way add text-overlay during recording implement dmo or directshow transform-filter. prefer dmo, because simpler , can reuse later in mediafoundation.
you set rgb24 or rgb32 input-type dmo/filter , can draw gdi want on each frame.
in graph looks way: videosource -> dmo -> asf writer.
Comments
Post a Comment