FFmpeg解码音频代码

工程请访问DecodeTest。用c++写的,使用FFmpeg-4.1.0。比较完善的是OfficalDecodeAudio.cpp,它是我研究了一下ffplay.c的源码得来的。该代码按照统一的44.1kHz、双声道、16位int去解码音频文件。通常的wav、mp3、FLAC、aac、m4a、ogg等文件都可以解码。

既然提到了代码,还是稍微讲解一下。
对于FFmpeg,解码并不是每个AVPacket都能得到一个AVFrame。因此,有时候可能你给了codec一个packet,但codec并不能立马给出一个frame,它需要更多的packet来解码。同样的,也可能存在的情况就是codec已经满了,需要你先读取frame才能继续喂packet。换句话说,有时候多个packet才能得到一个frame,有时候一个packet可以产生多个frame,因此最好是根据api的返回值决定流程。不光是codec,对于重采样SwrContext也是一样的。

运行之前需要按照FFmpeg wiki上面指示的去安装FFmpeg以及相关的依赖。安装FFmpeg有两种方式,一种是使用包安装器去安装,另一种是自己手动编译。我是自己在macOS上手动编译FFmpeg的,不过尽管如此,对于依赖我也是直接使用brew安装的。wiki中有这一篇章,里面详解了如何安装和编译FFmpeg。
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值