如何以编程方式获取在youtube中托管的视频的嵌入HTML代码

时间:2011-01-28 05:47:42

标签: java youtube-api

如何以编程方式获取在youtube中托管的视频的嵌入HTML代码。可用的Java API

3 个答案:

答案 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('&amp;',$args) : '');
        $iframe = '<iframe width="' . $width . '" height="' . $height . '" src="//' . $url . '" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen></iframe>';
        return $iframe;
    } else {
        return false;
    }
}

这个功能是相当自我解释的,但这里是细分:

  • 您至少需要提供第一个参数的链接。
  • 第二个参数是宽度,高度或两者的数组。如果您只指定一个,它将保留默认宽高比并为您计算另一个尺寸(这是我通常使用它的方式)。
  • 第三个参数是一个可选的参数数组,它们在函数本身中记录。
  • 这是一个可选的布尔参数,用于&#39;隐私&#39;解释如下:
  

启用隐私增强模式。当您启用隐私增强模式时,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>