ijkplayer降低延迟

作者: 开大炮去逛街 | 来源:发表于2017-01-09 10:59 被阅读243次

支持RTSP协议,参照:www.jianshu.com/p/69b26da21fa5
全部弄好后,发现延迟不满意,于是自己动手丰衣足食:
主要也就是修改了:
ijkmedia>ijkplayer>ff_ffplay.c这个文件

static double vp_duration(VideoState *is, Frame *vp, Frame *nextvp) {
    if(vp->serial == nextvp->serial) {
        doubleduration = nextvp->pts - vp->pts;
    if(isnan(duration) || duration <=0|| duration > is->max_frame_duration)
        return vp->duration;
      else
       return duration;
   }else{
    return 0.0;
  }
}

直接换成:

static double vp_duration(VideoState*is,Frame*vp,Frame*nextvp) {
     return vp->duration;
}

2、接着改staticintffplay_video_thread这个方法:

static int ffplay_video_thread(void*arg){
    FFPlayer*ffp = arg;
    VideoState*is = ffp->is;
    AVFrame*frame =av_frame_alloc();
    doublepts;
    doubleduration;
    intret;
    AVRationaltb = is->video_st->time_base;
    //注释掉
    //AVRational frame_rate = av_guess_frame_rate(is->ic, is->video_st, NULL);

    //......中间代码太长,不贴上了

    //注释掉
    //duration = (frame_rate.num && frame_rate.den ? av_q2d((AVRational)  {frame_rate.den, frame_rate.num}) : 0);
    //直接写出
    duration=0.01;

   //........
}

改完后发现延迟非常满意

相关文章

网友评论

  • 番茄可乐_c1bd:ffplay_video_thread是不是所有的代码都注释掉,还是只注释这两行呀
    //AVRational frame_rate = av_guess_frame_rate(is->ic, is->video_st, NULL);
    //duration = (frame_rate.num && frame_rate.den ? av_q2d((AVRational) {frame_rate.den, frame_rate.num}) : 0);
  • Onegeng:楼主可以解释下为什么要这么改吗?
  • _Syri:同楼上的朋友,怎么降低语音延迟?楼主
  • cjnwan:画面延迟减少,可是语音还是存在延迟,请问你是怎么解决的呢,谢谢!

本文标题:ijkplayer降低延迟

本文链接:https://www.haomeiwen.com/subject/rgocbttx.html