前端视频播放插件 videojs
以 angular 为例:
安装videojs
npm install video.js --save
npm install videojs-flash --save
在 angular.json 中引入
"styles": [
"src/styles.less",
"node_modules/video.js/dist/video-js.min.css"
],
"scripts": [
"node_modules/video.js/dist/video.js",
"node_modules/video.js/dist/lang/zh-CN.js",
"src/assets/js/videojs-contrib-hls.min.js"
]
HLS库:videojs-contrib-hls, 下载JS直接引入使用
https://github.com/videojs/videojs-contrib-hls
使用
<video id="my-player" class="video-js vjs-default-skin vjs-big-play-centered" style="width: 100%;height: 100%;" controls preload="auto" data-setup='{}'>
<source id="source" [src]="safeRtmpUrl" type="application/x-mpegURL">
</video>
//
在完成以上的代码编写后,需要注意的几个问题:
由于angular的安全机制问题,导致在组件component中引入外部的url视频资源会发生安全检测不通过的问题,
故这里在app.component.ts中还需要进行DomSanitizer服务的引入,来告知我们使用的RTMP流的特定链接是安全的.
transformRtmpurl() {
console.log(this.option.data.url) // 视频地址
this.safeRtmpUrl = this.sanitizer.bypassSecurityTrustUrl(this.option.data.url)
console.log(this.safeRtmpUrl)
}
initVideo() {
// videojs.options.flash.swf = '../../../../../assets/videojs-assets/video-js.swf'
// var player = videojs(this.videoEleId) //my-player为页面video元素的id
// player.play() //播放
this.player = videojs(
'my-player',
// 'my-player',
{
language: 'zh-CN',
// width: '1000',
// height: '600',
// poster: '',
// controls: true,
// autoplay: false,
// techOrder: ['html5', 'flash'],
// loop: false,
// muted: false,
// preload: 'metadata',
// poster: this.poster || '',
},
function onPlayerReady() {
var myPlayer = this
this.play()
//在回调函数中,this代表当前播放器,
//可以调用方法,也可以绑定事件。
/**
* 事件events 绑定事件用on 移除事件用off
*/
this.on('suspend', function () {
//延迟下载
console.log('延迟下载')
})
this.on('loadstart', function () {
//客户端开始请求数据
console.log('客户端开始请求数据')
})
this.on('progress', function () {
//客户端正在请求数据
console.log('客户端正在请求数据')
})
this.on('abort', function () {
//客户端主动终止下载(不是因为错误引起)
console.log('客户端主动终止下载')
})
this.on('error', function () {
//请求数据时遇到错误
console.log('请求数据时遇到错误')
})
this.on('stalled', function () {
//网速失速
console.log('网速失速')
})
this.on('play', function () {
//开始播放
console.log('开始播放')
})
this.on('pause', function () {
//暂停
console.log('暂停')
})
this.on('loadedmetadata', function () {
//成功获取资源长度
console.log('成功获取资源长度')
})
this.on('loadeddata', function () {
//渲染播放画面
console.log('渲染播放画面')
})
this.on('waiting', function () {
//等待数据,并非错误
console.log('等待数据')
})
this.on('playing', function () {
//开始回放
console.log('开始回放')
})
this.on('canplay', function () {
//可以播放,但中途可能因为加载而暂停
console.log('可以播放,但中途可能因为加载而暂停')
})
this.on('canplaythrough', function () {
//可以播放,歌曲全部加载完毕
console.log('可以播放,歌曲全部加载完毕')
})
this.on('seeking', function () {
//寻找中
console.log('寻找中')
})
this.on('seeked', function () {
//寻找完毕
console.log('寻找完毕')
})
this.on('timeupdate', function () {
//播放时间改变
// console.log('播放时间改变')
})
this.on('ended', function () {
//播放结束
console.log('播放结束')
})
this.on('ratechange', function () {
//播放速率改变
// console.log('播放速率改变')
})
this.on('durationchange', function () {
//资源长度改变
// console.log('资源长度改变')
})
this.on('volumechange', function () {
//音量改变
// console.log('音量改变')
})
}
)
}
destroyVideo() {
if (this.player != null) {
this.player.dispose()
this.player = null
}
}
当前只试过播放 .m3u8 的视频

浙公网安备 33010602011771号