我正在尝试创建一些网站模板来帮助我提高前端开发技能,因为我目前在后端工作上要好得多。
我试图在某种程度上复制我自己的网站的样式,这是一个简单的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来播放这个视频吗? 如果是,可以给出任何例子… 或建议任何其他方式 谢谢