Как изменить видео src с помощью jQuery?


Как изменить 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, но на самом деле не изменяет воспроизводимое видео.

Я читал об этом .остановиться и. load (), но я не уверен, как их использовать.

8 52

8 ответов:

попробовать $("#divVideo video")[0].load(); после изменения атрибута src.

Я бы предпочел сделать это таким

<video  id="v1" width="320" height="240" controls="controls">

</video>

и затем использовать

$("#v1").html('<source src="test1.mp4" type="video/mp4"></source>' );

Я пробовал использовать тег автозапуска, и .нагрузка. )(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 () работает только в том случае, если внутри элемента video есть исходный элемент 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();
     $(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.

то, что сработало для меня, было выдачей команды "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();

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();
  });
});

самый простой способ-использовать автозапуск.

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

надеюсь, что это поможет кому-нибудь.