2014-12-19 21 views
14

YouTube iframe API'yi daha düşük kalitede FullHD video oynatmak için kurmaya çalışıyorum. Amacım mobil cihazlara bant genişliği kaydetmek ve yükleme süresini azaltmak. HTML yapmam klasik oyuncu div ve mesajlar için bir hata ayıklama div.Youtube iFrame API setPlaybackQuality, mobil aygıtta yok sayıldı

(bu post önerildiği gibi) Ben oyuncu hazır olarak arabelleğe içinde vakit mobil kullanıcılara önlemek için, en kısa sürede setPlaybackQuality çağırmak için denedim

<div id="debug"></div> 

<div id="your_video_id"> 
    <div id="player"></div> 
</div> 

HTML. Ayrıca hem "BUFFERING" hem de "PLAYING" durumlarında da çağırdım. Kalite değiştiğinde, hata ayıklama içeriği gerçek oynatma kalitesi ile güncellenir.

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"); 
    } 
} 

kodu (hata ayıklama doğru için "küçük" ayarlanır) masaüstü bilgisayarlarda çalışır gibi görünüyor, ancak Android 4.2 ile test etmek "büyük" set mobil (hata ayıklama, üzerinde göz ardı ediyor. 2). Bunun için bir çözüm var mı?

+2

+1. Ben aynı sorunu alıyorum, onReady, BUFFERING ve PLAYING ile onStateChange, hepsi ayrı ayrı ve çeşitli kombinasyonlarda denedim - hiçbiri işe yaramaz. Bu sorunu bildirdim: https://code.google.com/p/gdata-issues/issues/detail?id=7191&thanks=7191&ts=1432253375 –

+0

iOS'ta video kalitesi doğrudan iFrame oynatıcının boyutuna göre ayarlanır. Bu nedenle, hangi boyutta olursanız olun, mobil oynatıcı ayarınızı her zaman en yakın boyutu müzikçaların büyüklüğüne uygun olacak şekilde geçersiz kılar. Bu, YouTube'un iOS geliştiricilerine sağladığı oynatıcı yardımcısıyla (web görünümünde gerçekten sadece iFrame oyuncusu olan) büyük bir sorundur. YouTube, bunun, mobil cihazlarda gereksiz veri kullanımını önlemek için bilerek yapıldığını iddia ediyor. – JAL

+0

@JAL: Hm. Öyleyse, belirtilen minimum boyuta sahibim - yaklaşık 350 x 200. Bunu 240p'ye ayarlamaya çalışmamalı mıyım? Ve aslında 175 x 100 \ @ 2x olduğundan 144 p'ye daha yakın olmaz mıydı? Ben bu YT iFrame API tarafında bir sorun olduğunu düşünüyorum çünkü aynı zamanda [kalite daha düşük çalışmak isteyen değil, daha yüksek kalitede yapmak için çalışıyor. ”(Http://stackoverflow.com/questions/30468161/ yükleme-youtube-iframe-api-video-at-a-daha düşük kalite) –

cevap

6

buldum geçici çözüm başka bir yerde setPlaybackQuality diyoruz, hayır videoId ile oyuncu asla oluşturabilirsiniz ancak onReady işleyicisi içinde loadVideoById(videoId, 0, desiredQuality) aramak. Bu, test edildiğinde hem Android'de hem de iOS'ta saygı gördü, onPlaybackQualityChanged'u Android ve Masaüstünde bir kez ve iki kez iOS'ta bir kez daha kaliteli bir şekilde değiştirerek, kaliteyi hiçbir zaman daha yüksek veya daha düşük bir değere çevirmedi.

Ne yazık ki, videoda bulunmayan herhangi bir kaliteyi geçerseniz, 'orta' zorlar. Bunun farkında ol. Ayrıca, 3G/4G/LTE ağlarında gereksiz veri kullanımını önlemek için API’nın iOS’ta yaptığı herhangi bir kalite sınırlaması kırılmayacaktır.

+0

Adımlarınızı takip ettim ama benim için çalışmıyor. Cevabınızdan bu yana API'nın davranışının değişip değişmediğini biliyor musunuz? – kakhkAtion

+0

Son zamanlarda kontrol etmediniz. Hangi platformda sorun yaşıyorsunuz, ve kesinlikle 3 set ile loadVideoById (cueVideoById veya benzeri değil) kullandığınızdan, kesinlikle setPlaybackQuality'yi çağırdığınızdan ve oynattığınız videonun ayarlamaya çalıştığınız oynatma kalitesine sahip olduğunuzdan kesinlikle emin misiniz? Aslında hangi kalite ayarlanıyor? –

+0

Evet loadVideoById kullanıyorum. Hem Android hem de iOS'ta Chrome'u deniyorum. Ne yaptığımın bir önemi yok, her zaman iPhone 5 cihazımda kaliteli bir ortam elde ediyorum ve Nexus 5 cihazımda büyük. Aynı kod, masaüstü tarayıcılarda da gayet iyi çalışıyor ve kaliteyi değiştirebiliyorum. – kakhkAtion

İlgili konular