同期は常に私を魅了してきました。正確には、メディアプレーヤーが.tsを同期して表示できるのに、再アセンブルされたオーディオとビデオが同期していないのはなぜですか。
だから私はこれを理解しようとしています、そしてそれを防ぐために何ができるか。
私は以下を読みました: https : //trac.handbrake.fr/wiki/LibHandBrakeSyncとsync.cのソース(wikiでも入手可能)
BitStreamToolsはこのテーマについてもTheory101を書いています(しかし、私は新しいユーザーなのでリンクできません、申し訳ありません)
PCR / PTSの理解は(概念的には)正しいと思いましたが、ハンドブレーキの優れたA/V同期用紙を追いかけるのに苦労しています。
私の質問はこれです:a / v同期のいくぶん直感的な(短い、短い、または長い、長い場合があります)説明はありますか?オーディオまたはビデオのptsが破損している場合(不連続性?)、PCRからPTSを再計算できることは知っていますが、ハンドブレーキはこれに依存していないようですが、内部PTSに依存しています。0、+ = 1 / fps(〜= 5)、10、15、...。
すべてのオーディオとビデオのPTS値を修正することで(そして同じオフセットですべてのDTSをスキューすることで)、ptsオフセットを再計算し、.ts(バイナリ)を修正することは可能でしょうか?話す)、したがって、デマックスできる.tsがあり、分離されたトラックは同期されます(一緒に戻された場合)?
編集:または、PCRを使用して特定の.ts内のすべてのPTS値を再計算することによって修正することはできませんか?一部のフレーム/オーディオが放送中に破損して正しく表示されない可能性があることは理解していますが、これの処理はそのままにしておきます(破損していて対応するオーディオ部分がある場合はビデオを削除し、オーディオパッケージが破損しているなど)後で説明しますが、説明のために、すべてのフレームが無傷であると想定します。(しかし、PTS値は常に正しいのでしょうか、それとも何ですか?)
付録:ハンドブレーキA / Vペーパーに関する私の見解は次のとおりです。「期待される」100では、オフセットはビデオポイント(100)-オーディオポイント(0)-内部PTSとして計算され、オーディオを同じプレゼンテーションにします。時間、したがって、99のptsオフセットを与えます。105では、オフセットは99ではなく105-5 = 100になりますが、再計算する必要がないため、オフセットとして99を使用します(100-99 = 1. 1 / fps < 100ms)。150では、ビデオptsが増加するのではなく、減少するにつれて、ptsオフセットが再度計算されます...
私はこれについて完全に間違っているとほぼ確信していますが、誰かが私を正しい方向に向けることができますか?
- ジョシュ