android rtsp 延时,ijkplayer 单视频流直播延迟问题解决过程

一开始我尝试是通过设置ijkplayer的参数去修改延迟,参数的修改能把ijkplayer的开播延迟拉到200ms左右,但是随着播放时间增加延迟也在增加,然后带着问题去网上寻找答案,找到暴走大牙和Gongjia两位大神的解决方案,但是这种方案仅适用于带有音频流的,现在适配的流仅有视频流,用了这两位的方案后,丢帧是可以,但是延迟的问题并没有解决,因为没有音频流的视频的时间基准是用视频流的时间,丢完帧后视频会卡顿等待视频的时间基准。后来我在ijkplayer的issue上找了很多关于卡顿的问题,都没有找到解决方案,后面尝试通过变速的方式去解决这个问题,找到了Mr_xkHuang的一篇ijkplayer-音视频变速播放实现,才了解到了单视频流的视频和有音视频流的视频关于时间基准的差别。修改了时间基准之后,长时直播的延迟问题解决了。

ff_ffplay.c代码修改如下:

static int read_thread(void *arg)

{

.....

if (st_index[AVMEDIA_TYPE_AUDIO] >= 0) {

stream_component_open(ffp,st_index[AVMEDIA_TYPE_AUDIO]);

} else {

//添加新代码

ffp->av_sync_type = AV_SYNC_EXTERNAL_CLOCK;

//注释掉原有代码

// ffp->av_sync_type = AV_SYNC_VIDEO_MASTER;

is->av_sync_type = ffp->av_sync_type;

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值