我正在努力使用youtube播放器api为youtube视频设置循环。
问题是视频没有在循环中运行。
这是我的代码
var tag = document.createElement('script');
tag.src = "https://www.youtube.com/iframe_api";
var firstScriptTag = document.getElementsByTagName('script')[0];
firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);
var player;
function onYouTubeIframeAPIReady() {
player = new YT.Player('player', {
height: '390',
width: '640',
playerVars: {
'controls': 0,
'showinfo': 0,
'rel': 0,
'loop': 1
},
videoId: 'qzZuBWMnS08',
events: {
'onReady': onPlayerReady,
// 'onStateChange': onPlayerStateChange
}
});
}
function onPlayerReady(event) {
// event.target.setLoop(true);
event.target.playVideo();
}
循环:1似乎不起作用。还有任何方法可以从视频顶部删除共享和视频标题。
提前致谢。
答案 0 :(得分:44)
如果视频没有变化,您可以执行
onStateChange:
function(e) {
if (e.data === YT.PlayerState.ENDED) {
player.playVideo();
}
}
这样可以防止不必要地重新加载视频
答案 1 :(得分:11)
这是我用于API IFrame视频循环的内容。我注意到你必须包含"播放列表:VIDEO_ID"参数。它的工作原理。这是我的例子
<script>
// Load the IFrame Player API code asynchronously.
var tag = document.createElement('script');
tag.src = "https://www.youtube.com/player_api";
var firstScriptTag = document.getElementsByTagName('script')[0];
firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);
// Replace the 'ytplayer' element with an <iframe> and
// YouTube player after the API code downloads.
var player;
function onYouTubePlayerAPIReady() {
player = new YT.Player('ytplayer', {
height: '390',
width: '640',
videoId: 'VIDEO_ID',
playerVars: {
playlist: 'VIDEO_ID',
loop: 1
}
});
}
</script>
&#13;
答案 2 :(得分:10)
如documentation所述,您需要将playlist参数设置为视频ID才能使循环生效。
您希望showinfo参数隐藏标题等。
答案 3 :(得分:10)
在你的 onPlayerStateChange 中试试这个,Youtube希望你再次放入videoID。
onStateChange: function(e){
var id = 'qzZuBWMnS08';
if(e.data === YT.PlayerState.ENDED){
player.loadVideoById(id);
}
}
答案 4 :(得分:3)
我得到这个工作来给我带有超低音量设置的循环视频来播放视频。您可以通过将音量从2更改为0来静音。
还要确保将您的视频添加到播放列表中。显然这是一个问题。并在代码中的播放列表和视频区域中使用视频ID。
我确定我有额外的步骤或冗余的步骤,因为我没有编码器。
我知道这很有用。
<div id="player">
<script>
// 2. This code loads the IFrame Player API code asynchronously.
var tag = document.createElement('script');
tag.src = "https://www.youtube.com/iframe_api";
var firstScriptTag = document.getElementsByTagName('script')[0];
firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);
// 3. This function creates an <iframe> (and YouTube player)
// after the API code downloads.
var player;
function onYouTubeIframeAPIReady() {
player = new YT.Player('player', {
height: '315',
width: '600',
videoId: 'DrrH-YTvVVc',
playerVars: {
playlist: 'DrrH-YTvVVc',
loop: 1 } ,
events: {
'onReady': onPlayerReady,
'onStateChange': onPlayerStateChange
}
});
}
// 4. The API will call this function when the video player is ready.
function onPlayerReady(event) {
event.target.setVolume(2);
event.target.playVideo();
}
// 5. The API calls this function when the player's state changes.
// The function indicates that when playing a video (state=1),
// the player should play for six seconds and then stop.
var done = true;
function onPlayerStateChange(event) {
if (event.data == YT.PlayerState.ENDED) {
// setTimeout(stopVideo, 6000);
player.playVideo();
}
event.target.setVolume(2);
}
</script></div>
答案 5 :(得分:0)
pointer-to-member
答案 6 :(得分:0)
自html5播放器以来,我们可以右键单击视频=>循环播放。
从脚本开始,在视频结尾处重播:
document.getElementsByClassName('video-stream html5-main-video')[0].loop = true
两个时间点之间的循环1.66秒:
const video = document.getElementsByClassName('video-stream html5-main-video')[0]
/* Loop markers in seconds */
let start = 54.34, end = 56
/* Seek to time in seconds */
function seek(time){
video.loop = true
video.currentTime = time
video.play()
}
/* Loop between start and end */
function loop(e){
if (e.target.currentTime > end){
seek(start)
}
}
/* Will loop for 1.66s */
video.addEventListener("timeupdate", loop, false)
/* Seek to 54.34s */
seek(start)
/* Abort the loop */
// video.removeEventListener("timeupdate", loop, false)
/* New loop */
// start = 14; end = 15; seek(start)