前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >「简单实战」YouTube Iframe API 的使用

「简单实战」YouTube Iframe API 的使用

作者头像
拾贰
发布于 2019-08-28 02:56:53
发布于 2019-08-28 02:56:53
4.5K022
代码可运行
举报
文章被收录于专栏:前端讲堂前端讲堂
运行总次数:22
代码可运行

前言

业务需求需要在自己的网页上嵌入油管( youtube )上的视频,所以去踩了油管 IFrame Player API 的坑。其实和大多数国内视频网站的 ifram Embed 方式是相似,比如说爱奇艺、腾讯视频、优酷等。在这些视频网站上你会发现都有分享功能,其中有一项就是通用代码。油管提供的 IFrame Player API 也是类似的方案。

0. 网页中基本使用

要使用 IFrame Player API 需要浏览器支持 postMessage 功能。

油管上直接放出了代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<!DOCTYPE html>
<html>
  <body>
    <!-- 1. The <iframe> (and video player) will replace this <div> tag. -->
    <div id="player"></div>

    <script>
      // 2. This code loads the IFrame Player API code asynchronously.
      var tag = document.createElement('script');

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

      // 3. This function creates an <iframe> (and YouTube player)
      //    after the API code downloads.
      var player;
      function onYouTubeIframeAPIReady() {
        player = new YT.Player('player', {
          height: '360',
          width: '640',
          videoId: 'M7lc1UVf-VE',
          events: {
            'onReady': onPlayerReady,
            'onStateChange': onPlayerStateChange
          }
        });
      }

      // 4. The API will call this function when the video player is ready.
      function onPlayerReady(event) {
        event.target.playVideo();
      }

      // 5. The API calls this function when the player's state changes.
      //    The function indicates that when playing a video (state=1),
      //    the player should play for six seconds and then stop.
      var done = false;
      function onPlayerStateChange(event) {
        if (event.data == YT.PlayerState.PLAYING && !done) {
          setTimeout(stopVideo, 6000);
          done = true;
        }
      }
      function stopVideo() {
        player.stopVideo();
      }
    </script>
  </body>
</html>

直接给出了注释,很清晰明了。当然 https://www.youtube.com/iframe_api 也是可以直接用 script 标签直接引入。其中 videoId 可以在油管上找到。我们随便找一个视频就可以在地址栏看到 https://www.youtube.com/watch?v=PkZNo7MFNFg 后面的 v=PkZNo7MFNFg 这个就是 videoId

1. 基本参数

油管的 IFrame Player API 可自定义的程度并不高,可能也是出于要保护对自家产品利益的目的,视频播放结束后推荐列表之类的是去不掉的。

参数名

说明

autoplay

取值0和1,自动播放。默认为0。(我自己试了好像不生效,Stack Overflow 上有人说改了)

cc_lang_pref

显示字幕的默认语言,取值为 ISO 639-1双字母语言代码

cc_load_policy

值:1。默认根据用户偏好设置确定的。设为1会使系统在默认情况下显示字幕,即使在用户关闭字幕。

color

进度条颜色,只有两种可选 red 和 white,设置成 white 时,modestbranding 无效。

modestbranding

是否显示 YouTube 徽标。

controls

是否显示播放器控件 0 不显示,1 显示,默认 1。

disablekb

是否允许键盘控制,0 允许,1 不允许,默认 0。

enablejsapi

是否允许通过 IFrame API 控制播放器。0 不允许,1 允许,默认 0。

end

播放多少秒后停止。(正整数)

fs

是否显示全屏按钮,0 不显示,1 显示,默认 1。

hl

