ffmpeg h264 动态分辨率解码流程

文章讨论了ffmpeg在解码H264视频时,解码器如何在接收到SPS信息时自动更新参数,适应不同分辨率的数据,如从1080p到360p或反之亦然。解码过程涉及的关键步骤包括解码SPS,更新编码参数,以及按需分配宏块内存。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、背景

实测ffmpeg init 264 decode的时候,配置的是1080p的分辨率,直接来360p的数据,可以正常解析,反之init配置360p分辨率,实际来1080p数据,也可以正常解析。

二、分析

分析源码是每次解码器收到SPS数据的时候,都会重新更新初始化一次解码器参数。

h264_decode_frame  
->ff_h264_decode_extradata
->decode_nal_units
->ff_h264_decode_seq_parameter_set 
获取SPS里面的编码参数,例如分辨率等。

h264_decode_frame  
->decode_nal_units 
->ff_h264_decode_slice_header(按照SPS参数,更新新的编码参数,如分辨率) 
->h264_slice_header_init 
->ff_h264_alloc_tables 按照新的分辨率申请宏块内存

ff_h264_decode_slice_header(按照SPS参数,更新新的编码参数,如分辨率) 

ff_h264_alloc_tables 按照新的分辨率申请宏块内存

三、结论

解码器在每次收到IDR帧的SPS可以重新初始化解码器,可以自适应解码不同分辨率的数据。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值