FFMPEG-AAC编码
一、流程图
二、代码解释
- avcodec_find_encoder:
根据指定的AVCodecID查找注册的编码器。 - avcodec_alloc_context3:
为AVCodecContext分配内存。() - avcodec_open2:
打开编码器。 - avcodec_send_frame:
将AVFrame⾮压缩数据给编码器。 - avcodec_receive_packet:
获取到编码后的AVPacket数据,收到的packet需要⾃⼰释放内存。 - av_frame_get_buffer:
为⾳频或视频帧分配新的buffer。在调⽤这个函数之前,必须在AVFame上设
置好以下属性:format(视频为像素格式,⾳频为样本格式)、nb_samples(样本个数,针对⾳频)、
channel_layout(通道类型,针对⾳频)、width/height(宽⾼,针对视频)。 - av_frame_make_writable:
确保AVFrame是可写的,使⽤av_frame_make_writable()的问题是,在
最坏的情况下,它会在您使⽤encode再次更改整个输⼊frame之前复制它. 如果frame不可写,
av_frame_make_writable()将分配新的缓冲区,并复制这个输⼊input frame数据,避免和编码器需
要缓存该帧时造成冲突。 - av_samples_fill_arrays
填充⾳频帧
三、结构体介绍
AVCodecContext
1、核心功能
-
编解码器管理
存储与特定编解码器(如 H.264、AAC)相关的参数和状态,包括编解码器类型(codec_type
)、编解码器 ID(codec_id
)等。通过avcodec_alloc_conte