2014-09-16 13 views
5

Ich versuche, ein YouTube-Video (innerhalb eines iFrame) programmgesteuert über JS abzuspielen. Hier ist der Code verwende ich programmatisch ein YouTube-Video abspielen:YouTube iFrame API: Programmgesteuert nativ abspielen?

iframe.postMessage('{"event":"command","func":"playVideo","args":""}', '*'); 

jedoch in Geräten, die YouTube native Wiedergabe-Funktion, um das Video im iFrame unterstützen wird zu einem schwarzen Bildschirm und nicht öffnen, die native Videoplayer.

Wie kann ich die iFrame-API verwenden, um ein Video programmgesteuert möglichst nativ wiederzugeben?

+0

stellen Sie bitte eine jsfiddle zur Verfügung. Ich glaube nicht, dass Sie postMessage selbst anrufen müssen, Sie sollten die youtube-API verwenden, um den Player zu erstellen und die API zu verwenden, um damit zu kommunizieren - er wird die postMessage intern für Sie aufrufen. – Etai

Antwort

4

Ich empfehle Ihnen, die Youtube Iframe Player API zu überprüfen. https://developers.google.com/youtube/iframe_api_reference#Playback_controls

var player; 
    function onYouTubeIframeAPIReady() { 
    player = new YT.Player('player', { 
    height: '390', 
    width: '640', 
    videoId: 'M7lc1UVf-VE', 
    events: { 
     'onReady': onPlayerReady, 
     'onStateChange': onPlayerStateChange 
    } 
    }); 
} 

function onPlayerReady(event) { 
    event.target.setVolume(100); 
    event.target.playVideo(); 
} 
1

Wenn Sie das Video runter haben, wenn geladen, verwenden Sie dieses Attribut in Ihrem JS: "Automatische Wiedergabe: 1". Weitere Informationen finden Sie hier: https://developers.google.com/youtube/player_parameters#autoplay

Wenn Sie das Ereignis "onReady" verwenden, müssen Sie erkennen, ob das Gerät das automatische Abspielen zulässt, welches iOS dies nicht tut. Dies ist nicht leicht zu testen, es sei denn, Sie verwenden fragiles UA-Sniffing. Die Verwendung der eingebauten Methode ist in diesem Fall viel zuverlässiger.

Wenn Sie nur ein Video programmatisch spielen möchten, können Sie diese Methode verwenden:

target.playVideo(); 

jedoch wieder Sie können dies auf iOS ohne Zutun des Benutzers nicht. Und es funktioniert nur unter iOS8, frühere Versionen erlauben nicht, dass JS das Abspielen von Videos auslöst.

Verwandte Themen