工程请访问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。

FFmpeg解码音频代码相关推荐

  1. 使用ffmpeg解码音频sdl(push)播放

    自定义播放器系列 第一章 视频渲染 第二章 音频(push)播放(本章) 第三章 音频(pull)播放 第四章 实现时钟同步 第五章 实现通用时钟同步 第六章 实现播放器 文章目录 自定义播放器系列 ...

  2. FFmpeg开发笔记(七):ffmpeg解码音频保存为PCM并使用软件播放

    若该文为原创文章,转载请注明原文出处 本文章博客地址:https://blog.csdn.net/qq21497936/article/details/108799279 各位读者,知识无穷而人力有穷 ...

  3. ffmpeg 解码音频(aac、mp3)输出pcm文件

    ffmpeg 解码音频(aac.mp3)输出pcm文件 播放pcm可以参考: ffplay -ar 48000 -ac 2 -f f32le out.pcm main.c #include <s ...

  4. 老调重弹之ffmpeg解码音频

    老调重弹之ffmpeg解码音频 接着之前的视频解码,在之前的基础上加上音频解码,还是使用SDL. 首先找到音频流 与找视频流时一样,在avformat_find_stream_info之后,遍历一下A ...

  5. FFmpeg进行音频的解码和播放

    音频编码 音频数字化主要有压缩与非压缩(pcm)两种方式. 非压缩编码(PCM)PCM音频编码 PCM通过抽样.量化.编码三个步骤将连续变化的模拟信号转换为数字编码. 当采样频率fs.max大于信号中 ...

  6. iOS 音视频开发:Audio Unit播放FFmpeg解码的音频

    本文档描述了iOS播放经FFmpeg解码的音频数据的编程步骤,具体基于Audio Toolbox框架的Audio Session和Audio Unit框架提供的接口实现.在iOS 7及以上平台Audi ...

  7. ffmpeg 找不到bin_FFmpeg开发笔记(九):ffmpeg解码rtsp流并使用SDL同步播放

    若该文为原创文章,转载请注明原文出处 本文章博客地址:https://blog.csdn.net/qq21497936/article/details/109603499 各位读者,知识无穷而人力有穷 ...

  8. [总结]FFMPEG视音频编解码零基础学习方法--转

    ffmpeg编解码学习 目录(?)[-] ffmpeg程序的使用ffmpegexeffplayexeffprobeexe 1 ffmpegexe 2 ffplayexe 3 ffprobeexe ff ...

  9. 基于 FFMPEG 的音频编解码(三):音频编码

    音频编码 基于 FFMPEG 的音频编解码(一):Hello FFMPEG,安装与编译 基于 FFMPEG 的音频编解码(二):音频解码 基于 FFMPEG 的音频编解码(三):音频编码 在前面文章中 ...

最新文章

  1. Apache Maven 安装与配置-修改源
  2. GDC2016 Epic Games【Bullet Train】 新风格的VR-FPS的制作方法
  3. 20180320作业1:源代码管理工具调查
  4. 国际域名和境外域名能否提交备案
  5. c语言程序设计编程解读,【答题】C语言程序设计问题与解释实验
  6. qr码是二维码码_如何使用QR码进行有效的营销和推广
  7. windows定时计划备份MySql
  8. python做网络的仿真_用python自动化仿真HFSS,超简易
  9. QML笔记-对QML中信号与槽的基本认识
  10. git-版本控制介绍
  11. 诽谤、窃密、禁令、和解:文远知行创始团队纠纷暂时完结
  12. 【渝粤教育】国家开放大学2018年秋季 8109-22T (1)货币银行学 参考试题
  13. python编程读取文件内容_python编程从入门到实践:读取整个文件和创建包含文件各行的内容...
  14. 计算机教案制作电子表格,制作电子表格教案
  15. H3C UniServer R6900 G3 服务器介绍
  16. 镜像加速器——使用加速器可以提升获取Docker官方镜像的速度
  17. 电力猫服务器的网页,电力猫怎么配对?快速配置电力猫的图文教程
  18. P1500 丘比特的烦恼
  19. php根据当前日期判断法定节假日_PHP 判断当前日期是否是法定节假日或者休息日 (原)...
  20. NoSql入门和概述

热门文章

  1. cocos2dx开发之util类方法——字符串替换
  2. 做点RouteOS方面的备忘,关于流量监控限速的
  3. 【Objective-C学习记录】第一天
  4. [翻译] TGLStackedViewController
  5. Linux 12.10 ISO下载地址
  6. js创建对象的几种常用方式小结(推荐)
  7. (转载)在IAR及MDK里生成hex及bin文件的标准方法
  8. VC++6.0中使用GDI+绘图(转载)
  9. 摘抄一篇:图的存储结构
  10. explorer.exe中发生未处理的win32异常