Hiển thị nguồn video Youtube thành thẻ video HTML5?


116

Tôi đang cố gắng đưa nguồn video YouTube vào <video>thẻ HTML5 , nhưng có vẻ như nó không hoạt động. Sau một số tìm kiếm trên Google, tôi phát hiện ra rằng HTML5 không hỗ trợ URL video YouTube làm nguồn.

Bạn có thể sử dụng HTML5 để nhúng video YouTube không? Nếu không, có bất kỳ giải pháp nào không?


1
Giải pháp IFrame như được đưa ra bên dưới bởi stackoverflow.com/questions/5157377/… sẽ là một giải pháp thay thế.
S Meaden

Câu trả lời:


15

Bước 1: thêm &html5=Truevào url youtube yêu thích của bạn

Bước 2: Tìm <video/>thẻ trong nguồn

Bước 3: Thêm controls="controls"vào thẻ video:<video controls="controls"..../>

Thí dụ:

<video controls="controls" 
       class="video-stream" 
       x-webkit-airplay="allow" 
       data-youtube-id="N9oxmRT2YWw" 
       src="http://v20.lscache8.c.youtube.com/videoplayback?sparams=id%2Cexpire%2Cip%2Cipbits%2Citag%2Cratebypass%2Coc%3AU0hPRVRMVV9FSkNOOV9MRllD&amp;itag=43&amp;ipbits=0&amp;signature=D2BCBE2F115E68C5FF97673F1D797F3C3E3BFB99.59252109C7D2B995A8D51A461FF9A6264879948E&amp;sver=3&amp;ratebypass=yes&amp;expire=1300417200&amp;key=yt1&amp;ip=0.0.0.0&amp;id=37da319914f6616c"></video>

Lưu ý rằng dường như có một số expirethứ. Tôi không biết srcchuỗi sẽ hoạt động trong bao lâu .

Vẫn đang thử nghiệm bản thân.

Chỉnh sửa (28 tháng 7 năm 2011) : Lưu ý rằng video src này dành riêng cho trình duyệt bạn sử dụng để truy xuất nguồn trang. Tôi nghĩ rằng Youtube tạo HTML này theo kiểu động (ít nhất là hiện tại), vì vậy, trong quá trình thử nghiệm nếu tôi sao chép trong Firefox, ví dụ: nó hoạt động trong Firefox chứ không phải Chrome.


77
Việc hết hạn và thực tế là nó chỉ hoạt động trong một trình duyệt cụ thể khiến giải pháp này trở nên vô dụng.
pjv

1
Nó có khả năng phát TẤT CẢ video youtube không?
Raj Pawan Gumdal

2
Về mặt lý thuyết, YouTube có thể thay đổi các URL lưu trữ cơ bản cho tất cả các video của họ nếu họ muốn bất kỳ lúc nào. URL được cung cấp trong srcthuộc tính trên có thể không được đảm bảo hoạt động lâu dài.
Chris Peters

1
Vâng, thông tin hữu ích nhưng nghe có vẻ là một ý tưởng tồi. YouTube có thể quyết định đóng quyền truy cập vào liên kết video trực tiếp bất kỳ lúc nào.
Oliver Moran

36

Câu trả lời này không hoạt động nữa, nhưng tôi đang tìm giải pháp.

Kể từ khi . 2015/02/24. có một trang web (youtubeinmp4) cho phép bạn tải video youtube về .mp4 format, bạn có thể khai thác điều này (với một số JavaScript) để thực hiện việc nhúng video youtube vào <video>thẻ. Đây là một bản demo của điều này đang hoạt động.

Ưu điểm

  • Khá dễ thực hiện .
  • Thực tế, máy chủ phản hồi khá nhanh (không mất nhiều thời gian để truy xuất video).
  • Tính trừu tượng (giải pháp được chấp nhận, ngay cả khi nó hoạt động bình thường, sẽ chỉ áp dụng được nếu bạn biết trước video nào bạn sẽ phát, điều này phù hợp với bất kỳ url nào do người dùng nhập).

Nhược điểm

  • Nó rõ ràng phụ thuộc vào các youtubeinmp4.commáy chủ và cách họ cung cấp liên kết tải xuống (có thể được chuyển dưới dạng <video>nguồn), vì vậy câu trả lời này có thể không hợp lệ trong tương lai.

  • Bạn không thể chọn chất lượng video.


JavaScript (sau load)

