Open Don0429 opened 3 months ago
推荐用 exo 模式的 rtsp 去试试,ijk 软解模式多播 rtsp 感觉更大问题是它断流后重连不上了
推荐用 exo 模式的 rtsp 去试试,ijk 软解模式多播 rtsp 感觉更大问题是它断流后重连不上了
设置下面这个是吧
PlayerFactory.setPlayManager(Exo2PlayerManager.class);//EXO模式
我设置过,也会出现这个问题呢,这样初始化
public static void init(){
PlayerFactory.setPlayManager(Exo2PlayerManager.class);//EXO模式
// setExoPlayerCacheMode();
setShowType(GSYVideoType.SCREEN_MATCH_FULL);
setGSYVideoPlayerOptions();
}
且每隔5秒调用下这个,怕长时间播放内存等资源递增
GSYVideoManager.instance().clearAllDefaultCache(getActivity());
clearAllDefaultCache 不用调用,没关系的,Exo2PlayerManager.class 不需要 options , 用 exo 的好处是为了你可以更方便通过 media3-exoplayer-rtsp 的源码去定位问题
改用EXO模式,也出现这种转圈情况: zuo左边视频是RTSP流(大概十几分钟就出现转圈,比较快),右边是demo中的一个视频地址(大概久一点才会暂停转圈(设置了循环播放的))
2024-06-17 13:41:46.776 11531-11692 IJKMEDIA cn.lgwl.iot.ele V stream 0, sample 66353, dts 4423533333
2024-06-17 13:41:46.776 11531-11692 IJKMEDIA cn.lgwl.iot.ele V stream 1, sample 95254, dts 4423514558
2024-06-17 13:41:46.776 11531-11692 IJKMEDIA cn.lgwl.iot.ele V stream 0, sample 66353, dts 4423533333
2024-06-17 13:41:46.776 11531-11692 IJKMEDIA cn.lgwl.iot.ele V stream 1, sample 95255, dts 4423560998
2024-06-17 13:41:46.819 11531-11673 lgwl_FrVid...orFragment cn.lgwl.iot.ele E clearAllDefaultCache...
2024-06-17 13:41:46.836 11531-11706 IJKMEDIA cn.lgwl.iot.ele D nal_unit_type: 1, nal_ref_idc: 2
2024-06-17 13:41:46.837 11531-11692 IJKMEDIA cn.lgwl.iot.ele V stream 0, sample 66354, dts 4423600000
2024-06-17 13:41:46.837 11531-11692 IJKMEDIA cn.lgwl.iot.ele V stream 1, sample 95255, dts 4423560998
2024-06-17 13:41:46.837 11531-11692 IJKMEDIA cn.lgwl.iot.ele V stream 0, sample 66354, dts 4423600000
2024-06-17 13:41:46.837 11531-11692 IJKMEDIA cn.lgwl.iot.ele V stream 1, sample 95256, dts 4423607438
2024-06-17 13:41:46.903 11531-11709 IJKMEDIA cn.lgwl.iot.ele D nal_unit_type: 1, nal_ref_idc: 2
2024-06-17 13:41:46.908 11531-11692 IJKMEDIA cn.lgwl.iot.ele V stream 0, sample 66355, dts 4423666667
2024-06-17 13:41:46.908 11531-11692 IJKMEDIA cn.lgwl.iot.ele V stream 1, sample 95256, dts 4423607438
2024-06-17 13:41:46.908 11531-11692 IJKMEDIA cn.lgwl.iot.ele V stream 0, sample 66355, dts 4423666667
2024-06-17 13:41:46.908 11531-11692 IJKMEDIA cn.lgwl.iot.ele V stream 1, sample 95257, dts 4423653878
2024-06-17 13:41:46.908 11531-11692 IJKMEDIA cn.lgwl.iot.ele V stream 0, sample 66355, dts 4423666667
2024-06-17 13:41:46.908 11531-11692 IJKMEDIA cn.lgwl.iot.ele V stream 1, sample 95258, dts 4423700317
2024-06-17 13:41:46.969 11531-11692 IJKMEDIA cn.lgwl.iot.ele V stream 0, sample 66356, dts 4423733333
2024-06-17 13:41:46.969 11531-11710 IJKMEDIA cn.lgwl.iot.ele D nal_unit_type: 1, nal_ref_idc: 2
2024-06-17 13:41:46.969 11531-11692 IJKMEDIA cn.lgwl.iot.ele V stream 1, sample 95258, dts 4423700317
2024-06-17 13:41:46.970 11531-11692 IJKMEDIA cn.lgwl.iot.ele V stream 0, sample 66356, dts 4423733333
2024-06-17 13:41:46.970 11531-11692 IJKMEDIA cn.lgwl.iot.ele V stream 1, sample 95259, dts 4423746757
2024-06-17 13:41:47.036 11531-11700 IJKMEDIA cn.lgwl.iot.ele D nal_unit_type: 1, nal_ref_idc: 2
2024-06-17 13:41:47.041 11531-11692 IJKMEDIA cn.lgwl.iot.ele V stream 0, sample 66357, dts 4423800000
2024-06-17 13:41:47.041 11531-11692 IJKMEDIA cn.lgwl.iot.ele V stream 1, sample 95259, dts 4423746757
所以要 debug 源码看看情况
所以要 debug 源码看看情况
没找到什么原因,我的集成方式应该没问题吧,也使用EXO模式了
集承应该没问题的,不过我也猜不出来什么情况,或者换个设备环境看看?
来什么情况,或者换个设备环境看
换了小米10S,华为平板M6,RK3588(6T算力性能应该没问题)设备也都一样呢
实在猜测不出来,刚测试了一个视频,一小时放着,没发现类似问题····
说起来海康,我记得它的以前好像有过 rtp 包并不标准,服务需要 rtcp 保活,有些需要发送信令保活,类似于需要对链接作保活~不过好像有点久远了,好像是定时设置什么 option 去作
另外可以试试把 rtsp 转 rtmp 测试下,实在没想起来有什么
实在猜测不出来,刚测试了一个视频,一小时放着,没发现类似问题····
您是用摄像头的RTSP流做视频源测试的吗?NVR好像不支持转化为RTMP,这个还得加多媒体服务器吧,就比较麻烦了。 据了解目前就这个框架比较新且全,没找到其他视频播放框架,不然可以对比测试下,或者您有推荐吗
非常感谢您的耐心解答
不是摄像头的 rtsp,普通 rtsp,我公司的 nvr 都是转到云 GB28181 协议之后远程······如果针对 rtsp ,你也可以看看 ZLMediaKit 或者 VLC
@Don0429 @CarGuo 我也遇到画面卡住现象,在卡之前会出现错帧花屏先是延迟,然后过卡死。错误如下
@Don0429 我有个疑问,你设置了不缓冲。为什么日志里还能看到缓冲的现象。是因为拖动进度条了?直播的场景不应该能拖动吧 //是否开启缓冲 设置无packet缓存 尝试减小或关闭预缓冲(1开启,0关闭)(谨慎设置,可能会增加卡顿风险)(一般直播项目会开启,达到秒开的效果,不过带来了播放丢帧卡顿的体验) list.add(new VideoOptionModel(IjkMediaPlayer.OPT_CATEGORY_PLAYER, "packet-buffering", 0));
@ouzs 看起来是断流了,或者是包数据累计异常,另外 @Don0429 的缓冲,可能是因为找不到下一帧数据,所以“被迫”进入“缓冲”
list.add(new VideoOptionModel(IjkMediaPlayer.OPT_CATEGORY_PLAYER, "packet-buffering", 0));
我也看到这个了,一度怀疑是不是设置的option没生效,但也没找到问题所在,是不是因为我还设置了丢包处理导致缓冲的
楼主这个问题解决了吗,我也用ijkplayer播放rtsp视频流发现暂停了无法恢复
楼主这个问题解决了吗,我也用ijkplayer播放rtsp视频流发现暂停了无法恢复
还没有,放弃了,改用EasypusherPro,但久了也会有闪退,定时刷新重启,有好的方案也麻烦同步下,谢谢
问题描述:
在recycleview中(非列表页面播放也一样)播放RTSP视频流(或者demo中的视频也一样)一段时间后都在转圈圈,查看设备CPU和内存占道都不到一半(在8+32G的RK3588上播放4路视频,3个本地摄像头的RTSP流,都是h264,25fps的720P视频,不算大,另一路播放demo中的视频,作为对比参照,运行了周日一天,周一回来都在转圈),使用的是demo中的多任务支持player,实现多个视频流同时播放,刚开始都是正常的,延迟大概在4秒内
出现问题的视频流
3个摄像头都是本地nvr的rtsp流,海康摄像头的,另一路是取自demo中的视频:https://res.exexm.com/cw_145225549855002
问题机型/系统:
工控平板RK3588,Android 12
GSY依赖版本
Demo中的复现步骤
Demo中的detailPlayer页面打开后XXXX会出现这个问题。
问题代码:(如果有)
问题log(如果有)