Plyr 是一个简单的可定制的 HTML5 媒体播放器,使用原生 JavaScript 没有其他依赖。支持 YouTube 和 Vimeo 。
特性
- 📼 HTML视频和音频,YouTube和Vimeo -支持主要格式
- 💪 可访问-充分支持VTT字幕和屏幕阅读器
- 🔧 Customizable -用你想要的标记让播放器看起来像你想要的样子
- 😎 干净的HTML -使用正确的元素。
<input type="range">
表示音量,<progress>
表示* 进度,<button>
s表示按钮。没有<span>
或<a href="#">
按钮hacks - 📱 响应-工作与任何屏幕大小
- 💵 货币化-从你的视频赚钱
- 📹 流媒体-支持hls.js, Shaka和dash.js流媒体播放
- 🎛 API -通过一个标准化的API切换播放、音量、搜索等
- 🎤 事件-没有杂乱无章的Vimeo和YouTube api,所有的事件是标准化的格式
- 🔎 全屏-支持本机全屏回退到“全窗口”模式
- ⌨️ 快捷键-支持键盘快捷键
- 🖥 Picture-in-Picture -支持Picture-in-Picture模式
- 📱 Playsinline -支持Playsinline属性
- 🏎 速度控制-在飞行中调整速度
- 📖 多个标题-支持多个标题轨道
- 🌎 i18n支持-支持控件的国际化
- 👌 预览缩略图-支持显示预览缩略图
- 🤟 没有框架-写在“香草”ES6 JavaScript,不需要jQuery
- 💁♀️ SASS -包括在您的构建过程中
插件 & 组件
一些了不起的人已经为cms制作了插件,为JavaScript框架制作了组件:
Type Maintainer Link
WordPress Brandon Lavigne (@drrobotnik) https://wordpress.org/plugins/plyr/
Angular Simon Bobrov (@smnbbrv) https://github.com/smnbbrv/ngx-plyr
React Chintan Prajapati (@chintan9) https://github.com/chintan9/plyr-react
Vue Gabe Dunn (@redxtech) https://github.com/redxtech/vue-plyr
Neos Jon Uhlmann (@jonnitto) https://packagist.org/packages/jonnitto/plyr
Kirby Dominik Pschenitschni (@dpschen) https://github.com/dpschen/kirby-plyrtag
REDAXO FriendsOfRedaxo/skerbis (@skerbis) https://github.com/FriendsOfREDAXO/plyr
svelte-plyr Ben Woodward / benwoodward (@benwoodward) https://github.com/benwoodward
安装
1 | npm |
快速开始
这是一个快速开始的示例。还有一个在 Codepen https://codepen.io/sampotts/pen/jARJYp 上的演示。
HTML
Plyr 扩展了标准的 HTML5 标记,这就是你需要的那些类型。
HTML5 视频
1 | <video poster="/path/to/poster.jpg" controls> |
HTML5 音频
1 | <audio controls> |
对于 YouTube 和 Vimeo ,Plyr 使用标准的 YouTube API 标记:
嵌入 YouTube
1 | <div data-type="youtube" data-video-id="bTqVqk7FSmY"></div> |
嵌入 Vimeo
1 | <div data-type="vimeo" data-video-id="143418951"></div> |
注意:data-video-id 的值可以是视频的 ID 或 URL 。
JavaScript
在 标记之前添加 plyr.js 脚本,然后调用 plyr.setup() 。
1 | <script src="path/to/plyr.js"></script> |
CSS
在
标签中引入 plyr.css 样式。1 | <link rel="stylesheet" href="path/to/plyr.css"> |
SVG 雪碧图
SVG 雪碧图从我们的 CDN 自动加载。你也可以下载后放在自己的服务器中(https://cdn.plyr.io/2.0.13/plyr.svg)
高级
LESS & SASS/SCSS
你可以使用 /src 中包含的 plyr.less 或 plyr.scss 文件作为构建的一部分,并根据你的设计更改变量。
SVG
Plyr 控件中使用的图标被放到 SVG 雪碧图中。默认情况下,雪碧图自动从我们的 CDN 加载。如果你已经有了自己的图标,你可以载入进来( /src/sprite )。
####使用 iconUrl 选项
然而,你可以指定自己的 iconUrl 选项,并且 Plyr 将确定 url 是否是绝对的,由于当前的浏览器限制或需要由 AJAX/CORS 加载,只需直接使用路径即可。
跨域资源 (CORS)
示例中的 <video>
元素使用跨域属性。这是因为 TextTrack 标题是从另一个域加载的。如果你的 TextTrack 字幕也托管在另一个域上,则需要添加此属性,并确保您的主机具有正确的 <meta>
设置。有关 CORS 可查看 MDN 文档:https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS
标题
支持 WebVTT 字幕。要添加字幕轨道,请检查 HTML 中是否有
JavaScript
初始化
默认情况下,setup() 将查找所有 <video> ,<audio>
和 [data-type]
元素。查找到的每个目标媒体元素都将被包裹在 <div>
中以添加样式和设置。你可以指定使用 setup()
的各种参数,包括不同的节点列表 ,HTML 元素 ,HTML 元素数组或字符串选择器,如下所示:
传递一个节点列表:
1 | plyr.setup(document.querySelectorAll('.js-player'), options); |
传递一个 HTML 元素:
1 | plyr.setup(document.querySelector('.js-player'), options); |
传递一组 HTML 元素数组:
1 | plyr.setup([ |
传递一个字符串选择器:
1 | plyr.setup('.js-player', options); |
节点列表,HTML 元素或字符串选择器可以是目标 <video> ,<audio> 或 [data-type]
(嵌入)元素本身或容器元素。
只传递选项对象:
1 | plyr.setup(options); |
setup() 将返回一个可以与 API 方法一起使用的实例数组。
触摸范围
一些移动浏览器(特别是 iOS 上的移动 Safari)似乎有与 <input type ="range">
元素有关的问题,触摸轨迹设置的值不起作用,滑动拇指可能会很棘手。为了解决这个问题,我创建了 RangeTouch ,我建议你将它用在你的解决方案中。这是一个很小的脚本,对于触摸设备上的用户来说,这是非常有益的。
API
访问 plyr 实例的最简单方法是将调用的返回值存储到 setup() 中:
1 | var players = plyr.setup('.js-player'); |
这将返回所有被初始化的实例数组。另一种方法是使用 plyr.get() 获取给定容器中的所有实例,例如:
1 | var players = plyr.get('.js-player'); |
如果没有参数被传递,它将在当前文档中查找所有实例。这将返回给定选择器中找到的所有实例的数组。
最后一个选项是通过事件处理程序访问实例:
1 | instance.on('ready', function(event) { |
赞赏一下 坚持原创技术分享,您的支持将鼓励我继续创作!