youtube 视频引用问题 [隐藏标题和yt 图标]

youtube 视频引用问题 [隐藏标题和yt 图标]

官方文档
下面的代码做到了
自动播放视频
循环播放视频
隐藏YT图标和视频标题

<script src="../../js/jquery-1.7.2.min.js"></script>
<style>
	.iframeVideoBox{    position: relative;padding-bottom: 56.4%;overflow: hidden;}
	.iframeVideoBox iframe{
		position: absolute; 
		top: 0; 
		height: 100%;
		/* 下面这俩很重要 使用css隐藏了标题和YT的图标*/
		width: 300%;
        left: -100%;
		/* 下面这俩很重要 使用css隐藏了标题和YT的图标 end*/
		pointer-events: none;
	}
</style>
<div class="iframeVideoBox">
    <div class="iframeYtVideo" id="iframeYtVideo-01" data-video-id="wR2NfdbiYXc"></div>  
</div>
    
<script>
/*https://developers.google.com/youtube/iframe_api_reference*/
/* youtube 使用 youtube 的控件必须添加 调用成功后 youtube 后自动调用 onYouTubeIframeAPIReady */
var tag = document.createElement('script');
tag.src = "https://www.youtube.com/iframe_api";
var firstScriptTag = document.getElementsByTagName('script')[0];
firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);
/* youtube 使用 youtube 的控件必须添加 调用成功后 youtube 后自动调用 onYouTubeIframeAPIRead  end */

function onYouTubeIframeAPIReady() 
{
	$(".iframeYtVideo").each(function(k,v){
		var id = $(this).attr("id")
		var ytId = $(this).attr("data-video-id")
		var defaults = {
			width: 640,
			height: 360,
			playerVars: {
				autohide: 0,
				autoplay: 1,
				cc_load_policy: 0,
				controls: 0,
				fs: 0,
				iv_load_policy: 3,
				modestbranding: 1,
				playsinline: 1,
				rel: 0,
				modestbranding:1,
			},
			videoId: ytId,
			events: {
				'onReady': onPlayerReady,
				'onStateChange': onPlayerStateChange
			}
		}
		 player = new YT.Player(id,defaults);
		
		function onPlayerReady(event)
		{
			// 静音播放  不然不能自动播放
			event.target.mute();  
        	event.target.playVideo();
		}
		function onPlayerStateChange(event)
		{
			console.log(event.data);
			switch (event.data) {
			  case -1:
				break;
			  case 0: // 循环播放视频
				onPlayerReady(event);
				break;
			  case 1: // playing
				break;
			  case 3: // buffering
				break;
			}	
		}
	})
}

    
 </script>   

### 如何使用 yt-dlp 下载 YouTube 视频 #### 准备工作 为了顺利运行 `yt-dlp`,需确认已安装 Python 版本不低于 3.7,并建议一并部署 FFmpeg ffprobe 工具以便于后期处理视频文件[^2]。 #### 安装 yt-dlp 可以通过 pip 命令轻松安装最新版本的 `yt-dlp`: ```bash pip install yt-dlp ``` #### 编写下载脚本 下面提供了一个简单的 Python 脚本来展示如何利用 `yt-dlp` 来获取指定 URL 的 YouTube 视频。此代码片段定义了名为 `download_video()` 的函数,接受两个参数——目标链接 (`url`) 及保存路径模式 (`output_path`);默认情况下会依据最佳质量自动选择音频流或视频流进行下载[^4]。 ```python import yt_dlp def download_video(url, output_path='%(title)s.%(ext)s'): ydl_opts = { 'format': 'bestvideo+bestaudio/best', 'outtmpl': output_path, } with yt_dlp.YoutubeDL(ydl_opts) as ydl: ydl.download([url]) # 使用示例 video_url = 'https://www.youtube.com/watch?v=dQw4w9WgXcQ' download_video(video_url) ``` 上述例子中设置了 `'format': 'bestvideo+bestaudio/best'` 参数组合,旨在优先选取最高画质与独立的最佳音轨相结合的方式完成下载任务,如果无法满足条件则退而求其次采用单一最优格式。 #### 实现带进度条的功能 对于希望实时跟踪下载状态的应用场景而言,在原有基础上稍作修改即可引入进度显示机制。通过向选项字典内加入回调钩子 (progress_hooks),每当有新的进展发生时都会触发相应的事件处理器来刷新 UI 上的状态指示器[^3]。 ```python from tqdm import tqdm class MyProgressBar(tqdm): def update_to(self, b=1, bsize=1, tsize=None): if tsize is not None: self.total = tsize self.update(b * bsize - self.n) def my_hook(d): if d['status'] == 'downloading': filename = d.get('_filename') total_bytes = int(d.get('total_bytes_estimate')) downloaded_bytes = int(d.get('downloaded_bytes')) pbar = MyProgressBar(total=total_bytes, unit='B', unit_scale=True, desc=f'Downloading {filename}') pbar.update(downloaded_bytes) ydl_opts = { 'format': 'bestvideo+bestaudio/best', 'outtmpl': '%(title)s.%(ext)s', 'progress_hooks': [my_hook], } with yt_dlp.YoutubeDL(ydl_opts) as ydl: ydl.download(['https://www.youtube.com/watch?v=dQw4w9WgXcQ']) ``` 这段增强后的代码实现了更加友好的用户体验,允许用户直观地看到当前操作的具体情况发展趋势。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值