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

w3nuxt5m  于 2023-03-28  发布在  Java
关注(0)|答案(3)|浏览(158)

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

zzzyeukh

zzzyeukh1#

使用YouTube Data API(有预构建的GData client libraries,或者您可以自己完成HTTP/XML)。
如果视频是可嵌入的,其中一个<media:content/>条目将包含可嵌入SWF的URL。

vpfxa7rd

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参数。正则表达式可以工作。

6jjcrrmo

6jjcrrmo3#

虽然公认的答案是可行的,但如果你想通过编程来实现这一点,你需要正确的长宽比,以便为你的视频生成最佳的iframe尺寸。我写了下面的php函数,可以为你动态生成一个链接。它使用bash实用程序youtube-dl从任何youtube链接中获取有关视频的信息,所以你需要确保安装了apt-get install youtube-dlapt-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;
    }
}

该函数是相当自我解释的,但这里是细分:

  • 至少需要为第一个参数提供一个链接。
  • 第二个参数是一个宽度、高度或两者都有的数组。如果你只指定一个,它将保留默认的长宽比,并为你计算另一个尺寸(这是我通常使用它的方式)。
  • 第三个参数是一个可选的参数数组,这些参数在函数本身中记录。
  • fourt是'privacy'的可选布尔参数,解释为:

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

相关问题