播放器多语言。取值为 [ISO 639-1双字母语言代码。

iv_load_policy

显示视频注释,而设置为3不会显示视频注释。默认值为1。(我没发现默认注释是啥玩意)

listType

有效的参数值playlist,search和user_uploads。

list

结合 listType 确定播放列表的内容。

loop

循环播放视频,0 不循环,1循环。默认值为 0。单视频时需要在playlist放一个相同videoId

origin

大致就是安全域名吧。enablejsapi为 1 的时候,这个参数是当前域名。

playlist

要播放的视频列表,以逗号分隔的视频ID。

playsinline

控制在 iOS 全屏播放。0 全屏,1 不全屏。

start

从多少秒开始播放。(正整数)

widget_referrer

看了半天没看明白的 api 。(大致好像是表示来源……)

rel

播放结束后显示相关视频。0 不显示,1 显示。(这个api已经修改为0推荐同频道,1推荐相关)

showinfo (弃用)

是否显示视频标题和上传者等信息。0 不显示,1 显示。

onYouTubeIframeAPIReady 方法中直接传参就可以了,如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
function onYouTubeIframeAPIReady() {
  player = new YT.Player('player', {
    height: '360',
    width: '640',
    videoId: 'PkZNo7MFNFg',
    playerVars: {
      enablejsapi: 1,
      autoplay: 1,
      controls: 0,
      loop: 1,
      cc_lang_pref: 'en',
      iv_load_policy: 1,        
    },
    events: {
      'onReady': onPlayerReady,
      'onStateChange': onPlayerStateChange
    }
  });
}

2. 钩子函数(hook)

从上面的代码案例大家其实也看到了,在 events 里面有 onReadyonStateChange 其实对应的就是相应的钩子函数。

hook

作用

onReady

在播放器准备就绪后触发。

onStateChange

视频状态发生改变时会触发。

onPlaybackQualityChange

视频播放质量发生变化时触发。

onPlaybackRateChange

视频播放速率发生变化时触发。

onError

播放器中发生错误时触发。

onApiChange

播放器已加载(或卸载)具有公开 API 方法的模块触发。

使用方法就像案例一样。

3. YT.Player 对象方法(几个常用的)

方法名

作用

playVideo()

播放

pauseVideo()

暂停

stopVideo()

停止

seekTo(seconds:Number, allowSeekAhead:Boolean)

跳转到视频多少秒。seconds要跳转的秒数,allowSeekAhead 当秒数已经超出已缓冲时间,是否发出请求

nextVideo()

播放下一个视频

previousVideo()

播放上一个视频

playVideoAt(index:Number)

播放指定视频(index 必传,为视频列表下表)

mute()

设置为静音

unMute()

取消为静音

isMuted()

获取当前是否静音

setVolume(volume:Number)

设置播放器的当前音量

getVolume()

获取播放器的当前音量

setSize(width:Number, height:Number)

设置视频大小(单位:像素)

getPlayerState()

返回播放器的状态

getCurrentTime()

返回视频已播放的时长

getPlaybackQuality()

当前视频的实际质量

setPlaybackQuality(suggestedQuality:String)

设置当前视频的建议质量。suggestedQuality 参数的值可以为small、medium、large、hd720、hd1080、highres 或 default。

getDuration()

返回当前正在播放的视频的时长

getVideoUrl()

返回当前已加载/正在播放的视频的 YouTube.com 网址

getVideoEmbedCode()

返回当前已加载/正在播放的视频的嵌入代码。

getPlaylist()

按当前顺序返回播放列表中视频ID的数组。

getPlaylistIndex()

返回当前正在播放的播放列表中视频的索引。

使用方法我想不用说,大家都知道怎么用啦。player.playVideo()

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019-07-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
jwplayer 隐藏属性方法记载
jwplayer().getPosition(); //播放了多少秒 jwplayer('playerdiv').play(); ||   jwplayer(0).play(true / false);  //是否播放 0为索引 jwplayer(0).pause(true / false); //是否暂停 jwplayer(0).stop(); //停止无参 jwplayer().getBuffer(); //加载了百分之几 jwplayer().getFullscreen(); setFullscree
庞小明
2018/03/07
2.4K0
使用更干净的哔哩哔哩iframe播放器
众所周知,大部分视频网站,个人投稿的视频下方的分享功能,都支持嵌入代码的分享方式,也就是iframe,当然B站也不例外。
泽泽社长
2023/04/17
4.9K1
使用更干净的哔哩哔哩iframe播放器
基于Vue.js的Web视频播放器插件vue-vam-video@1.3.6 今日正式发布
今日正式发布一款基于Vue.js的Web视频播放器插件。可配置,操作灵活。跟我一起来体验吧!
Vam的金豆之路
2021/12/01
2.2K0
基于Vue.js的Web视频播放器插件vue-vam-video@1.3.6 今日正式发布
分享一个开源免费、功能强大的视频播放器库
这是「进击的Coder」的第 571 篇技术分享作者:崔庆才 最近在开发一个前端项目,用到播放视频的功能,所以就查了下有什么前端的视频播放器库可以使用,今天来分享一下给大家。 这个库的名字叫做 Plyr,顾名思义其实就是 Player 的缩写,整体的预览效果如下: 官方网站:https://plyr.io/ GitHub 地址是:https://github.com/sampotts/plyr 看来一圈,发现这个库不仅美观优雅,而且功能十分丰富。 下面我们来介绍下它的一些内置功能。 总体概览 首先我们来
崔庆才
2022/03/04
2.1K0
html5视频常用API接口「建议收藏」
一、虽然有的属性是boolean类型,但仍旧建议按照XHTML书写(属性名=”属性值”)格式,避免出现错误 (下面加粗的属性为常用属性)
全栈程序员站长
2022/09/06
4.1K0
Linux下播放器开发-Mplayer命令行使用介绍
前面文章介绍了Linux下Mplayer播放的交叉编译、移植,在命令行上成功运行了mplayer播放器,完成了视频播放。mplayer支持二次开发,也支持命令行上直接使用;如果在命令行上直接运行,mplayer会默认捕获键盘事件,支持很多快捷键,也支持很多的命令行参数,可以完成视频播放、循环播放设置、播放列表设置、将视频里的音频文件输出保存,将视频帧保存为图片,设置播放速度等等。
DS小龙哥
2022/05/11
4.3K0
Linux下播放器开发-Mplayer命令行使用介绍
自定义HTML5视频播放器
HTML5中<video> 标签定义视频,比如电影片段或其他视频流。也就是说video是用来播放视频的,而且是HTML5中的新标签。所以对老浏览器是不支持的,来看看支持。
Javanx
2019/09/04
2.7K0
自定义HTML5视频播放器
youtube-dl CMD
您可以通过将任何支持的命令行选项放置到配置文件来配置 youtube-dl。在 Linux 和 OS X 上,系统范围的配置文件位于 /etc/youtube-dl.conf,用户范围的配置文件位于 ~/.config/youtube-dl/config。在Windows上,用户范围的配置文件位置是 %APPDATA%\youtube-dl\config.txt 或 C:\Users&lt;user name>\youtube-dl.conf。请注意,默认情况下,配置文件可能不存在,所以您可能需要自己创建它。
SkyRiN
2018/11/20
3.8K0
24.4K Star!强烈推荐一款功能强大的视频播放器组件!
Plyr是一个简单,轻量级,可访问和可定制的 HTML5,YT 和 Vimeo 媒体播放器,支持现代浏览器。
程序员老鱼
2023/10/08
1.1K0
24.4K Star!强烈推荐一款功能强大的视频播放器组件!
Elmedia Player:Mac视频播放器下载工具
Elmedia Player是一款简单好用的Mac视频播放器,拥有大量便利功能,如内置网络浏览器,可让您上网找到合适的视频下载,以及打开网址浏览器,无需烦人的广告即可观看YouTube视频,提供无抖动和撕裂视频、流畅的播放以及完美的高清体验 。
啾咪啾咪
2022/09/20
9880
从零开发弹幕视频播放器
这是一个系列文章。本文章将介绍,如何制作一个简单的视频播放器。用少量关键的代码来实现视频播放器核心功能。
羽月
2022/10/09
4.4K0
从零开发弹幕视频播放器
Elmedia Video Player Pro Mac中文激活版(Mac视频播放软件)
Elmedia Video Player Pro Mac版是一款好用的mac视频播放软件。Elmedia Video Player Pro下载支持多种视频格式,无论是AVI,MP4,WMV,MKV,MP3,M4V。你不需要安装额外的编解码器和插件即可播放。支持Chromecast,AirPlay和DLNA 等无线技术。
Mac小小
2022/08/26
9610
HarmonyOS: 鸿蒙开发视频播放器,真简单!
现在这个直播时代,能开发一个视频播放也是很不错了,在鸿蒙里面开发视频播放 就是简单。
小帅聊鸿蒙
2024/07/16
8280
HarmonyOS: 鸿蒙开发视频播放器,真简单!
PyQt5:QMediaplayer,QVideowidget播放视频
最近在一些关于视频管理类的项目,也还有python好久没有更新,所以做一个简单的视频播放器。
何其不顾四月天
2023/03/10
2.5K0
PyQt5:QMediaplayer,QVideowidget播放视频
Vue3开发:视频播放器video.js使用详解
Video.js是一个通用的在网页上嵌入视频播放器的JS库,比原生video标签有更强大的功能、更好的兼容性、更美观等优点。是一个比较流行的视频播放器,它的官网是https://videojs.com/
BennuCTech
2023/08/28
11.2K0
Vue3开发:视频播放器video.js使用详解
工具系列 | H5自定义视频播放器实现
使用canPlayType()方法检查浏览器是否能够播放指定的视频、声频。canPlayType()方法能够返回以下值:
Tinywan
2020/07/23
5.5K1
Video.js 使用教程 - 手把手教你基于 Vue 搭建 HTML 5 视频播放器
本文首发:《Video.js 使用教程 - 手把手教你基于 Vue 搭建 HTML 5 视频播放器》
蒋川
2022/03/29
12.4K0
Video.js 使用教程 - 手把手教你基于 Vue 搭建 HTML 5 视频播放器
videojs播放器插件使用详解
HLS是苹果公司实现的基于 HTTP 的流媒体传输协议,全称 HTTP Live Streaming,可支持流媒体的直播和点播,主要应用在 iOS 系统,为 iOS 设备(如 iPhone、iPad)提供音视频直播和点播方案。
菲宇
2020/04/16
53.5K2
Lyplayer蓝叶音乐视频播放器-emlog插件
分享一个蓝叶做的音乐视频播放器的插件,现在开始为文章添加上好听的音乐,好看的视频吧! Lyplayer是什么,Lyplayer中文名称蓝叶音乐视频播放器,Lyplayer是蓝叶用老外开源的一个flashplayer播放器源码改的一个播放器,Lyplayer可以播放mp3、flv、mp4类型的文件,支持自定义播放器颜色,自定义xml播放列表等功能,体积下界面美观,作为您网站的音乐视频播放器很不错。 参数配置: path 音乐视频和播放列表xml文件地址 type 类型分为mp3、fl
Youngxj
2018/06/07
1.4K0
网站插入 Aplayer/网易云 音乐播放器
为了方便操作,直接使用Aplayer插件中的MetingJS (基于Meting API 的 APlayer 衍生播放器) 在 Hexo 配置文件 _config.yml 中设置:
十玖八柒
2022/07/28
3.6K0
网站插入 Aplayer/网易云 音乐播放器
推荐阅读
相关推荐
jwplayer 隐藏属性方法记载
更多 >
领券
💥开发者 MCP广场重磅上线!
精选全网热门MCP server,让你的AI更好用 🚀
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验