一、音频编码
第一步:下载fdk_aac开发包->共用->C开发库
第二步:编写脚本->编译iOS平台下fdk_aac开发包->编译.a静态库
第三步:编译FFmpeg库->将FFmpeg和fdk_aac合并->编译.a静态库->依赖
第四步:导入项目中
注意:FFmpeg需要导入进去,fdk_aac库也需要导入到项目中
第五步:进行开发
[音频编码编译库](链接: https://pan.baidu.com/s/1TD9fODy-wOjSClBlrzZhPw) 提取码: 89bj
二、开发
第一步:注册组件->编码器、解码器等等…
av_register_all()第二步:初始化封装格式上下文
avformat_alloc_context()第三步:打开输入文件
avio_open()第四步:创建输出码流
avformat_new_stream()第五步:查找音频编码器
avcodec_find_encoder_by_name第六步:打开aac编码器
avcodec_open2第七步:写文件头(对于某些没有文件头的封装格式,不需要此函数。比如说MPEG2TS)
avformat_write_header()第八步:初始化音频采样数据帧缓冲区
av_frame_alloc();第九步:创建音频压缩数据->帧缓存空间
av_malloc();第十步:循环编码每一帧音频
第十一步:将编码后的音频压缩数据写入文件中
av_write_frame()第十二步:输入像素数据读取完毕后回调函数
作用:输出编码器中剩余AVPacket
flush_encoder()第十三步:写入文件尾部信息
av_write_trailer()第十四步:释放内存,关闭编码器等等…
avcodec_close(avcodec_context);
av_free(av_frame);
av_free(out_buffer);
av_packet_free(&av_packet);
avio_close(avformat_context->pb);
avformat_free_context(avformat_context);
fclose(in_file);