将Youtube视频源显示为HTML5视频标签?


116

我正在尝试将YouTube视频源放入HTML5 <video>标签中,但似乎不起作用。经过一番谷歌搜索,我发现HTML5不支持YouTube视频URL作为来源。

您可以使用HTML5嵌入YouTube视频吗?如果没有,是否有任何解决方法?


1
下面的stackoverflow.com/questions/5157377/…给出的IFrame解决方案应该可以解决。
S Meaden's

Answers:


15

第1步:添加&html5=True到您喜欢的YouTube网址

步骤2:<video/>在来源中寻找标签

第3步:添加controls="controls"到视频标签:<video controls="controls"..../>

例:

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

注意那里似乎有些expire东西。我不知道该src字符串可以工作多长时间。

仍在测试自己。

编辑(2011年7月28日)请注意,此视频src特定于您用于检索页面源的浏览器。我认为Youtube是动态(至少当前)生成的HTML,因此在测试是否在Firefox中进行复制时,这种方法适用于Firefox,但不适用于Chrome。


77
它仅在特定浏览器中有效的到期和事实使该解决方案变得毫无用处。
2011年

1
它可以播放所有YouTube视频吗?
Raj Pawan Gumdal

2
理论上,YouTube可以随时更改其所有视频的基础存储URL。src上面属性中提供的URL 可能不能保证长期有效。
克里斯·彼得斯

1
是的,有用的信息,但听起来是个坏主意。YouTube可以决定随时关闭对直接视频链接的访问。
奥利弗·莫兰

36

该答案不再起作用,但是我正在寻找解决方案。

截至。2015/2/24。有一个网站(youtubeinmp4),可让您下载中的youtube视频.mp4 format,您可以利用此网站(带有一些JavaScript)来逃避将youtube视频嵌入<video>标签中的麻烦。这是此操作的演示

优点

  • 相当容易实现
  • 实际上,服务器反应非常(检索视频并不需要那么多)。
  • 抽象(公认的解决方案,即使它工作正常,也只有在您事先知道要播放哪些视频的情况下才适用,这适用于任何用户输入的网址)。

缺点

  • 显然,这取决于youtubeinmp4.com服务器及其提供下载链接(可以作为<video>源传递)的方式,因此此答案将来可能无效。

  • 您无法选择视频质量。


JavaScript(之后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;
        }
    }
}

用法(完整)

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

标准视频格式。

用法(迷你)

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

使用缩短的url youtu.be作为src直接在<video>标记中的属性,这种情况不太常见,但相当小。

希望能帮助到你!:)


不错的功能,可以在Mozilla和Chrome上使用,但是如果<video>具有100%的宽度和200px的高度,如何设置视频的宽度和高度。
Anmol Ratan Mohla '17

