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。
FFmpeg解码音频代码相关推荐
- 使用ffmpeg解码音频sdl(push)播放
自定义播放器系列 第一章 视频渲染 第二章 音频(push)播放(本章) 第三章 音频(pull)播放 第四章 实现时钟同步 第五章 实现通用时钟同步 第六章 实现播放器 文章目录 自定义播放器系列 ...
- FFmpeg开发笔记(七):ffmpeg解码音频保存为PCM并使用软件播放
若该文为原创文章,转载请注明原文出处 本文章博客地址:https://blog.csdn.net/qq21497936/article/details/108799279 各位读者,知识无穷而人力有穷 ...
- ffmpeg 解码音频(aac、mp3)输出pcm文件
ffmpeg 解码音频(aac.mp3)输出pcm文件 播放pcm可以参考: ffplay -ar 48000 -ac 2 -f f32le out.pcm main.c #include <s ...
- 老调重弹之ffmpeg解码音频
老调重弹之ffmpeg解码音频 接着之前的视频解码,在之前的基础上加上音频解码,还是使用SDL. 首先找到音频流 与找视频流时一样,在avformat_find_stream_info之后,遍历一下A ...
- FFmpeg进行音频的解码和播放
音频编码 音频数字化主要有压缩与非压缩(pcm)两种方式. 非压缩编码(PCM)PCM音频编码 PCM通过抽样.量化.编码三个步骤将连续变化的模拟信号转换为数字编码. 当采样频率fs.max大于信号中 ...
- iOS 音视频开发:Audio Unit播放FFmpeg解码的音频
本文档描述了iOS播放经FFmpeg解码的音频数据的编程步骤,具体基于Audio Toolbox框架的Audio Session和Audio Unit框架提供的接口实现.在iOS 7及以上平台Audi ...
- ffmpeg 找不到bin_FFmpeg开发笔记(九):ffmpeg解码rtsp流并使用SDL同步播放
若该文为原创文章,转载请注明原文出处 本文章博客地址:https://blog.csdn.net/qq21497936/article/details/109603499 各位读者,知识无穷而人力有穷 ...
- [总结]FFMPEG视音频编解码零基础学习方法--转
ffmpeg编解码学习 目录(?)[-] ffmpeg程序的使用ffmpegexeffplayexeffprobeexe 1 ffmpegexe 2 ffplayexe 3 ffprobeexe ff ...
- 基于 FFMPEG 的音频编解码(三):音频编码
音频编码 基于 FFMPEG 的音频编解码(一):Hello FFMPEG,安装与编译 基于 FFMPEG 的音频编解码(二):音频解码 基于 FFMPEG 的音频编解码(三):音频编码 在前面文章中 ...
最新文章
- Apache Maven 安装与配置-修改源
- GDC2016 Epic Games【Bullet Train】 新风格的VR-FPS的制作方法
- 20180320作业1:源代码管理工具调查
- 国际域名和境外域名能否提交备案
- c语言程序设计编程解读,【答题】C语言程序设计问题与解释实验
- qr码是二维码码_如何使用QR码进行有效的营销和推广
- windows定时计划备份MySql
- python做网络的仿真_用python自动化仿真HFSS,超简易
- QML笔记-对QML中信号与槽的基本认识
- git-版本控制介绍
- 诽谤、窃密、禁令、和解:文远知行创始团队纠纷暂时完结
- 【渝粤教育】国家开放大学2018年秋季 8109-22T (1)货币银行学 参考试题
- python编程读取文件内容_python编程从入门到实践:读取整个文件和创建包含文件各行的内容...
- 计算机教案制作电子表格,制作电子表格教案
- H3C UniServer R6900 G3 服务器介绍
- 镜像加速器——使用加速器可以提升获取Docker官方镜像的速度
- 电力猫服务器的网页,电力猫怎么配对?快速配置电力猫的图文教程
- P1500 丘比特的烦恼
- php根据当前日期判断法定节假日_PHP 判断当前日期是否是法定节假日或者休息日 (原)...
- NoSql入门和概述
热门文章
- cocos2dx开发之util类方法——字符串替换
- 做点RouteOS方面的备忘,关于流量监控限速的
- 【Objective-C学习记录】第一天
- [翻译] TGLStackedViewController
- Linux 12.10 ISO下载地址
- js创建对象的几种常用方式小结(推荐)
- (转载)在IAR及MDK里生成hex及bin文件的标准方法
- VC++6.0中使用GDI+绘图(转载)
- 摘抄一篇:图的存储结构
- explorer.exe中发生未处理的win32异常