如何使用jQuery更改HTML5视频标记的src?
我有这个HTML:
<div id="divVideo">
<video controls>
<source src="test1.mp4" type="video/mp4" />
</video>
</div>
这不起作用:
var videoFile = 'test2.mp4';
$('#divVideo video source').attr('src', videoFile);
如果我使用firebug检查它,它会更改src,但实际上并不会更改正在播放的视频。
我读到了.pause()和.load(),但我不确定如何使用它们。
答案 0 :(得分:114)
更改src属性后尝试$("#divVideo video")[0].load();
。
答案 1 :(得分:15)
我宁愿这样做
<video id="v1" width="320" height="240" controls="controls">
</video>
然后使用
$("#v1").html('<source src="test1.mp4" type="video/mp4"></source>' );
答案 2 :(得分:8)
我尝试过使用autoplay标签,而.load()。play()仍然需要至少在chrome中调用(可能是我的设置)。
使用你的例子用jquery做最简单的跨浏览器方式
var $video = $('#divVideo video'),
videoSrc = $('source', $video).attr('src', videoFile);
$video[0].load();
$video[0].play();
然而,我建议你这样做的方式(易读性和简洁性)是
var video = $('#divVideo video')[0];
video.src = videoFile;
video.load();
video.play();
进一步阅读 http://msdn.microsoft.com/en-us/library/ie/hh924823(v=vs.85).aspx#ManagingPlaybackInJavascript
附加信息:.load()仅在视频元素中有html源元素时才有效(即<source src="demo.mp4" type="video/mp4" />
)
非jquery的方式是:
HTML
<div id="divVideo">
<video id="videoID" controls>
<source src="test1.mp4" type="video/mp4" />
</video>
</div>
JS
var video = document.getelementbyid('videoID');
video.src = videoFile;
video.load();
video.play();
答案 3 :(得分:1)
$(document).ready(function () {
setTimeout(function () {
$(".imgthumbnew").click(function () {
$("#divVideo video").attr({
"src": $(this).data("item"),
"autoplay": "autoplay",
})
})
}, 2000);
}
});
here ".imgthumbnew" is the class of images which are thumbs of videos, an extra attribute is given to them which have video url. u can change according to your convenient.
i would suggest you to give an ID to ur Video tag it would be easy to handle.
答案 4 :(得分:1)
JQUERY
<script type="text/javascript">
$(document).ready(function() {
var videoID = 'videoclip';
var sourceID = 'mp4video';
var newmp4 = 'media/video2.mp4';
var newposter = 'media/video-poster2.jpg';
$('#videolink1').click(function(event) {
$('#'+videoID).get(0).pause();
$('#'+sourceID).attr('src', newmp4);
$('#'+videoID).get(0).load();
//$('#'+videoID).attr('poster', newposter); //Change video poster
$('#'+videoID).get(0).play();
});
});
答案 5 :(得分:0)
最简单的方法是使用自动播放。
<video autoplay></video>
当你通过javascript更改src时,你不需要提及load()。
答案 6 :(得分:0)
对我来说有用的是在更改源代码后发出'play'命令。 奇怪的是,你不能通过jQuery实例使用'play()',所以你只需使用getElementByID,如下所示:
HTML
<video id="videoplayer" width="480" height="360"></video>
JAVASCRIPT
$("#videoplayer").html('<source src="'+strSRC+'" type="'+strTYPE+'"></source>' );
document.getElementById("videoplayer").play();
答案 7 :(得分:-1)
这适用于 Flowplayer 6.0.2 。
<script>
flowplayer().load({
sources: [
{ type: "video/mp4", src: variable }
]
});
</script>
其中变量是javascript / jquery变量值, 视频标签应该是这个
<div class="flowplayer">
<video>
<source type="video/mp4" src="" class="videomp4">
</video>
</div>
希望它可以帮助任何人。