赞
踩
Vue Video Player
是一个基于Vue.js
的视频播放器库,官方API Video.js API docs
m3u8是UTF-8编码格式。M3U8是指UTF-8编码的M3U文件,而M3U文件是记录了一个索引纯文本文件,打开它时播放软件并不是播放它,而是根据它的索引找到对应的音视频文件的网络地址进行在线播放。M3U8是一种常见的流媒体格式,主要以文件列表的形式存在,既支持直播又支持点播,尤其在Android、iOS等平台最为常用。
注意事项:
需要注意的是如果你使用的是vue2,这里安装时要使用5以下的版本,目前最新的6.0.0版本只支持vue3.
我这里老项目,所以本文以vue2为例
npm install vue-video-player@5.0.1 -save
npm install videojs-contrib-hls@5.15.0 -save
在main.js文件里,引入vue-video-player的插件
import Vue from 'vue'
import VideoPlayer from 'vue-video-player'
//引入样式
import 'vue-video-player/src/custom-theme.css'
import 'video.js/dist/video-js.css'
import 'videojs-contrib-hls'
//使用组件
Vue.use(VideoPlayer)
在页面中,使用vue-video-player提供的<video-player>组件来播放视频
- <template>
- <div>
- <video-player class="video-player vjs-custom-skin" ref="videoPlayer" :options="playerOptions"></video-player>
- </div>
- </template>
-
- <script>
- export default {
- data() {
- return {
- playerOptions: {
- //视频url设置,直播流为例
- sources: [{
- src: 'https://d2zihajmogu5jn.cloudfront.net/bipbop-advanced/bipbop_16x9_variant.m3u8',//视频文件地址
- type: 'application/x-mpegURL'//视频类型,这里可以不写,如果写一定要写对,否则会无法播放
- }],
- // 其他设置项
- notSupportedMessage: "此视频暂无法播放,请稍后再试",//提示信息
- autoplay: true,//是否自动播放
- controls: true,是否显示控制栏
- poster: 'http://path/to/poster.jpg',//视频封面
- }
- }
- },
- mounted() {
- // 通过 ref 访问 videoPlayer 组件实例,播放
- this.$refs.videoPlayer.play()
- }
- }
- </script>
调用的时候使用这个对象操作,通过this.$refs.videoPlayer.player来设置属性和方法
this.$refs.videoPlayer.player
注意事项:
- <vue-video-player
- :options="{ playbackRates: [0.5, 1, 1.5, 2] }">
- </vue-video-player>
language
:设置控件的语言;默认为’en’,可选值有’en’、'zh-CN’等。sources
:定义视频源,可以传入一个数组,每个元素包含一个源地址和类型(例如mp4或webm);默认为空。- <vue-video-player
- :options="{ sources: [{ src: 'path/to/video.mp4', type: 'video/mp4' }] }">
- </vue-video-player>
aspectRatio
:设置播放器的宽高比,可以传入一个字符串(形如’16:9’)或一个小数(宽度除以高度的比例);默认为空。- <video-player @ready="handleReady"></video-player>
-
- methods: {
- handleReady(player) {
- player.src = 'http://example.com/video.mp4';
- player.volume = 0.5;
- }
- }
waiting:当视频由于需要缓冲下一帧而停止时触发
- this.$refs.videoPlayer.player.play() // 播放
- this.$refs.videoPlayer.player.pause() // 暂停
- this.$refs.videoPlayer.player.src(src) // 重置进度条复制代码
6.一些回调函数demo
- <template>
- <div class='demo'>
- <video-player class="video-player vjs-custom-skin"
- ref="videoPlayer"
- :playsinline="true"
- :options="playerOptions"
- @play="onPlayerPlay($event)"
- @pause="onPlayerPause($event)"
- @ended="onPlayerEnded($event)"
- @waiting="onPlayerWaiting($event)"
- @playing="onPlayerPlaying($event)"
- @loadeddata="onPlayerLoadeddata($event)"
- @timeupdate="onPlayerTimeupdate($event)"
- @canplay="onPlayerCanplay($event)"
- @canplaythrough="onPlayerCanplaythrough($event)"
- @statechanged="playerStateChanged($event)"
- @ready="playerReadied"
- >
- </video-player>
- </div>
- </template>
-
- <script>
- export default {
- methods: {
- // 播放回调 视频系列 start
- onPlayerPlay(player) {
- console.log("player play!", player);
- },
-
- // 暂停回调
- onPlayerPause(player) {
- console.log("player pause!", player);
- },
-
- // 视频播完回调
- onPlayerEnded($event) {
- console.log(`player`, $event);
- },
-
- // DOM元素上的readyState更改导致播放停止
- onPlayerWaiting($event) {
- console.log(`player`, $event);
- },
-
- // 已开始播放回调
- onPlayerPlaying($event) {
- console.log(`player`, $event);
- },
-
- // 当播放器在当前播放位置下载数据时触发
- onPlayerLoadeddata($event) {
- console.log(`player`, $event);
- },
-
- // 当前播放位置发生变化时触发。
- onPlayerTimeupdate($event) {
- console.log(`player`, $event);
- },
-
- //媒体的readyState为HAVE_FUTURE_DATA或更高
- onPlayerCanplay(player) {
- console.log("player Canplay!", player);
- },
-
- //媒体的readyState为HAVE_ENOUGH_DATA或更高。这意味着可以在不缓冲的情况下播放整个媒体文件。
- onPlayerCanplaythrough(player) {
- console.log("player Canplaythrough!", player);
- },
-
- //播放状态改变回调
- playerStateChanged(playerCurrentState) {
- // console.log('player current update state', playerCurrentState);
- if (playerCurrentState.timeupdate > 3 * 60 && this.freeBl) {
- this.$refs.videoPlayer.player.pause();
- this.free = this.freeBl;
- }
- },
-
- //将侦听器绑定到组件的就绪状态。与事件监听器的不同之处在于,如果ready事件已经发生,它将立即触发该函数。。
- playerReadied(player) {
- console.log("example player 1 readied", player);
- },
- // 视频 end
- }
- }
- </script>
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。