5

現在、YouTube iFrame API を次の (かなり定型的な) コードでセットアップしています。

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://www.youtube.com/iframe_api"></script>
<script>
  var player;
  YT.ready(function() {
    player = new YT.Player('player', {
      videoId: 'iyBaInK2TsI',
      width: 200,
      height: 200,
      events: {
        onReady: "onReady",
        onStateChange: "onStateChange",
        onPlaybackQualityChange: "onPlaybackQualityChange",
        onError: "onPlayerError"
      },
      playerVars: {
        fs: 0, // hide fullscreen button by default
        playsinline: 1, // make the player not go fullscreen when playing on ios
        modestbranding: 1, // hide youtube logo by default - we say 'powered by youtube'
        controls: 0, // hide controls by default
        showinfo: 0, // hide video title by default
        iv_load_policy: 3, // hide annotations by default
        rel: 0
      }
    });

    console.log('available quality levels after create = ' + player.getAvailableQualityLevels());
  });
  // onReady, onStateChange, onPlaybackQualityChange, onPlayerError handlers...
</script>

一長一短は、常に「中」品質でビデオをロードすることです。デスクトップでもモバイルでも、通話setPlaybackQuality('small')はビデオの品質に影響しません。

setPlaybackQuality('small')状態が BUFFERING または PLAYING になったときに onReady、onStateChangeを呼び出してみました。また、ビデオの再生中、未再生、または一時停止中に JavaScript コンソールで完全に個別に呼び出してみました。

これは、ユーザーが 3G/4G 接続でプレーヤーをロードしようとしているときに大きな問題を引き起こします。ビデオ ストリーミングの 3G が段階的に廃止されつつあることは理解していますが、かなりの数のユーザーがまだ 3G 接続で操作しており、144p でストリーミングできることで、実際には 3G でビデオを維持できるようになり、240p で 4G (非 LTE) でビデオを維持できるようになります。

品質オプションとして hd720 のビデオを選択すると、setPlaybackQuality('hd720') を呼び出すことができ、正常に動作します。

私の具体的な質問は、私の構成に低品質への切り替えを妨げるものはありますか? また、この制限を回避して再生品質を実際に変更するトリガーとなる特定のコマンドのセットはありますか?

4

1 に答える 1

3

私が見つけた回避策は、プレイヤーを no で作成し、他の場所では呼び出さず、ハンドラー内で呼び出すvideoIdことです。これは、テスト時に Android と iOS の両方で尊重され、Android とデスクトップで 1 回、iOS で 2 回呼び出し、中程度の品質を強制することはありませんでした。setPlaybackQualityloadVideoById(videoId, 0, 'small')onReadyonPlaybackQualityChanged'small'

残念ながら、 を渡す'tiny'と、うまくいかないようです。ほとんどのビデオでは、強制され'small'ます。ただし、私の経験では、'medium'以前は強制されていました。そのことに注意してください。

于 2015-05-28T16:09:13.113 に答える