En el sistema MPEG-2, el proceso de combinación/separación de información se denomina multiplexación/demultiplexación del sistema. La información estándar para la transmisión real se genera mediante la multiplexación de secuencias ES de vídeo, audio y datos auxiliares. La transmisión se llama MPEG-2 Transport Stream (TS: TransportStream). Dependiendo de la calidad de los medios de transmisión, MPEG-2 define dos flujos de información compuestos: flujo de transporte (TS) y flujo de programa (PS: ProgramStream). La diferencia entre el flujo TS y el flujo PS es la estructura del paquete del TS. El flujo tiene una longitud fija. La estructura del paquete del flujo PS es de longitud variable.
Esta diferencia estructural entre los paquetes PS y los paquetes TS da como resultado su diferente resistencia a los errores de transmisión y, por tanto, sus entornos de aplicación también son diferentes. Dado que el flujo de código TS adopta una estructura de paquete de longitud fija, cuando un error de transmisión destruye la información de sincronización de un determinado paquete TS, el receptor puede detectar la información de sincronización en el paquete detrás de él en una posición fija, restaurando así la sincronización y evitando información. pérdida. Dado que la longitud de los paquetes PS cambia, una vez que se pierde la información de sincronización de un determinado paquete PS, el receptor no puede determinar la posición de sincronización del siguiente paquete, lo que provocará una desincronización y provocará una pérdida grave de información. Por lo tanto, cuando el entorno del canal es relativamente severo y los errores de transmisión son altos, generalmente se usan flujos de código TS; cuando el entorno del canal es bueno y los errores de transmisión son bajos, generalmente se usan flujos de código PS, como los DVD; Dado que el flujo de código TS tiene una gran capacidad para resistir errores de transmisión, los flujos de código MPEG-2 actualmente transmitidos en los medios de transmisión utilizan básicamente el flujo de código TS.
TS/PES es el formato estándar definido por MPEG. Tanto MPEG1 como MPEG2 proporcionan definiciones que incluyen la sintaxis de flujo de bits. Lo que llamamos TS/PS se define aquí. Por lo tanto, MPEG sigue siendo indispensable cuando se habla de TS/PS, aunque los datos AVS e IP también se pueden encapsular en TS, porque la definición de TS/PES en MPEG permite encapsular otros datos.
Aunque es posible transmitir flujos de código de diferentes formatos de codificación a través de TS/PS sin cambios, esto es de hecho una utilización o expansión de MPEG. Normalmente, al encapsular diferentes tipos de datos, necesitamos agregar descripciones estándar (si las hay) o personalizadas a TS/PES y, en algunos casos, en principio, debemos usar las descripciones especiales definidas por MPEG, TS/PES. No siempre transparente. .
En pocas palabras, si la transmisión ps (utilizada principalmente en DVD) pierde un poco de secuencia de código en el medio, el resto no se puede reproducir y si la transmisión TS (DVB-T, DMB-; TH, etc.) Si se interrumpe el flujo de código, puede comenzar a decodificar nuevamente en cualquier momento, sin importar cómo lo mire.
------------------------------------------- -- ---
PS stream:
El formato MPEG2 en los programas de DVD es MPEG2-PS, cuyo nombre completo es Program Stream, o PS stream para abreviar. El nombre completo de TS es Transport Stream. MPEG2-PS se utiliza principalmente para programas almacenados con una duración fija, como películas en DVD, mientras que MPEG-TS se utiliza principalmente para la transmisión de programas en tiempo real, como programas de televisión transmitidos en tiempo real.
¿Cuáles son las principales diferencias entre estos dos formatos? Si corta la primera parte del archivo VOB en el DVD (o simplemente los datos están dañados), no se decodificará el archivo completo. Sin embargo, los programas de TV se pueden decodificar (ver) cada vez que encienda el televisor, por lo tanto. La característica del formato MPEG2-TS es que requiere que cualquier segmento del flujo de vídeo pueda decodificarse de forma independiente.
------------------------------------------- ----- ---
Transmisión TS:
La transmisión TS se compone de muchos tipos diferentes de paquetes. Estos paquetes de datos tienen un tamaño de 188 bytes. Hay dos partes, encabezado del paquete y carga. El encabezado del paquete incluye información de sincronización, información del paquete, etc., mientras que la carga son los datos transmitidos, y estas cargas pueden formar un flujo PES o un flujo privado y otros flujos de datos. p>
Por ejemplo, una secuencia TS incluye 100 paquetes, de los cuales 20 son paquetes de información PSI y 80 son paquetes de datos PES. Solo hay un conjunto de secuencias de programa en esta secuencia TS y no contiene secuencias privadas, por lo que. Las conexiones de carga de estos 80 paquetes PES están juntas, hay 2 flujos PES (video, audio). Si la longitud de la carga útil de cada paquete PES es de 100 bytes, entonces la longitud máxima de estos dos flujos PES es 8000 bytes. La longitud del flujo PES del video es de 6000 bytes. El flujo PES del video de 6000 bytes está compuesto por paquetes PES. El paquete PES no tiene una longitud fija, pero está determinada por los datos en el encabezado del paquete. De manera similar al método de descomposición del flujo TS, los paquetes PES se encapsulan a la inversa en paquetes, en los que se debe agregar PACKET_HEAD, SYSTEM_HEAD y otra información. Por lo tanto, el programa realizado la última vez no fue una conversión TS->PS, sino un conjunto de programas filtrados. a partir de una secuencia TS compleja El proceso de construcción de una secuencia TS simple.
--------------------- ------ -------------
Conversión de archivos mpeg-ts y mpeg-ps
Los archivos mpeg2 se entregan en paquetes de datos, Ambos tienen 188 bytes y son un paquete, pero como flujo de transporte y flujo de programa, la estructura organizativa del paquete sigue siendo diferente. Como flujo de transporte, contiene muchos tipos de paquetes (en realidad, no es el tipo de paquete). , pero diferentes tipos de paquetes). Se utilizan muchos tipos de datos), como PAT, EIT, TDT, TOT y PMT con PID 0x0000, y otras tablas o paquetes diferentes. El flujo del programa contiene relativamente pocos, siempre y cuando. contiene paquetes PAT, PMT y PES que contienen audio y video. Por lo tanto, en la conversión de TS y PS, la conversión de TS->PS es relativamente simple. Simplemente elimine los paquetes relativamente inútiles y modifique las tablas PAT y PMT. /p>
Por ejemplo, el almacenamiento DVB-T MPEG2 que estoy haciendo ahora es obtener primero el paquete de datos comprimido MPEG2 (paquete completo, incluida toda la información como sincronización, etc., ***188 bytes), en que contiene paquetes de datos de audio y video (los dos se distinguen por diferentes PID). Cuando se almacena como una secuencia PS, se debe crear una nueva tabla PAT y PMT y agregarla a la secuencia PS. modificado, es decir, el valor de PID que apunta a las transmisiones de audio y video en PMT debe ser el PID de los paquetes de datos de audio y video que se almacenarán. Esto completa la conversión de TS->PS.
En. En resumen: primero realice el filtro TS, conserve las transmisiones de audio y video correspondientes al programa que se va a almacenar y elimine todos los demás paquetes. Luego cree una nueva tabla PAT y PMT, a la que deben apuntar los punteros de las transmisiones de audio y video. los PID de las transmisiones de audio y video almacenadas. De esta manera se completa la conversión.
Preguntas: 1. Problemas de sincronización de audio y video. En otras palabras, ¿en qué proporción se deben transmitir de forma cruzada estos dos paquetes? ¿Cuántos paquetes de video se deben enviar en el medio de un paquete de audio? Si esta relación no se controla bien, es fácil que el audio y el video no estén sincronizados.
2. Para nuestro PAT ficticio. ¿A qué frecuencia se debe enviar la tabla PMT? En otras palabras, ¿cuántos paquetes PES se deben enviar? Después de eso, ¿qué pasa con el envío de un paquete PSI? Parece que no hay problemas durante la reproducción. .
3. Aunque el método que estoy usando ahora resuelve el problema de almacenar y luego reproducir, parece que la conversión TS->PS no está implementada. Lo que se implementa es el filtrado del TS. secuencia, es decir, convertir una secuencia TS que contiene múltiples conjuntos de programas en una secuencia TS que contiene solo un conjunto de programas.
, No sé si esto es correcto.
4. Otro problema importante es que para los paquetes que transmiten información PES en el flujo TS, ¿cómo forman los datos en la información de carga el flujo PES? Debe quedar aclarado a través de la información de control en la parte del encabezado, por lo que debes leer el documento con atención.