Den*_*s L 5 youtube-iframe-api
目前,我们有一个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>Run Code Online (Sandbox Code Playgroud)
它的长短是因为它总是以"中等"质量加载视频.setPlaybackQuality('small')无论是在桌面还是移动设备上,通话都不会影响视频质量.
setPlaybackQuality('small')当状态变为BUFFERING或PLAYING时,我尝试调用onReady,onStateChange,当视频播放,未播放或暂停时,我在JavaScript控制台中完全单独调用.
当用户尝试在3G/4G连接上加载播放器时,这会出现一个大问题.据我所知,3G正在逐步淘汰视频流,但仍有大量用户使用3G连接,而144p的流量实际上使得视频在3G上运行,240p使得视频在4G(非LTE)上成为可能.
当我选择以hd720作为质量选项的视频时,我可以调用setPlaybackQuality('hd720')并且它可以正常工作.
我的具体问题是,我的配置中是否存在阻止切换到较低质量的任何内容,是否有一组可以解决此限制并触发实际更改的播放质量的命令?
我发现的解决方法是使用 no 创建播放器videoId,从不调用setPlaybackQuality其他任何地方,而是在处理程序loadVideoById(videoId, 0, 'small')内部调用onReady。测试时,这在 Android 和 iOS 上都得到了尊重,在 Android 和桌面上调用onPlaybackQualityChanged一次'small',在 iOS 上调用两次,从不强制中等质量。
不幸的是,如果你通过了'tiny',它似乎不起作用。在大多数视频中,它会强制'small'; 然而,根据我的经验,这是被迫的'medium'。请注意这一点。
| 归档时间: |
|
| 查看次数: |
1669 次 |
| 最近记录: |