Vue+Video.js rtmp/flv直播流媒体配置
2020-02-02 22:20
2683 查看
rtmp/flv直播配置
必须引入flash
//npm install videojs-flash
//import videojs-flash
<video id="my-player" class="video-js vjs-default-skin vjs-big-play-centered vjs-fluid" preload="auto" autoplay style="width: 1200px;height: 640px;" controls data-setup="{}" ></video>import videojs from "video.js"; import "video.js/dist/video-js.css"; import "videojs-flash";
methods: {
playVideo() { var videoPlayer = videojs( "my-player", { sources: [ { src: "rtmp://www.91cb.site:8510/live/product1621", type: "rtmp/flv" } ], muted: true, controls: true, autoplay: true, loop: true, techOrder: ["html5", "flash"], width: "1200", height: "640" }, function() { this.play(); } ); },
}
videojs(el, options, cb)
: 接受三个参数: video
标签id
, 要实例化的videojs
配置, 回调函数;
常用的videojs
配置选项:
- preload: 是否预加载
- muted : 实现静音播放, 有一些浏览器需要静音才能实现加载之后自动播放
- controls: 将显示视频控件, 如果不需要则去掉controls即可
- autoplay: 视频在加载完成之后自动播放
- poster: 视频封面图片
- loop: true/false, 是否循环播放
- notSupportMessage: 浏览器无法播放时的提示信息
- techOrder: 播放控件,默认是
html5
,这里需要播放rtmp
所以首选项要是flash
- fluid: 流式布局,自适应父元素大小
更多的配置可以看videojs-options
常用方法和事件
- autoplay()获取或者设置自动播放属性
- currentTime()设置或者获取当前播放进度
- duration()获取视屏的总长度,一般要等到视屏对象完全加载后才能获取到,一般我们会使用定时轮询的方式来获取总时长
- ended()获取当前视屏对象是否已经处于结束状态
- enterFullWindow() 当全屏不支持我们可以视频容器延伸到浏览器将让我们一样宽。经过试验改api完全无法使视屏进入全屏。分析源码后发现真正进入全屏的api应该是requestFullscreen(),但可惜该api只能又手势触发函数执行,连模拟点击都没法触发他。
- exitFullscreen() 退出全屏,有效的
- exitFullWindow() 退出全屏,试了没什么用
- height() 设置/获取播放器的高度
- width() 设置/获取播放器的宽度
- isFullscreen() 检查是否处于全屏模式
- load() 开始加载视屏
- loop() 在视频中获取或设置循环属性元素
- muted() 获取当前的静音状态
- pause() 暂停视频
- paused() 检查视屏是否暂停
- play() 播放视屏
- played() 检查视屏播放状态
- preload() 获取或设置预加载属性
- ready() 视屏对象加载完成后调用ready中的回调函数
- poster() 获取或设置海报图像源url
- reset() 重载视屏
- src() 更换视频源
- dispose() 销毁视频实例
更多事件以及
apivideojs-api
事件监听采用
on('listener', cb),
off('list')移除事件监听
this.on('firstplay', e => {}); this.on('progress', e => {}); this.on('timeupdate', e => {});[/code]
- 视频开始加载时会触发
firstplay
- 实例化之后会触发
progress
,有时候实例化之后无法与后台建立连接,可以在回调设置一个定时器,监听3s后的currentTime()
判断是否建立连接 - 视频播放时会不断触发
timeupdate
事件,结合currentTime()
可以检测是否播放中断
遇到的问题
-
videojs
播放窗口小于400300时无法自动播放,因为video-js.swf
文件跨域.播放rtmp
视频时videojs
会在cdn
上加载一个video-js.swf
文件,该文件必须同源才能支持播放窗口小于400300时自动播放 -
使用
dispose()
销毁实例时会将页面上的dom
节点一并移除,如果需要二次复用,则可以在初始实例化时先将节点保存起来 -
videojs提示 (CODE:4 MEDIA_ERR_SRC_NOT_SUPPORTED) No compatible source was found for this video.可能是没有开始浏览器
flash
支持,chrome
默认是询问,需要改成允许
转载于:https://www.cnblogs.com/65Seeker/p/11244428.html
- 点赞
- 收藏
- 分享
- 文章举报
相关文章推荐
- 实时监控、直播流、流媒体、视频网站开发方案流媒体服务器搭建及配置详解:使用nginx搭建rtmp直播、rtmp点播、,hls直播服务配置详解
- nginx+mmfpeg+video.js实现直播效果(含centos7环境配置步骤)
- 【vue】video结合cyberplayer.js实现flv视频播放
- 实时监控、直播流、流媒体、视频网站开发方案流媒体服务器搭建及配置详解:使用nginx搭建rtmp直播、rtmp点播、,hls直播服务配置详解
- EasyDSS高性能RTMP、HLS(m3u8)、HTTP-FLV流媒体服务器前端重构(一)-从零开始搭建 webpack + vue + AdminLTE 多页面脚手架
- EasyDSS高性能RTMP、HLS(m3u8)、HTTP-FLV流媒体服务器前端重构(二) webpack + vue + AdminLTE 多页面提取共用文件, 优化编译时间
- EasyDSS高性能RTMP、HLS(m3u8)、HTTP-FLV流媒体服务器前端重构(三)- webpack + vue + AdminLTE 多页面引入 element-ui
- vue + typescript + video.js实现 流媒体播放 视频监控功能
- Nginx-rtmp+ FFmpeg +Docker + vue.js 直播系统搭建
- 20190227最近比较纠结的问题vue的video中视频的播放和nginx-rtmp的推流以及什么时候推流的分析
- 基于nginx-rtmp-module、javaCV、video.js的页面视频播放
- vue.js路由配置vue-router的基础学习 - 概念篇
- vue使用video.js进行视频播放功能
- vue-cli中的check-versions.js配置文件包括semver,chalk,shell插件的解释
- nginx 流媒体 flv 播放 以及上传大小 配置文件设置
- 《前端福音,vue.js 之豆瓣电影组件大揭秘-video》
- EasyDarwin开源流媒体服务器提供的RTMP直播推送库
- PLDroidPlayer 是 Pili 直播 SDK 的安卓播放器。支持所有直播常用的格式,如:RTMP、HLS、FLV。拥有优秀的功能和特性,如:首屏秒开、追帧优化、丰富的数据和状态回调、硬解软解
- vue.js+mongoDB+node(express)环境配置
- video.js支持m3u8格式直播