一、音频编码
第一步:下载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);
网友评论