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

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

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

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

EasyPlayer-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:[email protected]: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播放器,完美支持以上平台;

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

发布了64 篇原创文章 · 获赞 0 · 访问量 6832

猜你喜欢

转载自blog.csdn.net/EasyGBS/article/details/103628434