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
Ese tutorial es bastante bueno. Todavía tengo que encontrar algo más que lo exponga como lo hace con todos los detalles arenosos. –