[音视频基础知识]  AAC编码实践

tech2024-06-10  65

1.创建AAC编码器

 ffmpeg编码过程:

创建并打开编码器:

2. 输入输出数据

编码器打开之后,需要对输入输出的数据进行格式定义

输入API avcodec_send_frame

输出API avcode_receive_packet

生成空间之后,里面还是空的,没有具体的数值,这就需要将重采样的数据,拷贝至av_frame中.

然后,就可以开始真正的编码工作.

开始编码:avcodec_send_frame

获得编码之后的数据:avcodec_receive_packet

eagain: 编码器没有数据,或者数据已经不够编码器进行编码

eof:数据已经到末尾

编完码的数据,再写入文件当中.

缓冲区遗存数据,导致播放数据不全

编码之后,保存数据,实际上还有一部分数据处在缓冲区,并没有进行编码,此时告知eagain重新读取数据,采集已经结束掉了,缓冲区数据依然留存一部分,如何让这部分数据也吐出来?

在while循环结束之后,也就是数据编码结束之后,再次调用一次encode,强制将编码器缓冲区的音频进行编码输出.

结束之后,需要将之前的avframe和avpacket进行释放

最新回复(0)