当前位置: 首页 > 面试题库 >

Youtube视频标题背景

黄扬
2023-03-14
问题内容

我正在尝试创建一些网站模板来帮助我提高前端开发技能,因为我目前在后端工作上要好得多。

我试图在某种程度上复制我自己的网站的样式,这是一个简单的Bootstrap模板。但是,我不想在标题中使用静态照片,而是将其替换为Youtube视频。我首先减少了网站中使用的模板,然后将其减少到我认为不破坏标题的程度。

我在附近找到了一些代码,以显示如何将Youtube视频设置为整个页面的背景,而不是页面特定部分的背景。我怎样才能做到这一点?注意-
由于我的主持人不允许我在他们的服务器上托管视频,因此必须从YouTube流式传输。

我当前的代码:

<!DOCTYPE html>
<html>

<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <!-- Tell the browser to be responsive to screen width -->
    <meta content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no" name="viewport">

    <title>Group Name | Home</title>

    <!-- Bootstrap 3.3.6 -->
    <link rel="stylesheet" href="dist/bootstrap/css/bootstrap.min.css">
    <!-- Font Awesome -->
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.5.0/css/font-awesome.min.css">
    <!-- Ionicons -->
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/ionicons/2.0.1/css/ionicons.min.css">

    <!-- Custom -->
    <link rel="stylesheet" href="dist/css/mainstyle.css">

</head>

<body>

    <header>
        <div class="header-content">
            <div class="header-content-inner">
                <h1>This is going once vid is done.</h1>
            </div>
        </div>
    </header>

    <section class="bg-primary">
        <div class="container">
            <div class="row">
                <div class="col-lg-8 col-lg-offset-2 text-center">
                    <h2 class="section-heading">Placeholder!</h2>
                    <p>I should have found a witty comment to put here, but I'm just gonna put "Placeholder" instead.</p>
                </div>
            </div>
        </div>
    </section>



    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
    <script src="dist/bootstrap/js/bootstrap.min.js"></script>
    <script src="dist/js/mainscript.js"></script>

</body>

</html>

CSS

html,
body {
  height: 100%;
  width: 100%;
}
body {
  font-family: 'Merriweather', 'Helvetica Neue', Arial, sans-serif;
}
h1,
h2,
h3,
h4,
h5,
h6 {
  font-family: 'Open Sans', 'Helvetica Neue', Arial, sans-serif;
}
p {
  font-size: 16px;
  line-height: 1.5;
  margin-bottom: 20px;
}
.bg-primary {
  background-color: #F05F40;
}
section {
  padding: 100px 0;
}
.no-padding {
  padding: 0;
}

header {
    position: relative;
    width: 100%;
    min-height: auto;
    background-image: url('../img/header.jpg');
    background-position: 0% 80%;
    -webkit-background-size: cover;
    -moz-background-size: cover;
    background-size: cover;
    -o-background-size: cover;
    text-align: center;
    color: white;
}
header .header-content {
  position: relative;
  text-align: center;
  padding: 100px 15px 100px;
  width: 100%;
}
header .header-content .header-content-inner h1 {
  font-weight: 700;
  text-transform: uppercase;
  margin-top: 0;
  margin-bottom: 0;
  font-size: 30px;
}
@media (min-width: 768px) {
  header {
    min-height: 100%;
  }
  header .header-content {
    position: absolute;
    top: 50%;
    -webkit-transform: translateY(-50%);
    -ms-transform: translateY(-50%);
    transform: translateY(-50%);
    padding: 0 50px;
  }
  header .header-content .header-content-inner {
    max-width: 1000px;
    margin-left: auto;
    margin-right: auto;
  }
  header .header-content .header-content-inner h1 {
    font-size: 50px;
  }
}
.section-heading {
  margin-top: 0;
}

::-moz-selection {
  color: white;
  text-shadow: none;
  background: #222222;
}
::selection {
  color: white;
  text-shadow: none;
  background: #222222;
}
img::selection {
  color: white;
  background: transparent;
}
img::-moz-selection {
  color: white;
  background: transparent;
}
body {
  webkit-tap-highlight-color: #222222;
}

到目前为止,我最好的(整个页面的背景都在做)

<div class="video-background">
    <div class="video-foreground">
      <iframe src="https://www.youtube.com/embed/W0LHTWG-UmQ?controls=0&showinfo=0&rel=0&autoplay=1&loop=1&playlist=W0LHTWG-UmQ" frameborder="0" allowfullscreen></iframe>
    </div>
  </div>

CSS

* { box-sizing: border-box; }
.video-background {
  background: #000;
  position: fixed;
  top: 0; right: 0; bottom: 0; left: 0;
  z-index: -99;
}
.video-foreground,
.video-background iframe {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  pointer-events: none;
}
@media (min-aspect-ratio: 16/9) {
  .video-foreground { height: 300%; top: -100%; }
}
@media (max-aspect-ratio: 16/9) {
  .video-foreground { width: 300%; left: -100%; }
}

问题答案:

我使用直接链接到视频流的YouTube视频背景创建了一个简单示例(仅JS /
CSS解决方案)。随时在JSfiddle上检查它。另外,您可以将公共Google
Image代理URL更新为任何公共或您自己的CORS代理。

