首页 > 编程语言 >JavaScript Library – YouTube Embedded、YouTube Player API、YouTube Data API

JavaScript Library – YouTube Embedded、YouTube Player API、YouTube Data API

时间:2023-10-11 22:56:36浏览次数:28  
标签:Embedded player youtube YouTube Player API iframe

YouTube Embed Video

参考: Embed videos & playlists

它和 Google Maps Embed 类似,是通过 iframe 完成的。

<iframe
  width="800"
  style="aspect-ratio: 16 / 9"
  src="https://www.youtube.com/embed/vEZCoe9GJFk"
  title="粉色海洋"
  frameborder="0"
  allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture"
  allowfullscreen
></iframe>

地址栏上面 v=code 就是每个 video 的 unique key 了

效果

它可以做一些配置, 参考: Supported parameters

比如自动播放

src="https://www.youtube.com/embed/vEZCoe9GJFk?autoplay=1"

注意:autoplay 在手机是不 work 的哦,哪怕是用户触发点击事件后你才 append iframe 依然是不 work 的。只有通过 Player API 的 event onReady 才能实现手机的 autiplay(或者说那根本就不叫 autoplay 只是一种 manual call api start video 的方式而已)

还有一个常用的是 rel,默认是 1,作用是在 pause 和 finished 后出现 related 的 videos(包括其它 channel 的 videos 哦)

refer:YouTube – hide "more videos" within youtube iframe when stop video

  

设定成 0 以后,它依然会出现 video,但是只局限在同一个的 channel 内。

 

 

YouTube Player API

参考:IFrame Player API

它是一个 JS 的封装,底层依然是用上面的 iframe,只是多了一个交互沟通。iframe 沟通用的是 postMessage

主页面是无法监听 iframe 里面的事件的,所以 parent child 必须有沟通逻辑,这个也只能是 YouTube 封装才办得到了。

所以,如果有想监听用户的交互行为就必须使用 Player API 了。比如监听用户按 pause 之类的。

引入 @types

yarn add @types/youtube --dev

注:不是 @types/youtube-player 哦。别搞错了。

HTML 和 JS 和 Google Maps JS API 几乎是同一种手法。

HTML

<body>
  <div id="player" style="width: 800px; aspect-ratio: 16 / 9"></div>
</body>

JavaScript

定义全局 init 方法。这个方法名是规定的。不可自定义哦。

declare global {
  interface Window {
    onYouTubeIframeAPIReady: () => void;
  }
}

然后 append script

var tag = document.createElement("script");
tag.src = "https://www.youtube.com/iframe_api";
var firstScriptTag = document.getElementsByTagName("script")[0]!;
firstScriptTag.parentNode!.insertBefore(tag, firstScriptTag);

上面这段是抄来的,最好是是加上 defer 插入到 header。

最后是调用实例化 player。

export function onYouTubeIframeAPIReady() {
  const player = new YT.Player("player", {
    videoId: "wwUN9NWXcnY",
    playerVars: {
      playsinline: 1,
      autoplay: 1,
    },
    events: {
      onReady: () => {
        console.log("ready");
      },
      onStateChange: (e) => {
        console.log("e", e);
      },
    },
  });
  console.log("player", player);
}
window.onYouTubeIframeAPIReady = onYouTubeIframeAPIReady;

 

YouTube Data API

建议大家先这 2 篇

Google Maps Embed API & JavaScript API(了解一下,什么是 API Keys)

Google – Reviews(了解一下,什么是 OAuth)

 

 

 

 

 

Angular 的封装

参考 : Angular YouTube Player component

想深入了解如何封装, 可以参考 Angular 源码

 

标签:Embedded,player,youtube,YouTube,Player,API,iframe
From: https://www.cnblogs.com/keatkeat/p/17758420.html

相关文章

  • 搭建 Kubernetes 集群 —— API 概述
    官网文档:https://kubernetes.io/zh-cn/docs/reference/using-api/RESTAPI是Kubernetes系统的重要部分,组件之间的所有操作和通信均由APIServer处理的RESTAPI调用,大多数情况下,API定义和实现都符合标准的HTTPREST格式,可以通过kubectl命令管理工具或其他命令行工具来......
  • webapi action 参数
    使用地址参数传递(queryString)数据:eg:http://localhost:5063/WeatherForecast?age=123///<summary>///GET方法///</summary>///<returns></returns>[HttpGet(Name="GetWea阿斯顿rFoasasst")]publi......
  • 简单 webapi 登录成功就返回 电脑的进程信息·
    ///<summary>///如果登录成功就返回电脑的进程信息///</summary>///<returns></returns>[HttpPost]publicLoginResponseLogin(LoginRequestreq){if(req.UserName=="admin"&......
  • Web api整合EF Core
    注意这个是asp.netcore,asp.net出门左转首先vs创建或者rider创建新项目空的webapi项目,当前项目版本.NET6建表 添加依赖配置efcore使用nuget添加或者控制台 ,对应数据库和版本自己确定Microsoft.EntityFrameworkCore.SqlServers实体类映射配置和DbContext配置pub......
  • 2亿用户,B站API网关如何架构?
    文章很长,且持续更新,建议收藏起来,慢慢读!疯狂创客圈总目录博客园版为您奉上珍贵的学习资源:免费赠送:《尼恩Java面试宝典》持续更新+史上最全+面试必备2000页+面试必备+大厂必备+涨薪必备免费赠送:《尼恩技术圣经+高并发系列PDF》,帮你实现技术自由,完成职业升级,薪......
  • 各种业务场景调用API代理的API接口教程
    API代理的API接口在各种业务场景中具有广泛的应用,本文将介绍哪些业务场景可以使用API代理的API接口,并提供详细的调用教程和代码演示,同时,我们还将讨论在不同场景下使用API代理的API接口所带来的好处。哪些业务场景可以使用API代理中的API接口?(1)爬虫业务:在爬虫业务中,使用API代理的API......
  • win32汇编-调用API
      Win32API是用堆栈来传递参数的,调用者把参数一个个压入堆栈,DLL中的函数程序再从堆栈中取出参数处理,并在返回之前将堆栈中已经无用的参数丢弃。在Microsoft发布的《MicrosoftWin32Programmer'sReference》中定义了常用API的参数和函数声明,先来看消息框函数的声明:......
  • 快学会这个技能-.NET API拦截技法
    https://www.zhihu.com/tardis/bd/art/608767248?source_id=1001 一、前言本文先抛出以下问题,请在文中寻找答案,可在评论区回答:1、什么是API拦截?2、一个方法被很多地方调用,怎么在不修改这个方法源码情况下,记录这个方法调用的前后时间?3、同2,不修改源码的情况下,怎么对方法的......
  • WebApi接口
     https://blog.csdn.net/weixin_43430200/article/details/126785026?ops_request_misc=&request_id=&biz_id=102&utm_term=c&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduweb~default-5-126785026.142^v94^insert_down28v1&sp......
  • Apipost一大波新功能来袭!连接数据库、TCP协议、MySQL DDL数据导入
    本次Apipost带来数据库功能、TCP协议调试等重量级功能,感兴趣的话大家升级试试吧~数据库配置Apipost提供了数据库连接功能,以便开发者可以在接口调试中可以使用数据库获取入参或进行断言校验目前7.2.2的Apipost支持Mysql、SQLSever、Oracle、Clickhouse、达梦数据库、PostgreSQL、Re......