autoplay başarısızlığı Kullanıcılar tarafından bana bildirilmeye başlandı. Hatalar için kendi kodumu araştıran bir sürü zaman harcadım, ancak özellikle Safari 11(en yeni) ile ilgili olduğu anlaşılıyor.Safari 11/YouTube API'sı hatası. Hızlı oynatma/duraklatma ve
YouTube IFrame Embed API'sinin basit bir örneğini kullanırken, Safari, oynatma durumları arasında hızla değişecek ve duraklama bitene kadar duraklayacaktır.
Bu, örneğin en uygun hale getirilmiş sürümü değil, çünkü burada çalışmasını sağlayabilecek bazı keşifler var. İleriye atlamak ve otomatik oynatmak istedim, ama olması gerektiği gibi çalışmayacaktı. YT API örnekleri belgelenmiş olan start
ve playVideo
kullanmayı denedim.
Bunu yalnızca son zamanlarda, örnekte bazı ayrıntılı parametrelerin bulunduğunu açıklayan bir hata olduğunu doğruladım.
Notlar:
- Bazen Video yenilemek kaç kere bağlı oynamak OLACAK, ama çok seyrek bu.
- Otomatik yürütme bayrakları genellikle başarısız olur.
startSeconds
çalışmıyor olduğundan bu örnektestart
işaretini kullanın.- Kod örneği diğer tarayıcılarda çalışır:
Chrome
,Opera
,Firefox
Burada sonunda ( durdurulmuş) 2 açılış, Oyuncu Devlet panik gösterir Safari'nin konsolu görebileceğiniz şeyin bir görüntü.
Hata kopyalayacak bir kopyala/yapıştır kod örneği burada. Herhangi bir HTML dosyasında Bırak ve özellikle farklı tarayıcılar ve farklı cihazlarda çalışan otomatik oynatmayı alma, ben video oynatıcılar ile birçok sorun yaşamaktadır
<style>
body, html, iframe {
position: absolute; left: 0; right: 0; top: 0; bottom: 0; width: 100%; height: 100%;
margin: 0;
padding: 0;
pointer-events: none;
}
</style>
<script>
var videoId = "9nwQ1F7oX-8";
var playerVars = {
autohide: 1,
autopause: 0,
autoplay: 1,
cc_load_policy: "0",
disablekb: 1,
enablejsapi: 1,
iv_load_policy: 1,
modestbranding: 1,
origin: "*",
rel: 0,
showinfo: 0,
start: 122,
version: 3
};
</script>
<iframe id="ytplayer"
frameborder="0"
allowfullscreen="1"
title="YouTube video player"
width="100%"
height="100%"
x-src="https://www.youtube.com/embed/9nwQ1F7oX-8?enablejsapi=1&origin=*&rel=0&version=3&iv_load_policy=3&modestbranding=1&showinfo=0&autohide=1&disablekb=1&autoplay=1&autopause=0&cc_load_policy=0&startSeconds=30&widgetid=1"
src="https://www.youtube.com/embed/9nwQ1F7oX-8?enablejsapi=1&origin=*&start=122">
</iframe>
<script>
window.onYouTubeIframeAPIReady = function() {
console.log("YouTube is ready!", videoId, playerVars);
var api = new YT.Player("ytplayer", {
width: "100%",
height: "100%",
videoId: videoId,
playerVars: playerVars,
events: {
onError: function(e) {
// 100 – The video requested was not found. This error occurs when a video has been removed (for any reason) or has been marked as private.
// 101 – The owner of the requested video does not allow it to be played in embedded players.
// 150 – This error is the same as 101. It"s just a 101 error in disguise!
console.warn("An error has occurred", arguments);
},
onReady: function() {
// log
console.log("YouTube player is ready to use");
//
api.playVideo();
},
onStateChange: function(e) {
// log
console.log("YouTube state change ", e);
// Finished
if (e.data == 0) {
console.log("Finished");
}
// Playing
else if (e.data === YT.PlayerState.PLAYING) {
console.log("Playing");
}
// Pausing
else if (e.data === 2) {
console.log("Pausing");
}
// Buffering
else if (e.data === 3) {
console.log("Buffering");
}
}
}
});
}
</script>
<script src="https://www.youtube.com/iframe_api"></script>
Safari'deki oynatıcının Youtube oynat düğmesini gördüğü benzer bir durum vardı. Iframe'i görüntü yokken gizliyordum ama opaklığı 0'a ve 1'e hazır olduğunda değişti. Ve sonra video ya autoplay ya da –