ffmpeg(4.0.2)解码H264

接口变更:AVStream的codec参数被codecpar参数所替代AVCodecContext *codec变为AVCodecParameters *codecparav_register_all被弃用添加av_demuxer_iterate()const AVInputFormat *av_demuxer_iterate(void **opaque);解码接口...
摘要由CSDN通过智能技术生成

接口变更:

AVStream的codec参数被codecpar参数所替代

AVCodecContext *codec变为AVCodecParameters *codecpar

av_register_all被弃用

添加av_demuxer_iterate()

const AVInputFormat *av_demuxer_iterate(void **opaque);

解码接口变更:

视频解码接口avcodec_decode_video2和avcodec_decode_audio4音频解码deprecated,两个接口做了合并,使用统一的接口。将音视频解码步骤分为两步:

第一步:avcodec_send_packet()    发送编码数据包

第二步:avcodec_receive_frame()  接收解码后数据

函数原型:

int avcodec_send_packet(AVCodecContext *avctx, const AVPacket *avpkt);

参数:

AVCodecContext *avctx:视频解码的上下文,包含解码器。

const AVPacket *avpkt: 编码的音视频帧数据

返回值:

成功返回0

为什么要传递空的avpkt?

这里有一个说明是可以传递NULL,什么情况下需要传递NULL,你平时看一些视频播放器,播放经常会少最后几帧,很多情况就是因为没有处理好缓冲帧的问题,ffmpeg内部会缓冲几帧,要想取出来就需要传递空的AVPacket进去。

函数原型:

int avcodec_receive_frame(AVCodecContext *avctx, AVFrame *frame);

参数:

AVCodecContext *avctx:视频解码的上下文,包含解码器。

AVFrame *frame:解码后的视频帧数据。

返回值:

成功返回0

*******空间申请和释放

  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值