Programación Específica > DirectX

 Problema Con Isamplegrabber

(1/1)

AiTdX:
Uso ISampelGrabber para reproducir videos puesto que necesito realizar capturas. Funciona perfectamente con toda clase de archivos excepto con algunas .avi. Al realizar IMediaControl.Stop se queda colgado.

Así construyo el grafo y configuro el ISampleGrabber
Mi sospeche se halla en que el problema se halla al establecer caracteristicas de flujo

--- Código: Text ---//// Construimos el grafo de filtros//void ConstruirGrafoFiltros(Control controlVideo){try{// get the interfaces neededgb = (IGraphBuilder)new FilterGraph();mc = (IMediaControl)gb;me = (IMediaEventEx)gb;mp = (IMediaPosition)gb; me.SetNotifyWindow(controlVideo.Handle, WM_GRAPHNOTIFY, IntPtr.Zero); // creamos el filtro ISampleGrabber y lo configuramos// usamos este filtro para llevar a cabo las capturassb = (ISampleGrabber)new SampleGrabber();this.ConfigurarSampleGrabber(sb); gb.AddFilter((IBaseFilter)sb, "SampleGrabber"); // usamos conexion inteligente para el restogb.RenderFile(nomFic, null); // establecemos algunas propiedades del videobv = (IBasicVideo)gb;bv.GetVideoSize(out ancVid, out altVid); this.Propietario(controlVideo);this.ObtenerStride(); // run arrancamos el grafomc.Run();}catch (Exception ex) { MessageBox.Show(ex.Message); }} //// configuracion del SampleGrabber//void ConfigurarSampleGrabber(ISampleGrabber sampGrabber){AMMediaType media; // establecemos caracteristicas del flujomedia = new AMMediaType();media.majorType = MediaType.Video;media.subType = MediaSubType.RGB24;media.formatType = FormatType.VideoInfo; //media.formatType = FormatType.VideoInfo2;//media.formatType = FormatType.MpegVideo;//media.formatType = FormatType.Mpeg2Video;//FormatType.DvInfo // asociamos caracteristicas a filtrosb.SetMediaType(media); DsUtils.FreeAMMediaType(media);media = null; // llamamos a BufferCBsb.SetCallback(this, 1);} 
Gracias por adelantado

Navegación

[0] Índice de Mensajes

Ir a la versión completa