如何以编程方式获取在youtube中托管的视频的嵌入HTML代码。可用的Java API
答案 0 :(得分:12)
使用YouTube Data API(预先构建GData client libraries,或者您可以自己执行HTTP / XML内容。)
如果视频是可嵌入的,其中一个<media:content/>
条目将包含可嵌入SWF的网址。
答案 1 :(得分:7)
假设您拥有视频的网址,则生成视频的网址相当简单。您需要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参数。正则表达式可行。
答案 2 :(得分:0)
虽然接受的答案有效,但如果您想以编程方式执行此操作,则需要正确的宽高比才能为视频生成最佳的iframe尺寸。我编写了以下php函数,可以动态生成链接。它使用bash实用程序youtube-dl从任何youtube链接获取有关视频的信息,因此您需要确保已安装(apt-get install youtube-dl
应该在Ubuntu或其他debian上运行调味剂)
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>