お使いのブラウザがWebRTCをサポートしていない場合、またはRTSを介したストリームプルが失敗した場合は、HTTPライブストリーミング (HLS) やHTTPフラッシュビデオ (HTTP-FLV) などの劣化したプロトコルでストリームを再生できます。 このトピックでは、Web RTS SDKと統合された独自のプレーヤーを使用する場合、またはApsaraVideo playerを使用する場合に、RTSではなく劣化したプロトコルを使用してストリームを再生できるシナリオについて説明します。
概要
RTSではなく劣化したプロトコルを使用してストリームを再生することを検討できるシナリオ:
お使いのブラウザはWebRTCまたはH.264をサポートしていません。
説明Web RTS SDKは、WebRTCに対するブラウザのサポートに依存します。 市場に出回っている一般的なブラウザは、SDKとの互換性に関してテストされています。 詳細については、「サポートされているブラウザーのバージョン」をご参照ください。 Web RTS SDKが提供する
isSupport
機能を使用して、ブラウザが要件を満たしているかどうかを確認できます。 ブラウザがWebRTCをサポートしているが、リストにない場合は、完全なテストを実行し、ブラウザのisSupport
チェックをスキップできます。無効なソースURL、無効なHTTPS設定、または無効なRTS設定により、シグナリングリクエストは失敗します。
再生開始がタイムアウトするか、再生中にストリームが中断されます。
次のセクションでは、Web RTS SDKと統合されている独自のプレーヤーを使用する場合、またはApsaraVideo playerを使用する場合に、上記のシナリオでストリームを再生するためにRTSではなく劣化したプロトコルを使用する方法について説明します。
Web RTS SDKと統合された独自のプレーヤーを使用する
Web RTS SDK V2.5.1以降を使用する必要があります。 詳細については、「リリースノート」をご参照ください。
次のサンプルコードは簡略化されています。 劣化したプロトコルで再生するための完全なサンプルコードをダウンロードできます。
/**
* Scenarios in which you can use a degraded protocol:
* 1. The browser is not supported. Configure isSupport().catch to use a degraded protocol.
* 2. A reconnection failure occurs when connection is being established or during playback. In this case, the 10410 error code is returned in the onError event.
**/
var pullStreamUrl = 'The RTS source URL.';
var fallbackUrl = 'The URL based on a degraded protocol, such as HLS.';
// Initialize the SDK.
var aliRts = AliRTS.createClient();
aliRts.on('onError', (error) => {
console.log(error.errorCode, error.message); // The error code and error message.
// Determine whether to use a degraded protocol.
switch(error.errorCode){
case 10410: // Reconnection for stream pulling (subscription) failed.
fallback(); // Use a degraded protocol.
break;
default:
}
});
// Check whether the browser is supported.
// You can skip the isSupport check and directly execute subscribeRts to pull the steam if the browser is not in the list that is described in the following topic: ApsaraVideo Live > User Guide > Real-Time Streaming > Web RTS SDK > Web RTS SDK for stream pulling > Integrate Web RTS SDK with other players > SDK overview. This operation may cause risks. Perform a full test before you perform this operation.
aliRts.isSupport({ isReceiveVideo: true }).then(subscribeRts).catch(fallback)
function subscribeRts() {
aliRts.subscribe(pullStreamUrl, {
// mediaTimeout: 6000 // Specify the timeout period.
// retryTimes: 5, // Specify the number of reconnection attempts. Default value: 5.
// retryInterval: 2000,// Specify the interval between reconnection attempts. Default value: 2000. Unit: milliseconds.
}).then((remoteStream) => {
remoteStream.play(mediaElement);
}).catch(() => {})
}
// Use a degraded protocol for playback.
function fallback() {
// The following code provides an example. You can choose an appropriate player based on the protocol that you use.
hlsPlayer.play(fallbackUrl)
}
ApsaraVideoプレーヤーの使用
ApsaraVideo PlayerはWeb RTS SDKと統合されており、RTSストリームの再生に使用できます。 ApsaraVideo Playerには、自動プロトコル劣化のロジックが組み込まれています。 このロジックをトリガーするには、劣化したプロトコルに基づいてURLを指定するだけです。
ApsaraVideo Player V2.9.23以降を使用する必要があります。 詳細については、「ApsaraVideo Player SDK For Webのリリースノート」をご参照ください。
次のサンプルコードは簡略化されています。 ApsaraVideo Playerのデグレードプロトコルで再生するための完全なサンプルコードをダウンロードできます。
/**
* By default, ApsaraVideo Player plays the RTS stream from the source URL. If the playback fails, ApsaraVideo Player automatically plays the stream from the URL provided by rtsFallbackSource, such as an HLS URL.
* Scenarios in which a degraded protocol may be used:
* 1. The browser does not support RTS. ApsaraVideo Player uses a degraded protocol to play the stream.
* 2. Signaling requests fail due to an invalid source URL, invalid HTTPS configuration, or invalid RTS configuration. ApsaraVideo Player uses a degraded protocol to play the stream.
* 3. Playback startup times out or the stream is interrupted during playback. ApsaraVideo Player retries playback based on the custom policy. If the retry fails, ApsaraVideo Player uses a degraded protocol to play the stream.
**/
var options = {
"id": "player-con",
"source": "The RTS playback URL.",
"rtsFallbackSource": "The URL based on a degraded protocol, such as HLS.",
"width": "100%",
"height": "500px",
"autoplay": true,
"isLive": true,
"playsinline": true,
"skipRtsSupportCheck": false, // You can set the value to true to skip the check and forcibly use RTS if the browser is not in the list that is described in the following topic: ApsaraVideo Live > User Guide > Real-Time Streaming > Web RTS SDK > Web RTS SDK for stream pulling > Integrate Web RTS SDK with other players > SDK overview. This operation may cause risks. Perform a full test before you perform this operation.
/**
* If RTS stream pulling times out, a retry occurs by default.
* The following parameters are used to control the retry policy before a degraded protocol is used. For example, if the stream cannot be pulled after 3,000 milliseconds, a retry occurs. If the stream still cannot be pulled after another 3,000 milliseconds, a degraded protocol is used. The total waiting period is 6,000 milliseconds.
**/
// The period of time after which a retry occurs if the RTS stream fails to be pulled. Default value: 3000. Unit: milliseconds.
// rtsLoadDataTimeout: 2000,
// The number of retries for failed RTS stream pulling. Default value: 5. We recommend that you set this parameter to 1. This way, the total waiting period can be reduced.
liveRetry: 1,
};
var player = new Aliplayer(options, function () {/* player ready */});
// The event that is triggered when a degraded protocol is used.
player.on('rtsFallback', function(event) {
// event.paramData.reason The reason for degradation.
// event.paramData.fallbackUrl The URL based on a degraded protocol.
})
WeChat miniプログラムでWeb RTS SDKを使用できますか?
WeChatミニプログラムはRTSシグナリングプロトコルを解析できないため、ネイティブWeChatミニプログラムでWeb RTS SDKを使用することはできません。 ただし、SDKと統合されているwebページをWeChat miniプログラムのWebViewに埋め込むことはできます。