videos播放rtmp流遇到的一些问题

不完美00 发表于 2019-03-29 12:48:58

标签: videojs, rtmp

- +

 利用videos播放rtmp流遇到的一些问题

此处使用的是videojs的5.xx版本,尝试利用6.xx或者7.xx是播放不了rtmp流的,6以上的videojs版本默认取消了flash的支持,因此在项目中如果必须使用高版本,可以添加支持flash的js文件videojs-flash。

在项目中因为需要使用高版本来播放HLS,因此与5.xx版本冲突,所以我的解决办法是添加了:

<script src="https://cdn.jsdelivr.net/npm/videojs-flash@2/dist/videojs-flash.min.js"></script

tips:保证videojs和videocss是同一个版本。

a)       The media could not be loaded, either because the server or network failed or because the format is not supported.

                  i.           遇到此问题时首先是在网上搜索报错的原因,看看有没有类似问题的解决办法,结果也是搜到的东西对我来说并没有什么用,因为我是在chrome浏览器报的错误,所以又下了firefox来测试,结果也是报同样的错误,然后用window自带的edge,很开心可以播放了,把连接地址发给朋友他们的chrome竟然可以播放,查看了下chrome的版本,跟我的chrome一模一样,唯一不同的是chrome的位数(所以以后的路就走偏了,把问题放到chrome位数上了),把连接给大佬试了下,也是可以播放的,把我的报错截图全部发给大佬,呵呵,一语惊醒梦中人,是我本地resource的http地址被篡改了,resource的src换成https,完美,能播放了。所以我这是播放源地址有误,找不到可以播放的源,才会报错。

b)       "FLASH: rtmpconnectfailure" 

                   i.            此问题是rtmp媒体资源有问题,按照网上搜到的可以播放的rtmp流地址大部分是不能播放的,此处放一个可以播放的源:韩国GoodTV,rtmp://mobliestream.c3tv.com:554/live/goodtv.sdp

c)        利用videojs播放rtmp流用dem调试时 video标签属性preload=”auto”是可以自动播放的,放到弹框里面不能自动播放,设置preload="true",js配置里面var myPlayer = videojs('my-video',{autoplay: true});可以播放

d)       切换播放源

videojs("my-video").ready(function() {
    var myPlayer = this;//要生成新的player对象
    myPlayer.src(url);// 切换播放源为url
    myPlayer.play();
});

e)       因为要点击不同的按钮显示不同的视频流,所以在每次关闭前一个视频的时候我的做法是myPlayer.dispose(),销毁,以防止占用资源,但是发现销毁之后再次获取video的时候会报错,其实销毁的时候video也会不存在了,所以在隐藏掉弹框时,myPlayer.pause()即可。不会影响点击其他按钮时视频的播放。(此处我做了一个处理是:因为只有一个弹框,每次点击都会有不同的源进行播放,在每次生成myPlayer的时候,放到一个数组里面,当弹框隐藏/消失的时候,把当前的myPlayer删除。个人觉得会有更好的办法来处理myPlayer,切换视频源不失为一个好的办法,待测试)。

f) 控制台报错No compatible source was found for this media.,是因为浏览器默认是禁止flash自动播放的,这时候需要开启允许flash,在chrome下询问也是不行的,必须保证flash是可用的,这里添加了一个判断flash是否禁用的代码,可以在页面上加上,开启flash

<a href="https://get.adobe.com/cn/flashplayer/"; class="flashLoadMsg" target="_blank">安装或者启用FLASH播放器</a>

g) 项目中使用videojs播放HLS时发现,当.m3u8文件不存在或者由于转流时的时间间隔会导致.m3u8文件短暂性报文件不存在的错误,后续即使有文件输出由于已经报错所以video也不会播放文件。通过搜索文章,得知videojs存在error事件,此事件绑定在生成的player对象中,因此在遇到error时可以在onPlayerReady方法中给player对象绑定error事件,进行错误处理

