javascript
  • jquery
  • video
  • html5
  • 2010-09-17 4302 views 27 likes 
    27

    Làm cách nào để thay đổi nguồn của video bằng JS?Tôi có thể sử dụng javascript để tự động thay đổi nguồn của video không?

    <video id="myVideoTag" width="670" height="377" autoplay="true" controls="controls"> 
        <source src="http://www.test.com/test.mp4" type='video/mp4; codecs="avc1.42E01E, mp4a.40.2"'> 
    </video> 
    
    +0

    gì nên năng động và những gì là vấn đề? Bạn có trải nghiệm Javascript nào không? – deceze

    +0

    Tôi muốn tạo danh sách phát, vì vậy sau khi video đầu tiên kết thúc, hãy phát video thứ hai. – March

    +0

    Tôi có kinh nghiệm js, tôi đã kết thúc sự kiện như thế này $ ("# myVideo"). Bind ('ended', function() { // ??? Cách chơi tiếp theo }); – March

    Trả lời

    22

    Chắc chắn, bạn chỉ có thể thiết lập các thuộc tính src trên các yếu tố source:

    document.querySelector("#myVideoTag > source").src = "http://example.com/new_url.mp4" 
    

    Hoặc sử dụng jQuery thay vì phương pháp DOM tiêu chuẩn:

    $("#myVideoTag > source").attr("src", "http://example.com/new_url.mp4"​​​​)​ 
    
    +25

    Thay đổi thuộc tính src của thẻ nguồn không có gì. Đặt nó trực tiếp trên thẻ video. – Rob

    +2

    tôi đã bỏ phiếu, nhưng câu trả lời này thực sự sai. không có cách nào thay đổi thẻ 'source': bạn cần thay đổi thuộc tính' src' trong thẻ 'video'. đây là giải pháp tốt nhất mà tôi đã tìm thấy từ trước đến nay: http://stackoverflow.com/a/5371478/950704 – taseenb

    +14

    Làm việc cho tôi, chỉ cần nhớ gọi 'videoElement.load() 'để các thay đổi có hiệu lực. –

    5

    tôi đã chạy vào cùng vấn đề. Theo chủ đề này:

    changing source on html5 video tag

    nó không thể thay đổi src của thẻ nguồn. bạn sẽ phải sử dụng src của thẻ video.

    0

    Mặc dù Campbell đã cung cấp giải pháp đúng, giải pháp hoàn chỉnh hơn cho câu hỏi 'danh sách phát cụ thể' trong tầm tay (như đã nêu trong nhận xét) được cung cấp here. Giải pháp này có thể được áp dụng cho tất cả các định dạng video nếu được triển khai chính xác (tôi đã sử dụng modernizr để phát hiện nguồn nào sẽ phát cho một trình duyệt cụ thể, kết hợp với giải pháp ở trên).

    Giải pháp này sẽ hoạt động (và đã được thử nghiệm) để thay đổi video trong thẻ video HTML5 trong tất cả các trình duyệt HTML5, bao gồm IE8.

    +0

    Tại sao bạn nên downvote? Liên kết giải pháp được cung cấp trong câu trả lời của tôi là chính xác và không có lý do gì để đăng lại toàn bộ giải pháp từ bài đăng khác ở đây ... nếu bạn định downvote, hãy giải thích cho mình. – mkralla11

    12

    tôi đã phải đối mặt với vấn đề này nhiều lần và dựa trên kinh nghiệm trước và đào Tôi có thể đề nghị các tùy chọn này:

    • thay thế thẻ video hoàn toàn

    có, chỉ cần tái chèn <video> yếu tố với các nguồn mới. Đó là cách tiếp cận đơn giản nhưng hiệu quả. Đừng quên khởi tạo lại trình nghe sự kiện. URL của video


    • assign đểvideo.src

    này tôi thấy rất nhiều trong những câu trả lời ở đây, trên stackoverflow, và cũng có trong các nguồn trên github.

    var video = document.getElementById('#myVideo'); 
    video.src = newSourceURL; 
    

    Tính năng này hoạt động nhưng bạn không thể cung cấp tùy chọn trình duyệt để chọn.


    • gọi.load()trên yếu tố video

    theo documentation bạn có thể cập nhật src thuộc tính cho <video> 's <source> thẻ và sau đó gọi .load() để thay đổi có hiệu lực:

    <video id="myVideo"> 
        <source src="video.mp4" type="video/mp4" /> 
        <source src="video.ogg" type="video/ogg" /> 
    </video> 
    
    <script> 
        var video = document.getElementById('myVideo'); 
        var sources = video.getElementsByTagName('source'); 
        sources[0].src = anotherMp4URL; 
        sources[1].src = anotherOggURL; 
        video.load(); 
    </script> 
    

    Tuy nhiên here người ta nói rằng có sự cố trong một số trình duyệt.

    Tôi hy vọng sẽ hữu ích khi có tất cả điều này ở một nơi.

    0

    Kiểm tra điều này. JavaScript này thay đổi src của thẻ nguồn. https://jsfiddle.net/a94zcrtq/8/

    <script> 
     
        function toggle() { 
     
          if ($(this).attr('data-click-state') == 1) { 
     
           $(this).attr('data-click-state', 0) 
     
           document.getElementById("source").src = "http://www.quirksmode.org/html5/videos/big_buck_bunny.mp4"; 
     
           document.getElementById("videoPlayer").load(); 
     
          } else { 
     
           $(this).attr('data-click-state', 1) 
     
           document.getElementById("source").src = "http://techslides.com/demos/sample-videos/small.mp4"; 
     
           document.getElementById("videoPlayer").load(); 
     
          } 
     
         } 
     
    </script>

    0

    này đang làm việc

    <video id="videoplayer1" width="240" height="160" controls> 
        <source id="video_res_1" src="" type="video/ogg"> 
    </video> 
    

    và trong javascript

    document.getElementById("video_res_1").src = "my video url.ogv"; 
    document.getElementById("videoplayer1").load(); 
    

    Điều quan trọng là chức năng .load() mà tải lại các máy nghe nhạc video .

    0

    tôi hy vọng nó sẽ làm việc và xin điều chỉnh tên thuộc tính và id theo nhu cầu của bạn

    mã html dưới đây

    <video controls style="max-width: 90%;" id="filePreview">       
        <source type="video/mp4" id="video_source"> 
    </video> 
    

    js mã bên dưới

    $("#fileToUpload").change(function(e){ 
         var source = $('#video_source'); 
         source[0].src = URL.createObjectURL(this.files[0]); 
         source.parent()[0].load(); 
        }); 
    
    Các vấn đề liên quan