音频解码

2018-08-22  本文已影响0人  小圆菜陪你财务自由

之前写过视频的解码,这里我开始简单介绍音频解码,使用流程基本一样,如果没有看过视频解码请移步

废话不多说,直接开干

音频解码流程如下

第一步:注册组件(视频解码器、视频编码器、音频解码器、音频编码器等等…)
方法:av_register_all();

第二步:打开封装格式文件(解封装)
方法:avformat_open_input()

第三步:查找音频流(视频流、字幕流等…)信息
方法:avformat_find_stream_info()

第四步:查找音频解码器

  1. 查找音频流索引位置
  2. 根据视频流索引,获取音频解码器上下文
  3. 根据音频解码器上下文的ID,然后查找音频解码器

第五步:打开音频解码器
方法:avcodec_open2

第六步:循环读取每一帧音频压缩数据
方法:av_read_frame()

第七步:解码

  1. 发送数据包->一帧音频压缩数据->acc格式、mp3格式
    方法avcodec_send_packet()
  2. 解码数据包->解码->一帧音频采样数据->pcm格式
    方法:avcodec_receive_frame()
    当avcodec_receive_frame()方法返回0表示解码成功,否则失败。
    解码成功以后我们需要类型转换一下,因为音频采样数据有有各种各样的,我们可以转成指定格式

第八步:释放资源(内存)->关闭解码器

到这里整个流程就算完了,对于猿人,文字显示很苍白。所以还是需要个demo来展示一下。

上一篇 下一篇

猜你喜欢

热点阅读