グラフィカルな DTS および PTS

グラフィカルな DTS および PTS

FFmpeg には、DTS (Decoding Time Stamp、デコード タイムスタンプ) と PTS (Presentation Time Stamp、表示タイムスタンプ) の 2 種類のタイムスタンプがあります。
ビデオは下図のように I、B、P などのフレームにエンコードされているため、
ビデオを I、B、P にエンコードする
I、B、P フレームがあるとすると、送信と表示はどうなるでしょうか?
表示の順に送信する場合:送信順序
は I->B>P です

送信が順序どおりではなく、デコード順序どおりの場合:
送信順序は I->P->B です。

どのような方法で送信・表示する場合でも、Bフレームを取得したら、そのフレームをいつ表示するかを相手に伝える必要があるため、
プレゼンテーションタイムスタンプとデコードタイムスタンプというPTSとDTSが存在します。

PTS は相手にこのフレームをいつ表示するかを指示し、DTS はこのフレームをいつデコードするかを指示します。

B フレームがない場合、PTS と DTS は同じになります。B
ここに画像の説明を挿入
フレームがある場合、PTS と DTS は一致しません。
ここに画像の説明を挿入
たとえば、ビデオが 25 フレーム/秒の場合、ミリ秒単位で計算されます。1000/25=40ms 、最初の Accumulate on Frame pts で。
オーディオは、サンプリング レートとサンプル数 (たとえば、1024 サンプル、44100 サンプリング レート、ミリ秒) に従って同じ時間ベースで蓄積されます。
1000*1024/44100=23.21995464852607709750566893424 ms
基本的な理論はこのようになりますが、実際の同期はそれほど単純ではありません。一連の切断、切断、弱いネットワーク、フレーム損失、フレームスキップなどが同期を妨げます。特定の状況では、マスターがより堅牢な同期手段を提供するまで待ちます。

固定フレームレート

1.ビデオのタイムスタンプ

pts = inc++ *(1000/fps); 其中inc是一个静态的,初始值为0,每次打完时间戳inc加1. 在ffmpeg,中的代码为 pkt.pts= m_nVideoTimeStamp++ * (m_VCtx->time_base.num * 1000 / m_VCtx->time_base.den);

2. オーディオのタイムスタンプ

pts = inc++ * (frame_size * 1000 / sample_rate) 在ffmpeg中的代码为 pkt.pts= m_nAudioTimeStamp++*(m_ACtx>frame_size*1000/m_ACtx>sample_rate);
サンプリング周波数とは、アナログ音波波形をデジタル化するときに、1 秒あたりに音波の振幅サンプルが取得される回数を指します。人間の正常な聴覚の周波数範囲は約20Hz~20kHzですが、ナイキストサンプリング理論によれば、音が歪まないためにはサンプリング周波数は約40kHzである必要があります。一般的に使用されるオーディオ サンプリング周波数は、8kHz、11.025kHz、22.05kHz、16kHz、37.8kHz、44.1kHz、48kHz などです。より高いサンプリング周波数を使用すると、DVD の音質も実現できます。サンプリングを使用して AAC オーディオをデコードします。 44.1kHzのレートでは、1フレームのデコード時間は23.22ミリ秒以内に制御する必要があります。背景知識:
(AAC のオリジナル フレームには、一定期間の 1024 個のサンプルと関連データが含まれます) 分析:

  1. AAC
    オーディオフレームの再生時間=AAC1フレームに相当するサンプリングサンプル数/サンプリング周波数(単位はs) 1フレームあたり1024サンプル。サンプリングレートは Samplerate 44100KHz、1 秒あたり 44100 サンプルなので、式によれば、オーディオ フレームの再生時間 = 1 AAC フレームに対応するサンプリング サンプル数 / サンプリング周波数となり、現在の 1 AAC フレームの再生時間は = 1024*1000000/44100= 22.32ms(単位はms)
  2. MP3
    mp3 の各フレームは 1152 バイトであり、次のようになります。frame_duration
    = 1152 * 1000000 / sample_rate
    たとえば、sample_rate = 44100HZ の場合、計算される継続時間は 26.122ms です。これは、よく聞く MP3 の各フレームの再生時間が 26ms 原点に固定されていることです。
    2. 可変フレーム レートのキャプチャ カードやカメラが多数ありますが、キャプチャを実行するときは明らかに 25FPS に設定されていますが、実際に収集されたデータがコールバックされると、間隔が 40 ミリ秒ではなく 50 ミリ秒であることがわかります。 、60、さらには 100 の時間間隔。これにより、エンコード後のタイムスタンプが非常に困難になります。

参考記事:
リンク: https: //www.cnblogs.com/linyilong3/p/9940230.html I、P、 B
フレームとPTS、DTSの関係:https: //www.cnblogs.com/qingquan/archive/ 2011/07/27/2118967.html .
DTS と PTS の説明: https://blog.csdn.net/ai2000ai/article/details/77367481

おすすめ

転載: blog.csdn.net/qq_39825430/article/details/116229082
DTS
おすすめ