2011-01-18 9 views
13

La sincronizzazione mi ha sempre affascinato, o per essere precisi: perché un .ts può essere visualizzato in sincrono da lettori multimediali, mentre l'audio demuxed + video è ricomposto è fuori sincronoSincronizzazione audio/video, TS MPEG2; H264/AVC, comprensione PTS nel freno a mano

Quindi sto cercando di capire questo e cosa si può fare per impedirlo.

Ho letto quanto segue: https://trac.handbrake.fr/wiki/LibHandBrakeSync e la fonte di sync.c (disponibile anche sul wiki)

BitStreamTools hanno scritto una Teoria 101 sull'argomento anche (ma non posso collegare come Sono un nuovo utente, mi spiace)

Mentre pensavo che la mia comprensione di PCR/PTS fosse (concettualmente) corretta, ho difficoltà a seguire l'eccellente carta di sincronizzazione A/V del freno a mano.

La mia domanda è questa: c'è una spiegazione un po 'intuitiva (può essere breve, breve o lunga, a lungo) della sincronizzazione v/v? Mentre so che si può ricalcolare PTS da PCR se i pts audio o video sono corrotti (discontinuità?), Il freno a mano non sembra fare affidamento su questo, ma sul suo PTS interno. 0, + = 1/fps (~ = 5), 10, 15, ....

Sarebbe possibile ricalcolare gli offset PTS e correggere il .ts (binario) fissando tutti i valori PTS audio e video (e distorcendo tutti i DTS con lo stesso offset, quindi il lettore non "esaurisce i frame", per così dire), e quindi ha un .ts che può essere demulato, e le tracce isolate devono essere sincronizzate (se messe di nuovo insieme)?

MODIFICA: Oppure non sarebbe possibile risolvere utilizzando PCR per ricalcolare tutti i valori PTS in un dato .ts? Mentre capisco che alcuni frame/audio potrebbero essere danneggiati durante la trasmissione, quindi non possono essere presentati correttamente, lascerò la gestione di questo (ad esempio rimuovendo il video se è danneggiato e ha una parte audio corrispondente, inserendo x ms silenzio se il pacchetto audio è danneggiato, ecc.) in seguito, e per motivi di discussione presumo che tutti i frame siano intatti. (Ma poi i valori PTS sarebbe sempre corretto, però, o cosa?)

Appendice: Il mio introito sulla carta freno a mano A/V è questa: A "previsto" 100, è calcolato come punti di video (l'offset 100) - audio pts (0) - il PTS interno, per portare l'audio allo stesso tempo di presentazione, dando così un offset pts di 99. a 105 l'offset sarebbe 105-5 = 100, non 99, ma procediamo utilizzare 99 come offset poiché non è necessario ricalcolare (100-99 = 1. 1/fps < 100 ms). A 150, l'offset pts è calcolato di nuovo come i punti video sta diminuendo, al contrario di aumentare ...

Sono quasi sicuro di aver sbagliato completamente su questo, ma qualcuno può indicarmi la giusta direzione, per favore?

  • Josh

risposta

9

Ho trovato un ottimo tutorial intitolato "Come scrivere un lettore video in meno di 1000 linee".

This link fa un buon lavoro di spiegazione dei termini.

+3

Questo tutorial è abbastanza buono. Devo ancora trovare qualcos'altro che lo esponga come fa con tutti i dettagli grintosi. –

17

Il concetto di sincronizzazione di Audio Video è molto più profondo. La prima lettura che vorrei raccomandare è la seguente carta.

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

Non voglio ripetere tutto ciò che qui - ma essenzialmente, ogni record encoder timestamp e timbri sul rispettivo audio e video. Più tardi, quando il decodificatore la riproduce, fa due cose: una, assicura che l'orologio del decodificatore sia "schiavizzato" con l'orologio dell'encoder, e due assicura che ogni immagine sia presentata sullo schermo e la cornice audio presentata all'oratore esattamente quando quella rispettiva il tempo si verifica Questo è solo il modo migliore in cui l'audio rimane sincronizzato con il video. Questi timestamp sono chiamati valori PTS/DTS che sono di risoluzione del clock a 90 kHz.

Capire che gli orologi nel tempo differiscono, ma poiché viene fatto riferimento solo all'ora esatta, il decodificatore viene riprodotto esattamente nello stesso ordine di tempo.

Ora il problema principale rimane che l'orologio del decodificatore deve rimanere in controllo/sincronizzazione dell'ora dell'encoder. La prima cosa fatta in MPEG sta usando una maggiore precisione a 27 MHz, (300 volte più alta). Inoltre, questo deve rimanere coerente durante qualsiasi percorso di trasmissione nel mezzo. (questo è chiamato processo di recupero dell'orologio).

Di seguito sono un altro paio di buoni documenti che spiegano come funziona il processo di recupero/sincronizzazione dell'orologio.

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

Questo documento finale mette ogni cosa insieme molto bene.
http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.50.975&rep=rep1&type=pdf

Ricordate - la sincronizzazione audio video basato PCR e PTS/DTS è ciò che rende trasmissione televisiva digitale è molto rigorosi ed è molto diverso da tutti gli altri metodi di streaming utilizzati in streaming su Internet. Questo è fondamentale per far funzionare lo streaming 24x7.

+0

Il secondo link è morto. – pockethook