ストリーミング寺子屋

音声・動画のストリーミング機能を
開発するエンジニアのための
実践的なナレッジベース

【Streaming-4】長時間配信時に画像の表示が滲みます。確認するポイントを教えて下さい。

Iフレームが落ちていないか

長時間配信で表示(再生)の滲みが発生していることから、少なくともIフレームが落ちていると考えられます。Iフレームは定期的に配信されており、フレーム落ち等による画像の乱れを正常に戻すキーフレームとなりますが、Iフレーム自体がデコードできていない状態と考えられ、まず、Iフレームがデコーダーに渡されているかを確認して下さい。

Iフレームがデコーダーに渡されない要因

Iフレームがデコーダに渡されない要因として次のものが考えられます。

1.受信バッファが小さくIフレームを受信できていない

Iフレームは完全に復号可能なフレームのため、サイズが大きくなります。
Iフレームのサイズを確認し、適切な受信バッファを用意する必要があります。

2.タイムスタンプに起因した問題で、受信したIフレームをデコーダーに渡せていない

RTPで受信したフレームは、タイムスタンプの情報を元にした再生時刻でデコードし再生します。しかし、以下の要因で再生したい時刻を過ぎてしまうケースが考えられます。これらは、実環境でパケットをキャプチャーすることで確認できます。

  • 配信にゆらぎがあり、受信バッファから溢れてしまう
  • 配信されるパケットのタイムスタンプが適切に設定されていない
  • ネットワーク経路の問題で、再生時刻を過ぎて受信が行われた

その他の注意点

また、RTPはリアルタイム性を維持するために受信したフレームを破棄する処理を行う場合があります。Iフレームは削除しない等の実装の対応も検討する必要があります。
表示(再生)の滲みは、静止状態の被写体では問題の発生に気づきにくい場合があります。
必ず、動きのある被写体で確認して下さい。

Q&A

製品情報