我試圖設置YouTube iframe API播放低質量的FullHD視頻。我的目標是節省移動設備的帶寬並縮短加載時間。我的HTML結構是古典播放器div,加上消息的調試div。Youtube iFrame API setPlaybackQuality在移動設備上被忽略
HTML
<div id="debug"></div>
<div id="your_video_id">
<div id="player"></div>
</div>
我試圖儘快調用setPlaybackQuality
爲玩家準備好,以避免移動用戶在緩衝浪費時間(如本post建議)。我也在「BUFFERING」和「PLAYING」狀態中調用它。質量改變時,調試內容會以實際播放質量進行更新。
JAVASCRIPT
/* Trigger player ready */
function onPlayerReady(event)
{
player.setPlaybackQuality("small");
}
/* Detect playback quality changes */
function onQualityChange(event)
{
document.getElementById("debug").innerHTML = event.data;
}
/* Trigger player events */
function onPlayerStateChange(event)
{
if (event.data == YT.PlayerState.BUFFERING)
{
player.setPlaybackQuality("small");
}
if (event.data == YT.PlayerState.PLAYING)
{
player.setPlaybackQuality("small");
}
}
的代碼似乎在桌面上工作(調試正確設置爲「小」),但它在移動(調試設置爲「大」,與Android 4.2測試忽略。 2)。有沒有解決方案?
+1。我遇到了同樣的問題,嘗試了onReady,onStateChange與BUFFERING和PLAYING,所有單獨和各種組合 - 都不起作用。我提出了此問題:https://code.google.com/p/gdata-issues/issues/detail?id=7191&thanks=7191&ts=1432253375 – 2015-05-22 00:11:56
在iOS上,視頻質量直接根據iFrame播放器的大小設置。因此,無論您設置了多大尺寸,移動播放器都會覆蓋您的設置,以匹配最接近尺寸的任何尺寸。對於iOS開發者(這實際上只是網頁瀏覽中的iFrame播放器)提供的玩家幫手,這是一個巨大的問題。 YouTube聲稱這樣做是爲了避免在手機上使用不必要的數據。 – JAL 2015-05-26 20:07:22
@JAL:嗯。那麼,我已經在規定的最小尺寸附近 - 約350 x 200.它不應該試圖將其設置爲240p?而且因爲它實際上是175 x 100 \ @ 2x,難道不會更接近144p嗎?我認爲這是YT iFrame API方面的一個問題,因爲我也注意到[在桌面上尋求降低質量不起作用,但尋求更高質量。](http://stackoverflow.com/questions/30468161/ loading-youtube-iframe-api-video-at-a-quality-quality) – 2015-05-26 21:27:08