如何以编程方式获取托管在youtube中的视频的嵌入HTML代码。有哪些Java API可用
zzzyeukh1#
使用YouTube Data API(有预构建的GData client libraries,或者您可以自己完成HTTP/XML)。如果视频是可嵌入的,其中一个<media:content/>条目将包含可嵌入SWF的URL。
<media:content/>
vpfxa7rd2#
假设你有视频的URL,生成一个相当简单。你需要URL的结尾(/watch?v= 后面的部分,我们称之为 ID)。要生成iframe嵌入html,只需将其放置在适当的位置(在src属性中,不要包括括号):
<iframe title="YouTube video player" class="youtube-player" type="text/html" width="640" height="390" src="http://www.youtube.com/embed/{ID}" frameborder="0" allowFullScreen></iframe>
有几种方法可以从URL中获取v参数。正则表达式可以工作。
6jjcrrmo3#
虽然公认的答案是可行的,但如果你想通过编程来实现这一点,你需要正确的长宽比,以便为你的视频生成最佳的iframe尺寸。我写了下面的php函数,可以为你动态生成一个链接。它使用bash实用程序youtube-dl从任何youtube链接中获取有关视频的信息,所以你需要确保安装了apt-get install youtube-dl(apt-get install youtube-dl应该可以在Ubuntu或其他debian版本上工作)
apt-get install youtube-dl
function getYoutubeEmbed($link, $size = [], $options = [], $privacy = false) { $options += [ 'rel' => true, // Show suggested videos when the video finishes. 'controls' => true, // Show player controls. 'showinfo' => true, // Show video title and player actions. ]; $json = json_decode(exec('youtube-dl -j --no-warnings ' . $link . ' 2>/dev/null')); if ($json && !empty($id = $json->id) && !empty($width = $json->width) && !empty($height = $json->height)) { $args = []; foreach ($options as $option => $value) { if (!$value) { $args[] = $option . '=0'; } } if ($size) { if (!empty($size['width']) && !empty($size['height'])) { $width = $size['width']; $height = $size['height']; } else if (!empty($size['width'])) { $height = ceil(($height * $size['width']) / $width); $width = $size['width']; } else if (!empty($size['height'])) { $width = ceil(($width * $size['height']) / $height); $height = $size['height']; } } $url = ($privacy ? 'www.youtube-nocookie.com/embed/' : 'www.youtube.com/embed/') . $id . ($args ? '?' . implode('&',$args) : ''); $iframe = '<iframe width="' . $width . '" height="' . $height . '" src="//' . $url . '" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen></iframe>'; return $iframe; } else { return false; } }
该函数是相当自我解释的,但这里是细分:
启用隐私增强模式。当您启用隐私增强模式时,YouTube不会存储您网站上访问者的信息,除非他们播放视频。
用法示例:
$link = 'https://www.youtube.com/watch?v=adAqQct3vRI'; echo getYoutubeEmbed($link, ['width' => 560], ['rel' => false]);
输出:
<iframe width="560" height="315" src="//www.youtube.com/embed/605gdJGdaPE?rel=0" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen></iframe>
3条答案
按热度按时间zzzyeukh1#
使用YouTube Data API(有预构建的GData client libraries,或者您可以自己完成HTTP/XML)。
如果视频是可嵌入的,其中一个
<media:content/>
条目将包含可嵌入SWF的URL。vpfxa7rd2#
假设你有视频的URL,生成一个相当简单。你需要URL的结尾(/watch?v= 后面的部分,我们称之为 ID)。要生成iframe嵌入html,只需将其放置在适当的位置(在src属性中,不要包括括号):
有几种方法可以从URL中获取v参数。正则表达式可以工作。
6jjcrrmo3#
虽然公认的答案是可行的,但如果你想通过编程来实现这一点,你需要正确的长宽比,以便为你的视频生成最佳的iframe尺寸。我写了下面的php函数,可以为你动态生成一个链接。它使用bash实用程序youtube-dl从任何youtube链接中获取有关视频的信息,所以你需要确保安装了
apt-get install youtube-dl
(apt-get install youtube-dl
应该可以在Ubuntu或其他debian版本上工作)该函数是相当自我解释的,但这里是细分:
启用隐私增强模式。当您启用隐私增强模式时,YouTube不会存储您网站上访问者的信息,除非他们播放视频。
用法示例:
输出:
<iframe width="560" height="315" src="//www.youtube.com/embed/605gdJGdaPE?rel=0" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen></iframe>