このトピックでは、コストリーマがビデオコストリーミングとオーディオコストリーミングを切り替えるときにスタイルとレイアウトが変更されるという問題を解決する方法について説明します。
背景情報
視聴者がストリーマと共同ストリーミングするシナリオでは、視聴者 (共同ストリーマ) は、オーディオ共同ストリーミングまたはビデオ共同ストリーミングを選択することができます。 オーディオコストリーミングとビデオコストリーミングの表示スタイルは異なります。 従来、コストリーマがオーディオコストリーミングとビデオコストリーミングとの間で切り替えるとき、レイアウトおよびスタイルは、シグナリングメッセージに基づいて変更されます。 このスキームには、次の欠点があります。
ライブストリーミングとシグナリングの送信レイテンシが異なるため、アプリUIパーツのスタイル (アバターやエイリアスなど) は、ビデオストリームのスタイルとは異なるように見える場合があります。
コストリーマがオーディオコストリーミングとビデオコストリーミングとの間で頻繁に切り替わる場合、混合ストリームレイアウトも頻繁に更新され、これはシステミックリスクを増加させる可能性があります。
解決策
ビデオコストリーミングモードでは、コストリーマは、コストリーミングおよびストリームミキシングに使用されるビデオストリームを取り込みます。 コストリーマがオーディオコストリーミングモードに切り替わると、クライアントはストリームミキシングのためにシステムイメージを取り込みます。 同時に、補足強化情報 (SEI) に基づいて、ライブルームの表示スタイルがリアルタイムに調整されます。
次の例は、共同ストリーマーがビデオ共同ストリーミングからオーディオ共同ストリーミングに切り替えるときのスタイル処理方法を示しています。
ライブルームのストリーマーと既存の視聴者のスタイルの処理方法:
ストリーム取り込みエンジンのAlivcLivePushConfigオブジェクトを作成すると、pauseImgパラメータはデフォルトのイメージを渡します。 モードがビデオコストリーミングからオーディオコストリーミングに切り替えられると、このデフォルト画像がレイアウトに表示され、ストリームミキシングに使用されます。 これにより、混流レイアウトが頻繁に更新されることを防ぐことができます。
共同ストリーマーBはmuteLocalCameraを呼び出してビデオ取り込みを無効にします。 コストリーマBのクライアント側では、コストリーマBのアバターが表示され、オーディオコストリーミングが開始されます。
システムが、コストリーマBのビデオ取り込みを無効にすることをアプリサーバに通知した後、アプリサーバは、ステータスを保持し、コストリーマBのビデオ取り込みを無効にすることを示すメッセージをストリーマにブロードキャストします。 ストリーマがメッセージを受信した後、コーストリーマBのアバターがストリーマのクライアント側に表示されます。
共同ストリーマーBはsendMessage (SEIメソッド) を呼び出して、ビデオ取り込みの無効化 /有効化メッセージ本文をカスタマイズし、共同ストリーマーBのビデオ取り込みの無効化を示すメッセージを視聴者に送信します。
視聴者がカスタムSEIを解析した後、コストリーマBのビデオが閉じられ、コストリーマBのアバターが視聴者側のミニウィンドウに表示されます。
コストリーマB用ミニウィンドウのレイアウト情報は、周期的SEIに含まれます。 詳細については、「SEIに基づくレイアウトの切り替え」をご参照ください。
ライブルームに参加する新しい視聴者のスタイルの取り扱い方法:
ライブルームに入ると、新しいビューアはアプリサーバーからストリーミングURLなどのストリーム情報を取得し、CDNストリーミングURLを使用してストリームを再生します。
新しいビューアは、ライブルーム情報、ストリーマーおよび共同ストリーマーに関する基本情報、レイアウト情報、およびストリーマーおよび共同ストリーマーのビデオ取り込み有効 /無効ステータスをアプリサーバーから取得します。
コストリーマがビデオコストリーミングモードにある場合、コストリーマに関するユーザ情報がビデオにオーバーレイされます。 共同ストリーマがオーディオ共同ストリーミングモードにある場合、共同ストリーマのアバターが表示されます。
コストリーマB用ミニウィンドウのレイアウト情報は、周期的SEIに含まれます。 詳細については、「SEIに基づくレイアウトの切り替え」をご参照ください。