前端视频播放插件 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 的视频

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM