2016-04-04 10 views
1

私はAndorid ExoPlayerを使用して、http(HLS)を通じてインターネットからコンテンツをストリーミングしています。私はそれがOK取り組んでいるが、私は演奏のコンテンツの品質を変更しようとすると、プレイヤー起動すると - 例えばAndroid ExoPlayerが選択したトラックを変更する

player.setSelectedTrack(TYPE_VIDEO, 1)

を、私は403 Forbiddenになったし、HTTP。私がプレーヤーを初期化してコンテンツをもう一度実行すると、それは問題ありません。デモプロジェクトをソースとして使用しています。

この現象が原因である可能性がありますが、初期ストリームの再生とトラックの変更の違いは何ですか?

プレーヤの初期化時にURLがビルダーに渡されるため、プレーヤ全体を再初期化せずにストリーミングをリセットする方法はありますか?

答えて

1

問題が見つかりました。私がExoPlayerに渡していたURLは外部APIから返されていましたので、実際には2つのURLが "|"(http://my_url_1.m3u8|http://my_url_2.m3u8)で連結されていることに気づいていません。奇妙なことは、この文字列をExoPlayerに渡すとエラーなしでストリームを再生していることです。再生ストリームの品質を変更しようとすると問題が発生します。

1

setSelectedTrack()を使用してストリームの品質を変更することはありません。これは、利用可能なストリームから再生するものを選択するために使用されます(オーディオ、サブタイトルの言語、またはビデオの場合は非常にまれですが、スポーツイベントのカメラアングルを設定するなど)。

これらのストリームはすべて複数の品質レベルを持つことができ、ExoPlayerのFormatEvaluatorはネットワーク条件に基づいてダウンロードする品質を選択します。

新しいトラックを選択したときにデコーダが異なる場合は、プレーヤを再初期化して再生を続ける必要があります。

手動でHLSマニフェスト(.m3u8)をダウンロードして、リストされた情報を確認して、ブラウザでURLを1つずつ試してみることをおすすめします。すべてがうまくいけば、このテストでも403テストを受けるべきではありません。

関連する問題