ApsaraVideo Liveは、Common Media Application Format (CMAF) などのセグメント形式や、低遅延HTTPライブストリーミング (LL-HLS) などのストリーミングプロトコルをサポートするライブストリームカプセル化機能を提供します。 このトピックでは、ライブストリームのカプセル化機能の詳細について説明します。
概要
ApsaraVideo Liveは、RTMP (Real-Time Messaging Protocol) 、HTTP-FLV、HLS (HTTP Live streaming) などのストリーミングプロトコルをサポートしています。 低遅延が必要なシナリオでのユーザーエクスペリエンスを向上させるために、ApsaraVideo Liveはライブストリームのカプセル化機能を使用してCMAFとLL-HLSのサポートを追加します。 このようにして、LL-HLS - TS、LL-HLS - CMAF、HLS - CMAF、Dynamic Adaptive Streaming over HTTP (DASH) - CMAF、またはHLS & DASH - CMAFを使用して、セグメントのタイプに基づいてライブストリームをカプセル化できます。
セグメントタイプ | サポートされるカプセル化プロトコル | サポートされるエンコード形式 |
TS | LL-HLS - TS |
|
CMAF |
|
|
機能と利点
ライブストリームのカプセル化機能を有効にすると、ライブストリームはトランスポートストリーム (TS) またはCMAFセグメントにスライスされます。 これらのセグメントは、HLSまたはLL-HLSプロトコルを介して視聴者に配信され、M3U8プレイリスト内の対応するURLは常に更新されます。
HLSと比較して、LL-HLSはこれらのセグメントをより小さな部分 (200ミリ秒から1秒の持続時間) にさらに分割し、プレイリストのリロードをブロックすることができます。これにより、エンドツーエンドのレイテンシが3〜5秒に短縮されます。 TSと比較して、CMAFは幅広いデバイスやブラウザと互換性があり、H.265などの新しいコーデックをサポートしています。
ライブストリームのカプセル化を、トランスコーディング (マルチビットレートトランスコーディングを含む) やタイムシフトなどの他の機能とともに使用すると、より豊かで柔軟な機能を楽しむことができます。
使用上の注意
ライブストリームのグループオブピクチャ (GOP) サイズが安定していること、およびセグメント長がGOPサイズに等しいか、またはその整数倍であることを確認します。 トランスコードされたストリームに対してカプセル化設定を有効にするように指定する場合は、トランスコードされたストリームのGOPサイズが安定していることも確認する必要があります。
LL-HLSを使用する場合は、次の点に注意してください。
ライブストリームのカプセル化とマルチビットレートトランスコーディングを併用することを推奨します。 このようにして、悪いネットワーク条件でビットレートを自動的に調整して、吃音を減らすことができます。
ライブストリームのGOPサイズが1秒または2秒に固定されていることを確認します。 そうしないと、吃音が発生するか、再生が失敗します。
ApsaraVideo player、HLS.js、ExoPlayerなどのLL-HLSをサポートするプレーヤーを使用する必要があります。 推奨する使用例 ApsaraVideoプレーヤー。
メインストリーミングドメインは、最大100,000人の視聴者をサポートします。 クォータを増やしたい場合は、チケットを起票してください。 詳細については、「お問い合わせ」をご参照ください。
機能の使用
ApsaraVideo liveコンソールを使用するか、AddLivePackageConfig操作を呼び出して、ライブストリームのカプセル化設定を構成します。
次のサンプルコードは、Javaでライブストリームのカプセル化設定を構成する方法の例を示しています。
// Replace the parameters in <> with actual values. DefaultProfile profile = DefaultProfile.getProfile("<regionId>", "<ALIBABA_CLOUD_ACCESS_KEY_ID>", "<ALIBABA_CLOUD_ACCESS_KEY_SECRET>"); IAcsClient client = new DefaultAcsClient(profile); AddLivePackageConfigRequest addLivePackageConfigRequest = new AddLivePackageConfigRequest(); addLivePackageConfigRequest.setDomainName("<DomainName>"); addLivePackageConfigRequest.setAppName("<AppName>"); addLivePackageConfigRequest.setStreamName("<StreamName>"); addLivePackageConfigRequest.setBizProtocol("<Protocol>"); // // Other business code // try { AddLivePackageConfigResponse addLivePackageConfigResponse = client.getAcsResponse(addLivePackageConfigRequest); System.out.println(new Gson().toJson(addLivePackageConfigResponse)); // todo something. } catch (ServerException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (ClientException e) { // TODO Auto-generated catch block e.printStackTrace(); }
ストリーム取り込みを開始します。 インジェストドメイン、アプリケーション名、およびストリーム名が、カプセル化設定で指定されたものと同じであり、ライブストリームのGOPサイズが安定していることを確認してください。
この例では、Open Broadcaster Software (OBS) を使用してストリームを取り込みます。 推奨されるパラメーター設定を次の図に示します。
OBSの使用方法の詳細については、「OBS」をご参照ください。
対応するプロトコルのストリーミングURLを取得し、LL-HLSをサポートするプレーヤーを使用してストリームを再生します。 ApsaraVideo Playerの使用を推奨します。
この例では、 ApsaraVideo Playerを使用してストリームを再生します。 推奨されるパラメーター設定を次の図に示します。
ビデオタイプをブロードキャストに設定します。
ストリーミングURLを入力します。
重要ブラウザでクロスオリジン再生が必要な場合は、
Access-Control-Allow-origin
ヘッダーを設定する必要があります。 詳細については、「HTTPヘッダーの設定」をご参照ください。カプセル化のためのストリーミングURLは、HLS形式の通常のURLに似ています。 次のサンプルコードに例を示します。
HLS: http://example.com/AppName/StreamName.m3u8?aliyunols=on LL-HLS: http://example.com/AppName/StreamName-llhls.m3u8?aliyunols=on
説明aliyunols=onが必要です。 このフィールドが指定されていない場合、通常のHLSストリームが再生されます。
カプセル化設定でLL-HLSを指定すると、HLS形式のストリーミングURLも提供されます。
URL署名が有効になっている場合は、auth_key=<Encryption key> フィールドをURLに追加する必要があります。
ライブストリームのカプセル化とマルチビットレートトランスコーディングを併用できます。 マルチビットレートコード変換が有効になっている場合、カプセル化設定で指定されたセグメント形式がカプセル化で使用されます。
HLS: http://example.com/AppName/StreamName_MBRGroupId.m3u8?aliyunols=on LL-HLS: http://example.com/AppName/StreamName_MBRGroupId-llhls.m3u8?aliyunols=on
説明MBRGroupIdは、マルチビットレートトランスコーディング用のテンプレートグループのIDです。
ライブストリームのカプセル化とタイムシフトを併用できます。 タイムシフトを有効にすると、カプセル化設定で指定されたセグメント長とフォーマットがカプセル化で使用されます。 HLS − CMAFまたはLL-HLS − CMAFが指定される場合、時間シフトのためのカプセル化セグメントフォーマットはCMAFである。 LL-HLS TSが指定されている場合、時間シフトのためのカプセル化セグメントフォーマットはTSである。
[プレビュー] タブをクリックします。