你如何使用jQuery更改视频src?

时间:2010-10-20 23:14:41

标签: jquery video html5

如何使用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(),但我不确定如何使用它们。

8 个答案:

答案 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>

希望它可以帮助任何人。