随笔 - 936  文章 - 0  评论 - 3  阅读 - 30万

高起播低延时视频流媒体播放器EasyPlayer-RTSP如何解决播放不了外网RTSP流的问题

一般对于一个播放器,应该支持如下几种显示模式:

  • 等比例,最大化区域显示,不裁剪
  • 等比例,最大区域显示,裁剪
  • 拉伸显示,铺满全屏

要实现这几种显示模式。其实只要对播放控件的布局进行些许调整即可。同时针对用户需求,不断提升播放性能。

今天主要为大家介绍EasyPlayer-RTSP解决播放不了外网RTSP流的问题

提出问题

最近有客户反应EasyPlayer-RTSP-Android播放不了外网的rtsp流,故此我们将EasyPlayer-RTSP-Android的library库移植到自己的项目中,测试可以播放局域网的额rtsp流,到客户那里为什么播放不了外网的rtsp流?

分析问题

移植后的代码如下,在onSurfaceTextureAvailable回调中,调用:

client = new EasyPlayerClient(Main2Activity.this, 
			BuildConfig.RTSPKEY, 
            new Surface(surface),
            mResultReceiver/*,null*/, 
            Main2Activity.this);
client.start("rtsp://admin:admin@114.236.138.141:8804/12",
			Client.TRANSTYPE_UDP, 
            0, 
Client.EASY_SDK_VIDEO_FRAME_FLAG |
			Client.EASY_SDK_AUDIO_FRAME_FLAG,
            "",
            "");

解决问题

移植后的代码中,在启动拉流的start方法中,写死了UDP传输方式,但是有的网络映射不支持udp,有的不支持tcp,需要根据实际情况设置该参数。所以这里设置成tcp模式即可解决该问题。

EasyPlayer-RTSP播放器功能

  • 低延迟:大多数RTSP的播放都面向直播场景,所以,如果延迟过大,比如监控行业,小偷都走了,客户端才看到,或者别人已经按过门铃几秒,主人才看到图像,严重影响体验,所以,低延迟是衡量一个好的RTSP播放器非常重要的指标,目前大牛直播SDK的RTSP播放延迟控制在几百毫秒,VLC在几秒;

  • 音视频同步或跳转:有些开发者为了追求低延迟体验,甚至不做音视频同步,拿到audio video直接播放,导致a/v不同步,还有就是时间戳乱跳,大家真的友好的处理了吗?

  • 支持多实例:一个好的播放器,需要支持同时播放多路音视频数据,比如4-8-9-16-32窗口;

  • 支持buffer time设置:在一些有网络抖动的场景,播放器需要支持精准的buffer time设置;

  • H.265的播放和录制:除了H.264,还需要支持H.265,目前市面上的RTSP H.265摄像头越来越多,支持H.265的RTSP播放器迫在眉睫,此外,单纯的播放H.265还不够,还需要可以能把H.265的数据能录制下来;

  • TCP/UDP模式支持;

  • 静音支持:比如,多窗口播放RTSP流,如果每个audio都播放出来,体验非常不好,所以实时静音功能非常必要;

  • 视频view旋转:好多摄像头由于安装限制,导致图像倒置,所以一个好的RTSP播放器应该支持如视频view实时旋转(0° 90° 180° 270°)、水平反转、垂直反转;

  • 支持解码后audio/video数据输出:大牛直播SDK接触到好多开发者,希望能在播放的同时,获取到YUV或RGB数据,进行人脸匹配等算法分析,所以音视频回调可选;

  • 快照:感兴趣或重要的画面,实时截取下来非常必要;

  • 网络抖动处理(如断网重连):基本功能,不再赘述;

  • 跨平台:一个好的播放器,跨平台(Windows/Android/iOS)很有必要,起码为了后续扩展性考虑,开发的时候,有这方面的考虑,目前大牛直播SDK的RTSP播放器,完美支持以上平台;

  • 长期运行稳定性:提到稳定性,好多开发者不以为然,实际上,一个好的产品,稳定是最基本的前提,不容忽视!

posted on   EasyGBS  阅读(678)  评论(0编辑  收藏  举报
编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 提示词工程——AI应用必不可少的技术
· 字符编码:从基础到乱码解决
· 地球OL攻略 —— 某应届生求职总结
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示