Vimeo 嵌入加载时自动静音
Vimeo embed auto mute on load
我有一个 vimeo 嵌入式视频,但似乎无法在加载时集成静音。
这是我的视频代码
<div id="vimeo"> </div>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>
<script src="https://f.vimeocdn.com/js/froogaloop2.min.js"></script>
和使用
的 js
<script>
// URL of the video
var videoUrl = 'http://www.vimeo.com/76979871?api=1?player_Id=vimeoyo';
var endpoint = 'http://www.vimeo.com/api/oembed.json';
var callback = 'embedVideo';
var url = endpoint + '?url=' + encodeURIComponent(videoUrl)+ '&autoplay=true' + '&callback=' + callback + '&width=420';
function embedVideo(video) {
document.getElementById('vimeo').innerHTML = unescape(video.html);
}
function init() {
var js = document.createElement('script');
js.setAttribute('type', 'text/javascript');
js.setAttribute('src', url);
document.getElementsByTagName('head').item(0).appendChild(js);
var player = 'vimeoyo';
player.api('setVolume', 0);
}
window.onload = init;
</script>
我遇到的问题还在于该视频不是 iframe。
编辑:有一个使用 iframe 静音的答案。这里
Muting an embedded vimeo video
但是使用这个 fiddle 测试过后,它似乎也没有使视频静音。 http://jsfiddle.net/serversides/gfcpjLsy/
由于您是从 vimeo api 动态创建 iframe
,因此您应该仅在加载 iframe 后设置音量。因此,在您的 embedVideo
函数中,将 HTML 插入 div
后,您必须获取 div
的第一个 child(它是 iframe
),然后向其中添加一个 onload
事件。
iframe加载完成后,必须使用froogaloop的$f
函数将iframe封装到其库中,然后才能使用api
方法将音量设置为零。
在您的示例中,您试图在 string
中调用 api
方法,但它永远不会起作用。
function embedVideo(video) {
var div = document.getElementById('vimeo');
div.innerHTML = unescape(video.html);
var ifr = div.firstChild;
ifr.addEventListener('load', function(e) {
var player = $f(ifr);
player.api('setVolume', 0);
});
}
function init() {
var js = document.createElement('script');
js.setAttribute('type', 'text/javascript');
js.setAttribute('src', url);
document.getElementsByTagName('head').item(0).appendChild(js);
}
我已经创建了一个 plnkr for you,您的示例有效。
**这是我的解决方案:http://jsfiddle.net/jakeoblivion/phytdt9L/5/
(您需要自己的 play/pause mute/unmute 图标)
//load video muted
var video = $("#myvideo");
video.vimeo("play");
video.vimeo("setVolume", 0);
//toggle play/pause
$('#play-pause').click(function() {
$(this).toggleClass('play');
if ($(this).hasClass('play')) {
//pause video
video.vimeo("pause");
$(this).css('background', 'url("http://unclebarts.co.uk/wp-content/themes/bungabunga_bootstrap/img/video-controls/play.png") no-repeat');
} else {
//unpause video
video.vimeo("play");
$(this).css('background', 'url("http://unclebarts.co.uk/wp-content/themes/bungabunga_bootstrap/img/video-controls/pause.png") no-repeat');
}
});
//toggle mute/unmute
$('#mute-unmute').click(function() {
$(this).toggleClass('mute');
if ($(this).hasClass('mute')) {
//unmute video
video.vimeo("setVolume", 1);
$(this).css('background', 'url("http://unclebarts.co.uk/wp-content/themes/bungabunga_bootstrap/img/video-controls/volume.png") no-repeat');
} else {
//mute video
video.vimeo("setVolume", 0);
$(this).css('background', 'url("http://unclebarts.co.uk/wp-content/themes/bungabunga_bootstrap/img/video-controls/mute.png") no-repeat');
}
});
花了很长时间尝试,但似乎没有任何效果。
我只是想用简单的 Play/Pause Mute/Unmute 控件而不是默认控件将 Vimeo 自动播放静音(音量 0)。
(如果你想添加回默认控件但保持静音,删除“?background=1”。默认情况下 background=1 将设置 video.vimeo("setVolume",0)并隐藏控件,所以我还在没有设置 background=1 的情况下添加了加载静音。
另请注意:"You’ll need to be running on a web server instead of opening the file directly in your browser. Flash and JS security restrictions will prevent the API from working when run locally."
我有一个 vimeo 嵌入式视频,但似乎无法在加载时集成静音。
这是我的视频代码
<div id="vimeo"> </div>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>
<script src="https://f.vimeocdn.com/js/froogaloop2.min.js"></script>
和使用
的 js <script>
// URL of the video
var videoUrl = 'http://www.vimeo.com/76979871?api=1?player_Id=vimeoyo';
var endpoint = 'http://www.vimeo.com/api/oembed.json';
var callback = 'embedVideo';
var url = endpoint + '?url=' + encodeURIComponent(videoUrl)+ '&autoplay=true' + '&callback=' + callback + '&width=420';
function embedVideo(video) {
document.getElementById('vimeo').innerHTML = unescape(video.html);
}
function init() {
var js = document.createElement('script');
js.setAttribute('type', 'text/javascript');
js.setAttribute('src', url);
document.getElementsByTagName('head').item(0).appendChild(js);
var player = 'vimeoyo';
player.api('setVolume', 0);
}
window.onload = init;
</script>
我遇到的问题还在于该视频不是 iframe。
编辑:有一个使用 iframe 静音的答案。这里
Muting an embedded vimeo video
但是使用这个 fiddle 测试过后,它似乎也没有使视频静音。 http://jsfiddle.net/serversides/gfcpjLsy/
由于您是从 vimeo api 动态创建 iframe
,因此您应该仅在加载 iframe 后设置音量。因此,在您的 embedVideo
函数中,将 HTML 插入 div
后,您必须获取 div
的第一个 child(它是 iframe
),然后向其中添加一个 onload
事件。
iframe加载完成后,必须使用froogaloop的$f
函数将iframe封装到其库中,然后才能使用api
方法将音量设置为零。
在您的示例中,您试图在 string
中调用 api
方法,但它永远不会起作用。
function embedVideo(video) {
var div = document.getElementById('vimeo');
div.innerHTML = unescape(video.html);
var ifr = div.firstChild;
ifr.addEventListener('load', function(e) {
var player = $f(ifr);
player.api('setVolume', 0);
});
}
function init() {
var js = document.createElement('script');
js.setAttribute('type', 'text/javascript');
js.setAttribute('src', url);
document.getElementsByTagName('head').item(0).appendChild(js);
}
我已经创建了一个 plnkr for you,您的示例有效。
**这是我的解决方案:http://jsfiddle.net/jakeoblivion/phytdt9L/5/
(您需要自己的 play/pause mute/unmute 图标)
//load video muted
var video = $("#myvideo");
video.vimeo("play");
video.vimeo("setVolume", 0);
//toggle play/pause
$('#play-pause').click(function() {
$(this).toggleClass('play');
if ($(this).hasClass('play')) {
//pause video
video.vimeo("pause");
$(this).css('background', 'url("http://unclebarts.co.uk/wp-content/themes/bungabunga_bootstrap/img/video-controls/play.png") no-repeat');
} else {
//unpause video
video.vimeo("play");
$(this).css('background', 'url("http://unclebarts.co.uk/wp-content/themes/bungabunga_bootstrap/img/video-controls/pause.png") no-repeat');
}
});
//toggle mute/unmute
$('#mute-unmute').click(function() {
$(this).toggleClass('mute');
if ($(this).hasClass('mute')) {
//unmute video
video.vimeo("setVolume", 1);
$(this).css('background', 'url("http://unclebarts.co.uk/wp-content/themes/bungabunga_bootstrap/img/video-controls/volume.png") no-repeat');
} else {
//mute video
video.vimeo("setVolume", 0);
$(this).css('background', 'url("http://unclebarts.co.uk/wp-content/themes/bungabunga_bootstrap/img/video-controls/mute.png") no-repeat');
}
});
花了很长时间尝试,但似乎没有任何效果。
我只是想用简单的 Play/Pause Mute/Unmute 控件而不是默认控件将 Vimeo 自动播放静音(音量 0)。
(如果你想添加回默认控件但保持静音,删除“?background=1”。默认情况下 background=1 将设置 video.vimeo("setVolume",0)并隐藏控件,所以我还在没有设置 background=1 的情况下添加了加载静音。
另请注意:"You’ll need to be running on a web server instead of opening the file directly in your browser. Flash and JS security restrictions will prevent the API from working when run locally."