2010-11-24 11 views
7

Tengo un formulario con una vista en vivo de la señal de televisión (desde dvb-t stick). Tengo el proyecto de ejemplo "DTViewer" de http://directshownet.sourceforge.net/about.html. Ahora trato de capturar la secuencia de un archivo de película haciendo clic en un botón, pero ¿cómo? Uso C# y DirectShow.NET.Capturar una secuencia DVB-T en un archivo de película

Intenté buscar en muchos ejemplos, pero estos están hechos para videoinputs y no para dvb-t con una interfaz BDA (Broadcast Driver Architecture).

¡Ayuda!

+0

¿Cómo se configura el gráfico? – leppie

+0

tengo el proyecto de muestra de http://directshownet.sourceforge.net. el proyecto DTViewer. El gráfico incluye un filtro de demultiplexor MPEG-2 para mostrar la secuencia ... – martinhodler

Respuesta

3

No se exactamente a qué se refiere exactamente con un "archivo de película", pero puedo decirle cómo capturar todo el MUX (secuencia de transporte).

Crear un gráfico con un proveedor de red DVB-T Microsoft, You_Name_It BDA DVBT Tuner, captura You_Name_It BDA digital y demultiplexor MPEG-2 filtros.
Una vez que los conecte, enumere todos los pines de salida en MPEG-2 Demultiplexer y renderízalos. Sintoniza la frecuencia que elijas (put_TuneRequest).

En este punto, todo está listo para ejecutar el gráfico, ¡pero no lo ejecute!
Enumerar todos los filtros en el gráfico. Desconecte todos los filtros, excepto Microsoft DVBT Network Provider, You_Name_It BDA DVBT Tuner y You_Name_It BDA Captura digital.

Elimine todos estos filtros desconectados del gráfico, excepto Demultiplexor MPEG-2 (debe estar en el gráfico aunque no esté conectado). Agregue Muestra Grabber filtro y NULL Renderer filtro. Conecte Digital Capture filtre a Muestra Grabber y Muestra Grabber a NULL Renderer. Puedes ejecutar el gráfico ahora.Mediante la devolución de llamada en el filtro Sample Grabber, recibirá todo el MUX. Por supuesto, todavía hay algo de trabajo para demultiplexar los datos, pero una vez que lo haces, puedes capturar todos los programas de TV en un MUX a la vez. La forma más fácil es capturarlo en un formato TS porque el TS se está emitiendo (paquetes de 188 bytes de longitud).

+0

¡Gracias! Y por un archivo de película me refiero a un archivo como AVI, WMV o MPEG – martinhodler

+0

De nada :-) Dentro de TS se encuentra un MPEG2 o MPEG4, por lo que debería poder crear un archivo AVI o MPEG sin recompresión (sin pérdida de calidad) . Sin embargo, para WMV tendrá que descomprimir el MPEG y codificarlo nuevamente con un codificador WMV. –

+0

¿Tiene algún código de ejemplo para esto? – martinhodler

2

Me parece que VLC tiene soporte para BDA (BDA.c file reference), ¿tal vez pueda espiar algo de su código?

+0

Escribo la herramienta en C# ... necesito un contenedor (P/Invoke) ¿no existe ninguna biblioteca para .NET? pero es una buena pista. – martinhodler

1

No hay una respuesta simple a su pregunta. Comencé un proyecto de este tipo y descubrí que hay muy poco que sé sobre él, así que aquí hay algo de mi investigación.

En primer lugar, debe comprender que la tarjeta o el sintonizador dvb-t no da marcos de video en el sentido clásico, pero la decodificación se realiza en la PC, en la CPU. La tarjeta externa le proporcionará solo datos comprimidos, ya que la obtiene del aire.

A continuación: los datos que le envíen estarán en formato MPEG2 o MPEG4 Transport Stream. Que es adecuado para transmisión o transmisión, no para guardar en archivo. VLC puede reproducir TS escrito en el archivo, pero para grabar un archivo de video adecuado, tendrá que transcodificar el archivo o volver a empaquetarlo en Program Stream. Google un poco, encontrarás las diferencias.

Más - una frecuencia en el aire se compone de muchos canales, y ese embalaje del canal se llama 'mux'. Entonces, desde el sintonizador/capturador de BDA obtendrás TODOS los datos, y tendrás que demultiplexarlo manualmente o dejar que el demultiplicador BDA lo haga por ti.

Espero que sea suficiente información para comenzar, puedo postear algunos enlaces interesantes cuando llegue al teclado real.

Cuestiones relacionadas