2

問題 :

  1. WiFi + udp ネットワークを介したライブ オーディオ ビデオ ストリーミング。
  2. ストリーム: Mpeg2Ts
  3. プレーヤー フレームワーク: gstreamer。
  4. パイプライン Appsrc ----> tsdemuxer -----> audio-queue---->faad デコーダー--->alsasink - ----->video-queue->vpudecoder ---->videosink
  5. オーディオ デバイスは、1 秒あたり 48000 サンプルを処理するように構成されています。
  6. 送信者のクロックは受信者のクロックよりも高速であり、ストリームと受信者のシステム クロックで受信する pcr 値を追跡することでこの情報を取得します。1 時間後、送信側と受信側のクロックに 8 秒の差があります。
  7. したがって、問題は、送信者と受信者の間のこの待ち時間が時間とともに増加し続けるため、送信者が受信者のクロックに対して 1 秒でより多くのサンプルを送信することです。
4

1 に答える 1

2

クロック スキューは、GStreamer の同期メカニズムとオーディオ シンク基本クラス内のスキュー ロジックによって自動的に処理される必要があります。

送信者と受信者の間の遅延が増加するという問題を解決するには、TS ストリーム内のタイムスタンプに依存するのではなく、入力に適切にタイムスタンプを付ける必要があります (これは送信者のクロックに基づいているため、あなたの側では間違っています)。そのためには、最新の GStreamer バージョンを使用し、appsrc で do-timestamp=true および format=time を設定するだけで十分な場合があります。

于 2014-12-29T09:57:15.627 に答える