ライブ配信でSEI Message応用について考える
場面
ライブ配信中に企画から視聴側と配信側が同時に行動することが求められる場面があり、この実現に頭を悩ませました。特に困難なのは視聴側に存在する遅延で、HLSでは6秒以上、LHLSでは2~3秒の遅延がありますが、WebRTCを除くとこれを解決するのが難しいです。一般的な解決策として、視聴側でWebSocketを用いたデータ通信を行い、イベント発火に一定の遅延を加える方法があります。しかし、これでもユーザーのネットワーク状況によってはズレが発生します。そこで、H.264/HEVCのSEIメッセージを利用する方法を考えてみました。
Tencent cloud SDK提供した使用例
-
ライブクイズ:配信者はSEIメッセージを使用して、視聴者に問題を送信することができます。SEIにより、音声、ビデオ、および問題間の同期を保証することができます。
-
カラオケ:配信者はSEIメッセージを使用して、リアルタイムで視聴者に歌詞を表示することができます。効果はビデオエンコーディングの品質低下の影響を受けません。
-
オンライン教育:配信者はSEIメッセージを使用して、リアルタイムでスライド上のポインターやスケッチを視聴者に表示することができます。
参考URL: 16. Send SEI messages
SEI Messageとは
SEIメッセージ(補足的強化情報)は、H.264/HEVCビデオコーディング標準において定義された機能の一つで、ビデオストリーム内に追加的な情報を埋め込むために使用されます。この情報はビデオのデコードや表示に直接必要なものではありませんが、ビデオコンテンツの理解や利用を向上させるために役立ちます。
主なSEI Message
-
バッファ情報(Buffering Period SEI Message):デコーダーのバッファサイズを指示し、ビデオのスムーズな再生を保証し、カクつきを減少させます。
-
画像タイミング(Picture Timing SEI Message):デコードされた画像に関する追加のタイミング情報を提供し、表示タイムスタンプとデコードタイムスタンプなど、音声とビデオの再生を同期させるために使用されます。
-
復旧ポイント(Recovery Point SEI Message):ビデオストリーム内の復旧ポイントを示し、データ損失時にデコーダーが正しい再生状態に迅速に復旧できるように支援します。
-
シーン情報(Scene Information SEI Message):ビデオシーケンス内のシーン変化情報を記述し、コンテンツ分析と効率的なエンコーディングに寄与します。
-
パンスキャン矩形情報(Pan-Scan Rectangle SEI Message):ビデオ再生時に見えるべき領域を指定し、異なるアスペクト比の表示装置を扱うために使用されます。
-
ユーザーデータ(User Data Unregistered SEI Message):著作権情報や広告識別など、カスタム情報を携帯します。この内容は送信者と受信者によって共同で定義されます。
SEIメッセージのカテゴリー1から5は、ビデオストリームの品質管理、同期、および復旧のために使用されますが、ユーザーデータ(User Data Unregistered SEI Message)は、特定の企画やシナリオで非常に頻繁に使用される、より柔軟性の高い形式です。このユーザーデータは、ビデオストリームにカスタマイズされた情報を埋め込むために設計されており、内容は送信者と受信者によって共同で定義されます。
SEIのメリット
-
ビデオと完全に同期している
- SEIメッセージはビデオフレームに直接埋め込まれるため、ビデオとの完全な同期が保証されます。これは、他の方法では達成しにくい重要な特性です。ビデオコンテンツとメタデータのタイミングを正確に合わせることができ、よりリッチでインタラクティブな視聴体験を提供することが可能になります。
-
柔軟性
- SEIメッセージは、ビデオストリームに様々な種類のメタデータを追加する柔軟性を提供します。これにより、コンテンツ提供者はビデオに関連する追加情報を提供することが可能です。関連するプロトコルに依存せず、RTSPやRTMPでも使用できますし、プレイヤーがSEI解析をサポートしている場合は、他のプロトコルにおいても利用することができます。
-
互換性が高い
- プレイヤーがカスタムSEIデータの解析をサポートしていない場合でも、SEIデータをH.264デコーダーに渡せば、デコーダーはそれを無視してもビデオは正常に再生されます。これにより、広範なデバイスやプラットフォームでの互換性が確保されます。
SEIのデメリット
-
プレイヤーがSEIをサポートしていない可能性がある:
- すべてのプレイヤーやデバイスがSEIメッセージの解析と処理をサポートしているわけではありません。その結果、重要な情報が視聴者に届かない場合があります。
-
音声のみの送信ではSEIを使用できない:
- SEIメッセージはビデオフレームに埋め込まれるため、WebRTCなどの音声のみのストリームでは使用できません。
- ただし、静止画をエンコードして定期的に送信することで、SEIメッセージを含めることは技術的に可能ですが、これは一般的な解決策とは言えません。
-
送信できるデータサイズが限られている
- SEIメッセージで送信できるデータの量は限られている、通常は数十バイトから数百バイトの範囲に抑えられます。特定の状況では数kBまで可能ですが、これは伝送帯域やデコーダの処理能力に依存します。
-
ビデオフレームのロスにより情報が失われるリスクがある
- SEIメッセージがビデオフレームに埋め込まれているため、フレームの損失が発生すると、それに伴ってSEI情報も失われる可能性があります。これは、情報の絶対的な信頼性を確保できないことを意味します。
結論
SEIメッセージを利用する際は、ビデオストリームに補足的でありながら視聴体験を向上させる情報を埋め込むことが最も効果的です。信頼性が要求される重要なデータや大容量のデータは、他の手段を通じて送信したほういいでしょう。
注: WebRTC
WebRTCを使用して同様の機能を実現したい場合、音声のみの送信が行われる可能性があり、SEIメッセージはあまり推奨しない。WebRTCはリアルタイム通信に最適化されているため、WebSocketと組み合わせることも可能ですが、より一層効果的なのはWebRTCのData Channelを利用することです。
Discussion