2011-06-16 13 views
6

Estoy escribiendo un servidor que en vivo transmite mpeg2-ts en HTTP y me pregunto cuál es la mejor posición para dividir una transmisión de transporte de MPEG. La transmisión se reproducirá mediante decodificadores iptv y no tengo idea de cómo se comportan estos dispositivos.dónde empezar/dividir mpeg2-ts

Me gustaría pensar que el mejor lugar para empezar es una corriente ante un cuadro I, pero el dispositivo podría necesitar el PAT y PMT paquetes antes de que comience a decodificar datos de la secuencia de vídeo ...

+0

¿Ha encontrado ninguna solución ?! Si TS contiene múltiples programas (programas de TV capturados por DVB-T), ¿cómo se puede dividir? Por ejemplo, tengo un archivo TS que contiene football + cooking + cartoon. ¿Cómo puedo dividir este archivo TS en 3 mpg? –

+0

Puedo explicar cómo hacerlo programáticamente (ver PAT y reescribirlo, tomar el PMT apropiado, buscar los identificadores de flujo, extraer solo los datos relevantes, .. y es probable que tengas que volver a numerar los paquetes) - pero si todos lo que quieres hacer es dividir, es mejor que busques una herramienta (ffmpeg?) –

Respuesta

1

Puede comenzar con cada paquete TS de 188 bytes (0x47 es el código de inicio). El decodificador MPEG salta automáticamente en el primer cuadro I. Puedes hacer trucos como lo hace MS Mediaroom con el envío de I-frames en ráfaga, pero esto requiere grandes cambios en tu cliente (y royalties de patentes).

+0

Teóricamente, sí ... en la práctica a veces pude colgar un decodificador cojo (que por cierto es bastante popular aquí) haciendo eso (No, no empiezo en ningún 0x47, sé * que es un paquete TS de inicio). También el decodificador se inicia antes del primer fotograma I, así que veo algunos fotogramas descodificados incorrectos durante medio segundo. –

+0

Algunos reproductores requieren segmentos TS autoinicializados, es decir, segmentos que comienzan con PAT/PMT e I-Frame. Por ejemplo: al reproductor Android 4.4.4 no le gusta si no hay PAT/PMT y no se decodificará en absoluto. – aergistal