var vid = "FUUw3zNTXH8",

    streams,

    video_tag = document.getElementById("video");



fetch("https://images"+~~(Math.random()*33)+"-focus-opensocial.googleusercontent.com/gadgets/proxy?container=none&url=https%3A%2F%2Fwww.youtube.com%2Fget_video_info%3Fvideo_id%3D" + vid).then(response => response.text()).then(function(data) {

    if (data) {

        streams = parse_youtube_meta(data);

        video_tag.src = streams['1080p'] || streams['720p'] || streams['360p'];

    } else {

        alert('Youtube API Error');

    }

});



function parse_youtube_meta(rawdata) {

    var data = parse_str(rawdata),

            player_response = JSON.parse(data.player_response),

        streams = [],

            result = {};



    data.player_response = player_response;



    if (data.hasOwnProperty('adaptive_fmts')) {

            streams = streams.concat(data.adaptive_fmts.split(',').map(function(s) {

                return parse_str(s)

            }));

        } else {

            if (player_response.streamingData && player_response.streamingData.adaptiveFormats) {

                streams = streams.concat(player_response.streamingData.adaptiveFormats);

            }

        }

        if (data.hasOwnProperty('url_encoded_fmt_stream_map')) {

            streams = streams.concat(data.url_encoded_fmt_stream_map.split(',').map(function(s) {

                return parse_str(s)

            }));

        } else {

            if (player_response.streamingData && player_response.streamingData.formats) {

                streams = streams.concat(player_response.streamingData.formats);

            }

        }



    streams.forEach(function(stream, n) {

        var itag = stream.itag * 1,

            quality = false,

            itag_map = {

                18: '360p',

                22: '720p',

                37: '1080p',

                38: '3072p',

                82: '360p3d',

                83: '480p3d',

                84: '720p3d',

                85: '1080p3d',

                133: '240pna',

                134: '360pna',

                135: '480pna',

                136: '720pna',

                137: '1080pna',

                264: '1440pna',

                298: '720p60',

                299: '1080p60na',

                160: '144pna',

                139: "48kbps",

                140: "128kbps",

                141: "256kbps"

            };

        //if (stream.type.indexOf('o/mp4') > 0) console.log(stream);

        if (itag_map[itag]) result[itag_map[itag]] = stream.url;

    });

    return result;

};



function parse_str(str) {

    return str.split('&').reduce(function(params, param) {

        var paramSplit = param.split('=').map(function(value) {

            return decodeURIComponent(value.replace('+', ' '));

        });

        params[paramSplit[0]] = paramSplit[1];

        return params;

    }, {});

}


html, body {

    height: 100%;

    min-height: 100%;

    background: #444;

    overflow: hidden;

}

video {

    width: 100%;

    height: 100%;

    object-fit: cover;

}


<video loop muted autoplay playsinline id="video"></video>


 类似资料:
  • 那么,如何从“由YouTube自动生成”(主题)的频道获取发布的视频呢?https://www.youtube.com/channel/UCSkJDgBGvNOEXSQl4YNjDtQ/videos 我可以从频道调用中获取主题ID,但当我按此主题ID搜索时,得到的结果完全不同。 如果我运行搜索api调用: 我只得到播放列表和频道。无视频结果。

  • 问题内容: 我正在使用视频代码,并且我想使用其中的任何网址 我已经检查过了。将Youtube视频源显示为HTML5视频标签?。这不能解决我的问题 问题答案: [MediaElement YouTubeAPI示例 将YouTube API封装在HTML5 Media API包装器中,以便可以像对HTML5一样对它进行编程。

  • 问题内容: 我正在尝试将YouTube视频源放入HTML5标签,但似乎不起作用。经过一番谷歌搜索,我发现HTML5不支持YouTube视频URL作为来源。 您可以使用HTML5嵌入YouTube视频吗?如果没有,是否有任何解决方法? 问题答案: 第1步:添加到您喜欢的YouTube网址 步骤2:在来源中寻找标签 第3步:添加到视频标签: 例: 注意那里似乎有些东西。我不知道该字符串可以工作多长时间

  • 问题内容: 关于YouTube API博客,他们正在试验新的 HTML5 视频播放器。 显然,要使用html5播放视频,您必须使用iframe嵌入代码: 但是,如果客户端尚未加入HTML5试用版,则即使客户端的浏览器支持HTML5视频,播放器也会自动退回到Flash播放器中。 如果用户尚未参与HTML5试用版,即使浏览器支持,如何强制HTML5视频播放? 否则,如何禁用Flash后备广告? 问题答

  • 我想使用YouTube API的v3来检索特定YouTube视频的标签。 我可以通过此请求检索视频到搜索endpoint,https://www.googleapis.com/youtube/v3/search?part=snippet 现在,我点击视频endpoint,试图从上面的查询中获取视频的标签。https://www.googleapis.com/youtube/v3/videos?id

  • 我想在android应用程序中播放谷歌驱动器托管的视频。我可以通过视频的私人url在网络浏览器中播放视频。 我想知道我可以使用android youtube api来播放这个视频吗? 如果是,可以给出任何例子… 或建议任何其他方式 谢谢