音频解码
2018-08-22 本文已影响0人
小圆菜陪你财务自由
之前写过视频的解码,这里我开始简单介绍音频解码,使用流程基本一样,如果没有看过视频解码请移步
废话不多说,直接开干
音频解码流程如下
第一步:注册组件(视频解码器、视频编码器、音频解码器、音频编码器等等…)
方法:av_register_all();
第二步:打开封装格式文件(解封装)
方法:avformat_open_input()
第三步:查找音频流(视频流、字幕流等…)信息
方法:avformat_find_stream_info()
第四步:查找音频解码器
- 查找音频流索引位置
- 根据视频流索引,获取音频解码器上下文
- 根据音频解码器上下文的ID,然后查找音频解码器
第五步:打开音频解码器
方法:avcodec_open2
第六步:循环读取每一帧音频压缩数据
方法:av_read_frame()
第七步:解码
- 发送数据包->一帧音频压缩数据->acc格式、mp3格式
方法avcodec_send_packet() - 解码数据包->解码->一帧音频采样数据->pcm格式
方法:avcodec_receive_frame()
当avcodec_receive_frame()方法返回0表示解码成功,否则失败。
解码成功以后我们需要类型转换一下,因为音频采样数据有有各种各样的,我们可以转成指定格式
第八步:释放资源(内存)->关闭解码器
到这里整个流程就算完了,对于猿人,文字显示很苍白。所以还是需要个demo来展示一下。