this.on('error',function(e){
    var _this = this;
    errLoad = setInterval(function() {
    clearInterval(errLoad);
    _this.src(url);
    _this.play();
    },3000);
 })//serInterval防止在下一次播放时还会出现报错现象


后续遇到问题,继续积累



possitive(17) views15033 comments0

发送私信

最新评论

请先 登录 再评论.
相关文章
  • WebAssembly工作原理和JavaScript语言性能对比分析

    本文简单说明WebAssembly(简称wasm)工作原理和高性能的原由(和JavaScript相比)。不过需要提醒的是Wasm并非设计来完全替代JS,而是对JS的一个强大补充,JS中...

  • 常见面试题JavaScript闭包(ES5语法)

    JavaScript闭包(Closure)是常见的JS面试题,是否理解闭包是一个简单的区分JS初级和高级程序员的判例。几乎每个JS程序员都在使用闭包,有意或无意间。比如编写一个jQuery鼠标点击处理函数:$(function()

  • 前端开发框架技术选型:Angular2 VS React VS jQuery

    Angular和React是主流的2个前端开发框架,但是严格来说两者并非对等的概念。Angular是一个基于MVC(或者MVVM)的框架,包含model(模型)/view(视图)/controll...

  • HTTP1.1协议现状、问题和解决方案

    HTTP的现状最早的HTTP协议非常简单,只能用来传送文本,方法也只有GET,后来逐步发展到1.1,能够支持多种MIME格式数据(如文本、文件),支持GET,POST,HEAD,OPTI...

  • 三维向量的简单运算和实用意义

    在WebGL的实际应用中我们广泛使用向量的几何运算来计算角度、距离,判断点线、点面之间的关系,比如物体之间的碰撞检测。本文简要介绍三维计算机图形学中常用的...

  • Blender2.7 快捷键一览表

    通用操作
    停止当前操作:ESC
    快捷搜索:SPACE撤销:ctrl+z重做:ctrl+shift+z渲染:F12
    单选:鼠标右键(RMB)全选:A
    框选:B
    刷选:...

  • 如何使用Three.js加载obj和mtl文件

    OBJ和MTL是3D模型的几何模型文件和材料文件。在最新的three.js版本(r78)中,以前的OBJMTLLoader类已废弃。现在要加载OBJ和MTL文件,需要结合OBJLoader和MTLLoade...

  • Three.js入门教程5 - 10个必须知道的编程技巧

    作者为Google的Paul,关于如何写出好的WebGL代码的文章。和很多开发者一样,我通过实践学习,但同时我也向其他更有经验的开发者们学习。在过去的几个月中,我在c...

  • WebGL入门教程3 - Canvas、Context、API和绘制一个矩形

  • 使用Canvas绘制完美的不完美圆形

    真实世界是不完美的,当我们需要模拟真实世界时,经常需要引入不完美/不规则的形状。比如陨石、雨滴、行星、树叶、绵延的海岸线、云朵等。本文介绍如何基于Canva...

  • inline-block元素设置overflow:hidden属性导致相邻行内元素向下偏移

    在表单修改界面中常会使用一个标签、一个内容加一个修改按钮来组成单行界面,如图1所示。那么在表单总长度受限的情况下,当中间的邮箱名称过长时,会遮盖到旁边...

  • 如何使用纯CSS3实现一个3D泡沫

    要实现一个逼真的泡沫,涉及到比较复杂的光学/物理学知识。我们这里先简化下问题,实现一个相对简单而足够实用的泡沫元素。我们可以把基础的泡沫元素应用在很多场景中,比如水景、泡咖啡、啤酒甚至火焰特效中。泡沫首先是一个圆形元素.bubble

  • 如何使用CSS3/SCSS实现逼真的车窗雨滴效果

    在天气预报类的Web移动应用中,常常需要实现屏幕的雨滴效果,表示阴雨天气。感觉上比较神奇,其实想通了,这个效果的实现只需要一点物理知识和CSS3的简单变换。实现一个小雨滴首先雨滴是一个个小的椭圆形元素:.raindrop

  • 更多...