videos = document.querySelectorAll("video");
for (var i = 0, l = videos.length; i < l; i++) {
    var video = videos[i];
    var src = video.src || (function () {
        var sources = video.querySelectorAll("source");
        for (var j = 0, sl = sources.length; j < sl; j++) {
            var source = sources[j];
            var type = source.type;
            var isMp4 = type.indexOf("mp4") != -1;
            if (isMp4) return source.src;
        }
        return null;
    })();
    if (src) {
        var isYoutube = src && src.match(/(?:youtu|youtube)(?:\.com|\.be)\/([\w\W]+)/i);
        if (isYoutube) {
            var id = isYoutube[1].match(/watch\?v=|[\w\W]+/gi);
            id = (id.length > 1) ? id.splice(1) : id;
            id = id.toString();
            var mp4url = "http://www.youtubeinmp4.com/redirect.php?video=";
            video.src = mp4url + id;
        }
    }
}

Sử dụng (Đầy đủ)

<video controls="true">
    <source src="www.youtube.com/watch?v=3bGNuRtlqAQ" type="video/mp4" />
</video>

Định dạng video tiêu chuẩn.

Sử dụng (Mini)

<video src="youtu.be/MLeIBFYY6UY" controls="true"></video>

Ít phổ biến hơn một chút nhưng khá nhỏ hơn, sử dụng url rút gọn youtu.belàm srcthuộc tính trực tiếp trong <video>thẻ.

Hy vọng nó giúp! :)


Chức năng tốt và hoạt động trên Mozilla và Chrome nhưng cách đặt chiều rộng và chiều cao video nếu <video> có 100% chiều rộng và chiều cao 200px.
Anmol Ratan Mohla

