Как изменить src тега видео HTML5 с помощью jQuery?
Я получил этот 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);
Он изменяет src, если я проверяю его с помощью firebug, но на самом деле не меняет воспроизводимое видео.
Я читал о .pause () и .load (), но не знаю, как их использовать.
[0]
. Но оказалось, что его нужно добавить,[0]
хотя мой селектор выбирал ровно один тег видео.Я бы предпочел сделать это так
<video id="v1" width="320" height="240" controls="controls"> </video>
а затем используйте
$("#v1").html('<source src="test1.mp4" type="video/mp4"></source>' );
источник
Я пробовал использовать тег 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();
источник
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(); }); });
источник
Для меня сработало выполнение команды «play» после изменения источника. Как ни странно, вы не можете использовать play () через экземпляр jQuery, поэтому вы просто используете getElementByID следующим образом:
HTML
<video id="videoplayer" width="480" height="360"></video>
JAVASCRIPT
$("#videoplayer").html('<source src="'+strSRC+'" type="'+strTYPE+'"></source>' ); document.getElementById("videoplayer").play();
источник
$(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.
источник
Самый простой способ - использовать автовоспроизведение.
<video autoplay></video>
Когда вы меняете src через javascript, вам не нужно упоминать load ().
источник
Это работает на 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>
Надеюсь, это кому-нибудь поможет.
источник