我已经实现了此解决方案,但是2天后,YT阻止了它。它不再起作用了。:(
apires

不幸的是,这不再起作用。它曾经很棒。我希望有其他解决方案!
Chamilyan's

19

<video>标签是指负荷支持的格式(其可以通过浏览器不同)的视频。

YouTube嵌入链接不仅是视频,还通常是包含逻辑的页面,这些逻辑可检测用户支持的内容以及如何使用HTML5或Flash或其他基于用户PC上可用插件的youtube视频播放。这就是为什么将视频代码与youtube视频一起使用时遇到困难的原因。

YouTube确实提供了开发人员API,可将youtube视频嵌入到您的页面中。

我制作了一个JSFiddle作为实时示例:http : //jsfiddle.net/zub16fgt/

您可以在这里阅读有关YouTube API的更多信息:https : //developers.google.com/youtube/iframe_api_reference#Getting_Started

该代码也可以在下面找到

在您的HTML中:

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

在您的Javascript中:

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

我最近遇到了这个问题:iPad不再支持全屏!您的jsfiddle-example很好地说明了这一点:在PC上它可以工作,在iPad上不行。..我想我应该问一个新的问题,但是这里有人可以发表评论吗?
Snorvarg

1
@Snorvarg我的答案应该在任何符合HTML5的浏览器上都可以使用,只要您在iPad上运行的是iOS(10+)的较新版本,它就可以正常工作。如果您不需要以编程方式控制视频,则可以尝试使用简单的iframe嵌入API。您可以在此处找到一个示例developers.google.com/youtube/iframe_api_reference#Examples,或查看vinayvasyani的答案。如果您仍然有问题,那么我将使用在stackoverflow.com/help/how-to-ask上找到的“如何提出一个好问题”准则来提出一个新问题。
诺曼·布劳

@Snorvarg我遇到了这个productforums.google.com/forum/#!topic/youtube/q7cAnPlN_-Y,这在Firefox中发生了类似的问题,并且已解决,因为他们需要请求全屏权限。因此,我敢打赌,这就是为什么iPad无法使用全屏功能的原因,不幸的是,iOS Safari似乎不支持该功能。另一种解决方案是添加您自己的全屏按钮,然后将iframe播放器的大小调整为屏幕的宽度/高度。
诺曼·布劳

1
感谢您的提示和链接。几天前,我在这里添加了一个问题:stackoverflow.com/questions/49650040/…但是过了一会儿,我决定像您建议的那样制作自己的全屏按钮,并且效果很好。
Snorvarg

很棒的东西,但是我遇到了错误“ TypeError:YT.Player不是构造函数”,如下所述:stackoverflow.com/questions/52062169/…。正如(唯一的)答案所指出的,异步脚本加载和API调用时尚未准备就绪的结果。可以通过实现该onYouTubeIframeAPIReady功能(并将上述代码的最后一个代码块放入其中)来避免这种情况。
jakob.j

-3

如何像hooktube那样做呢?他们实际上并未将视频网址用于html5元素,而是调用该视频的Google视频重定向器网址。看看这里是他们呈现一些despacito随机视频的方法...

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

该代码适用于以下视频页面https://hooktube.com/watch?v=72UO0v5ESUo

另一方面,youtube到mp3变成了货币化的怪物,现在一半的视频下载请求都返回了download.html。

该答案中的2个链接是我对这两种资源的亲身经历。hooktube如何漂亮又新鲜,实际上有助于避免审查和地理限制。.看看,这很酷。youtubeinmp4是一个弹出式怪物,现在称为ConvertInMp4 ...


-6

通过在您的网站中嵌入新的iframe标签,该代码将自动检测您是否正在使用支持HTML5的浏览器。

嵌入YouTube视频的iframe代码如下,只需复制视频ID并替换为以下代码即可:

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

22
“新” iframe标签? iframe已经存在了很长时间……
Zearin

10
这不是答案的解决方案,它明确指出了视频标签,而不是iframe ...
TGarrett

7
也许OP只是不知道iframe标签的存在,这就是为什么他直接询问video标签的原因。否则,他不会询问HTML5(通常)是否支持Youtube视频,但他会将问题限制在video标签上。他甚至问“有什么解决方法吗?” 在他的最后一句话中,所以这个答案是完全正确的。
DanielMuñozParsapoormoghadam

1
要将youtube.com视频嵌入到我的blogger.com博客中,iframe是唯一方便的解决方案。最重要的是,youtube.com生成的嵌入代码是一个iframe代码。另外,w3schools.com推荐iframe:http : //www.w3schools.com/html/html_youtube.asp。没有提及视频标签的地方。
noobninja

以防万一有人好奇...使用视频标签的问题不是YouTube视频的正确方法,因为嵌入YouTube视频的公共URL并不是实际的媒体资源。这就是为什么有人建议使用iframe的原因。尝试使用视频标签将意味着您将使用将来可能会更改的私有URL。就像尝试使用面向对象的语言访问私有成员一样。您可以在此处查看YouTube的官方文档developers.google.com/youtube/iframe_api_reference#Examples
Norman Breau
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.