Tôi đã thực hiện giải pháp này, nhưng 2 ngày sau, YT chặn nó. Nó không hoạt động nữa. :(
apires

điều này không hoạt động nữa rất tiếc. Nó đã từng hoạt động tốt. Tôi hy vọng có một giải pháp khác cho nó!
Chamilyan

19

Các <video>từ khóa có nghĩa là để tải trong một đoạn video của một định dạng được hỗ trợ (có thể khác tùy theo từng trình duyệt).

Liên kết nhúng YouTube không chỉ là video, chúng thường là các trang web chứa logic để phát hiện những gì người dùng của bạn hỗ trợ và cách họ có thể phát video youtube, sử dụng HTML5 hoặc flash, hoặc một số plugin khác dựa trên những gì có sẵn trên PC của người dùng. Đây là lý do tại sao bạn gặp khó khăn khi sử dụng thẻ video với video youtube.

YouTube cung cấp API nhà phát triển để nhúng video youtube vào trang của bạn.

Tôi đã tạo JSFiddle làm ví dụ trực tiếp: http://jsfiddle.net/zub16fgt/

Và bạn có thể đọc thêm về API YouTube tại đây: https://developers.google.com/youtube/iframe_api_reference#Getting_Started

Mã cũng có thể được tìm thấy bên dưới

Trong HTML của bạn:

<div id="player"></div>

Trong Javascript của bạn:

var onPlayerReady = function(event) {
    event.target.playVideo();  
};

// The first argument of YT.Player is an HTML element ID. 
// YouTube API will replace my <div id="player"> tag 
// with an iframe containing the youtube video.

var player = new YT.Player('player', {
    height: 320,
    width: 400,
    videoId : '6Dc1C77nra4',
    events : {
        'onReady' : onPlayerReady
    }
});

Gần đây tôi đã gặp sự cố này: Chế độ toàn màn hình không còn được hỗ trợ trên iPad! Ví dụ về jsfiddle của bạn rất hoàn hảo để minh họa: Trên máy tính thì nó hoạt động, trên iPad thì không. ..Tôi đoán tôi nên đặt một câu hỏi mới về vấn đề này, nhưng ai đó ở đây có thể nhận xét?
Snorvarg

1
@Snorvarg Câu trả lời của tôi sẽ hoạt động trên mọi trình duyệt tuân thủ HTML5, miễn là bạn đang chạy phiên bản iOS (10+) mới nhất trên iPad của mình, nó sẽ hoạt động. Nếu bạn không cần điều khiển video theo chương trình, bạn có thể thử sử dụng API nhúng iframe đơn giản. Bạn có thể tìm thấy một ví dụ ở đây developers.google.com/youtube/iframe_api_reference#Examples , hoặc xem câu trả lời vinayvasyani của. Nếu bạn vẫn gặp sự cố, thì tôi sẽ đặt một câu hỏi mới bằng cách sử dụng nguyên tắc "Cách đặt một câu hỏi hay" có tại stackoverflow.com/help/how-to-ask .
Norman Breau

@Snorvarg Tôi đã xem qua này productforums.google.com/forum/#!topic/youtube/q7cAnPlN_-Y , một occuring vấn đề tương tự trong Firefox và nó đã được giải quyết bởi vì họ cần phải yêu cầu quyền toàn màn hình. Vì vậy, tôi sẵn sàng đặt cược rằng đó là lý do tại sao toàn màn hình không hoạt động trên iPad của bạn, điều đáng tiếc là iOS Safari không hỗ trợ. Một giải pháp thay thế là thêm nút toàn màn hình của riêng bạn và chỉ cần thay đổi kích thước trình phát iframe thành chiều rộng / chiều cao của màn hình.
Norman Breau

1
Cảm ơn các mẹo và liên kết của bạn. Tôi đã thêm một câu hỏi cách đây vài ngày, tại đây: stackoverflow.com/questions/49650040/… Nhưng sau một thời gian, tôi quyết định tạo một nút toàn màn hình của riêng mình như bạn đã đề xuất và nó hoạt động tốt.
Snorvarg

Thứ tuyệt vời, tuy nhiên tôi đã gặp phải lỗi "TypeError: YT.Player không phải là một hàm tạo", như được mô tả ở đây: stackoverflow.com/questions/52062169/… . Như câu trả lời (duy nhất) đã chỉ ra, điều này dẫn đến tải tập lệnh không đồng bộ và API chưa sẵn sàng khi được gọi. Điều này có thể tránh được bằng cách triển khai onYouTubeIframeAPIReadyhàm (và đặt khối mã cuối cùng của đoạn mã trên vào bên trong nó).
jakob.j

-3

làm thế nào về việc đó theo cách hooktube làm điều đó? họ không thực sự sử dụng URL video cho phần tử html5 mà là url chuyển hướng video của google gọi đến video đó. hãy xem đây là cách họ trình bày một số video ngẫu nhiên về desacito ...

<video id="player-obj" controls="" src="https://redirector.googlevideo.com/videoplayback?ratebypass=yes&amp;mt=1510077993----SKIPPED----amp;utmg=ytap1,,hd720"><source>Your browser does not support HTML5 video.</video>

mã dành cho trang video sau https://hooktube.com/watch?v=72UO0v5ESUo

mặt khác, youtube sang mp3 đã biến thành một con quái vật kiếm tiền cực lớn, trả lại download.html ngay bây giờ trên một nửa số yêu cầu tải xuống video ... thật khó chịu ...

2 liên kết trong câu trả lời này là kinh nghiệm cá nhân của tôi với cả hai nguồn. hooktube đẹp và mới như thế nào và thực sự giúp tránh kiểm duyệt và hạn chế địa lý .. hãy kiểm tra xem, nó khá tuyệt. và youtubeinmp4 là một con quái vật bật lên hiện được gọi là ConvertInMp4 ...


-6

Với thẻ iframe mới được nhúng vào trang web của bạn, mã sẽ tự động phát hiện xem bạn có đang sử dụng trình duyệt hỗ trợ HTML5 hay không.

Mã iframe để nhúng video YouTube như sau, chỉ cần sao chép ID video và thay thế bằng mã bên dưới:

<iframe type="text/html" 
    width="640" 
    height="385" 
    src="http://www.youtube.com/embed/VIDEO_ID"
    frameborder="0">
</iframe>

22
iframeThẻ "mới" ? iframeđã được xung quanh cho các lứa tuổi ...
Zearin

10
Đây không phải là một giải pháp cho câu trả lời, nó nêu rõ thẻ video và không iframe ...
TGarrett

7
Có lẽ OP không biết về sự tồn tại của iframethẻ và đó là lý do tại sao anh ta trực tiếp hỏi về videothẻ. Nếu không, anh ấy sẽ không hỏi liệu HTML5 (nói chung) có hỗ trợ video Youtube hay không, nhưng anh ấy sẽ giới hạn câu hỏi trong videothẻ. Anh ấy thậm chí còn hỏi "có cách giải quyết nào cho điều đó không?" trong câu cuối cùng của mình, vì vậy câu trả lời này là hoàn toàn hợp lệ.
Daniel Muñoz Parsapoormoghadam

1
Để nhúng video youtube.com vào blog blogger.com của tôi, iframe là giải pháp tiện lợi duy nhất. Trên hết, mã nhúng mà youtube.com tạo là thẻ iframe. Ngoài ra, w3schools.com đề xuất iframe: http://www.w3schools.com/html/html_youtube.asp . Trường hợp thẻ video không được đề cập.
noobninja

Đề phòng nếu ai đó tò mò ... Vấn đề là sử dụng thẻ video không phải là cách tiếp cận phù hợp cho video YouTube vì URL công khai để nhúng video YouTube không phải là tài nguyên phương tiện thực tế. Đó là lý do tại sao có những người đề xuất sử dụng iframe. Việc cố gắng sử dụng thẻ video có nghĩa là bạn sẽ sử dụng các URL riêng tư có thể thay đổi trong tương lai. Nó giống như cố gắng truy cập vào một thành viên riêng trong một ngôn ngữ hướng đối tượng. Bạn có thể xem tài liệu của YouTube chính thức ở đây developers.google.com/youtube/iframe_api_reference#Examples
Norman Breau
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.