2011-01-18 11 views
13

La sincronización siempre me ha fascinado, o para ser precisos: por qué los .ts pueden ser vistos sincronizados por los reproductores multimedia, mientras que el audio demultiplexado recompilado está fuera de sincronización.Sincronización audio/video, TS MPEG2; H264/AVC, entendiendo PTS en Handbrake

Así que estoy tratando de entender esto, y qué se puede hacer para prevenirlo.

He leído lo siguiente: https://trac.handbrake.fr/wiki/LibHandBrakeSync y la fuente de sync.c (también disponible en el wiki)

BitStreamTools han escrito una Teoría 101 sobre el tema también (pero no puedo vincular como Soy un nuevo usuario, lo siento)

Aunque pensé que mi comprensión de PCR/PTS era (conceptualmente) correcta, me está resultando difícil seguir el excelente papel de sincronización de A/V del freno de mano.

Mi pregunta es esta: ¿hay una explicación algo intuitiva (puede ser breve, corta o más larga, más larga) de la sincronización a/v? Si bien sé que se puede recalcular PTS de PCR si los pts de audio o video están dañados (¿discontinuidad?), El freno de mano no parece depender de esto, sino de su PTS interno. 0, + = 1/fps (~ = 5), 10, 15, ....

¿Sería posible recalcular los desplazamientos de pts y corregir los .ts (binarios) fijando todos los valores de PTS de audio y video? (e inclinando todos los DTS con el mismo desplazamiento, para que el reproductor no "se quede sin cuadros", por así decirlo), y así tenga un .ts que pueda demultiplexarse, y las pistas aisladas estén sincronizadas (si se pusieron) de nuevo juntos)?

EDITAR: ¿O no sería posible solucionar mediante el uso de PCR para recalcular todos los valores de PTS en un determinado .ts? Aunque entiendo que algunos fotogramas/audio podrían dañarse en la transmisión, por lo que no se pueden presentar correctamente, dejaré el manejo de esto (como eliminar el video si está dañado y tiene la parte de audio correspondiente, insertando x ms de silencio si el paquete de audio está dañado, etc.) para más tarde, y por el bien de la discusión presumiré que todos los cuadros están intactos. (Pero entonces los valores PTS siempre sería correcto aunque, o qué?)

Apéndice: Mi opinión sobre el papel de freno de mano A/V es la siguiente: A "espera" 100, el desplazamiento se calcula como pts vídeo (100) - pts de audio (0) - el PTS interno, para llevar el audio al mismo tiempo de presentación, dando así un desplazamiento de pts de 99. a 105, la compensación sería 105-5 = 100, no 99, pero procedemos para usar 99 como desplazamiento ya que no hay necesidad de volver a calcular (100-99 = 1. 1/fps < 100ms). En 150, el desplazamiento de pts se calcula nuevamente a medida que los ptos de video disminuyen, en lugar de aumentar ...

Estoy casi seguro de que estoy completamente equivocado al respecto, pero ¿alguien puede indicarme la dirección correcta? ¿Por favor?

  • Josh

Respuesta

9

me encontré con un muy buen tutorial llamado "Cómo escribir un reproductor de vídeo en menos de 1000 líneas".

This link hace un buen trabajo al explicar los términos.

+3

Ese tutorial es bastante bueno. Todavía tengo que encontrar algo más que lo exponga como lo hace con todos los detalles arenosos. –

17

El concepto de sincronización de audio y video es mucho más profundo. La primera lectura que recomendaría es el siguiente artículo.

http://downloads.bbc.co.uk/rd/pubs/reports/1996-02.pdf

No repetiré todo aquí - pero en esencia, cada marcas de tiempo de los registros del codificador y lo marca en la respectiva Audio y Vídeo. Más tarde, cuando el decodificador lo reproduce, hace dos cosas: una, asegura que el propio reloj del decodificador está "esclavizado" con el reloj del codificador, y dos asegura que cada imagen se presente en la pantalla y el marco de audio se presente exactamente el tiempo ocurre Esta es la única y mejor forma en que el audio permanece sincronizado con el video. Estas marcas de tiempo se llaman valores PTS/DTS que tienen una resolución de reloj de 90 kHz.

Comprenda que con el tiempo los relojes se tuercen, pero dado que solo se hace referencia a la hora exacta, la reproducción del decodificador exactamente en el mismo orden de tiempo.

Ahora la principal preocupación sigue siendo que el reloj del decodificador necesita permanecer en control/sincronización del reloj del codificador. Lo primero que se hace en MPEG es usar una mayor precisión a 27 MHz, (300 veces mayor). Además, esto debe permanecer constante durante cualquier ruta de transmisión en el medio. (esto se llama proceso de recuperación del reloj).

A continuación hay otro par de buenos documentos que explica cómo funciona el proceso de recuperación/sincronización del reloj.

https://www.soe.ucsc.edu/sites/default/files/technical-reports/UCSC-CRL-98-04.pdf
http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.86.1016&rep=rep1&type=pdf

Este trabajo final pone cada cosa en conjunto mucho más agradable.
http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.50.975&rep=rep1&type=pdf

Recuerde - la sincronización de audio y vídeo basada en PCR y PTS/DTS es lo que hacen emisión de televisión digital es muy estricto y es muy diferente de cualquier otro método de transmisión utilizados en streaming de Internet. Esto es crucial para que funcione en tiempo real las 24 horas del día, los 7 días de la semana.

+0

El segundo enlace está muerto. – pockethook

Cuestiones relacionadas