ffmpeg中av_seek_frame()使用及其flag值意义

例子:

int nRet = av_seek_frame(m_ifmt_ctx, -1, (m_start_play_time + nSecs) * AV_TIME_BASE, AVSEEK_FLAG_BACKWARD);

原型:使用时需要使用四个参数 

int av_seek_frame(AVFormatContext *s, int stream_index, int64_t timestamp, int flags);

参数一: s为容器内容; 

参数二: 流索引, 如果stream_index是-1,会选择一个默认流,时间戳会从以AV_TIME_BASE为单位向具体流的时间基自动转换。

参数三: 将要定位处的时间戳,time_base单位或者如果没有流是指定的就用av_time_base单位。

参数四: seek功能flag;

返回值:成功返回>=0

flag值:

#deflagfine AVSEEK_FLAG_BACKWARD    1 ///< seek backward
#define AVSEEK_FLAG_BYTE            2 ///< seeking based on position in bytes
#define AVSEEK_FLAG_ANY             4 ///< seek to any frame, even non-keyframes
#define AVSEEK_FLAG_FRAME           8 ///< seeking based on frame number

AVSEEK_FLAG_BACKWARD  是seek到请求的timestamp之前最近的关键帧

AVSEEK_FLAG_BYTE             是基于字节位置的查找 

AVSEEK_FLAG_ANY               是可以seek到任意帧,注意不一定是关键帧,因此使用时可能会导致花屏    

AVSEEK_FLAG_FRAME         是基于帧数量快进          

 

  AVSEEK_FLAG_BACKWARD与AVSEEK_FLAG_ANY是本人亲测使用的,其他两个flag没有使用过

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值