音频编解码中关于转码以及播放的总结
自己最近一直做关于音频编解码,播放以及转码的东西。总结一下关于这方面的知识。
先说关于播放的问题,大致步骤是:FFMPEG音频解码=>SDL进行播放pcm数据。在这里遇到的问题:1.解码的时候,文件格式不对,不是S16的格式,之后使用ffmpeg中重采样模块来操作,成功播放;2.一般来说,网络上下载的音频文件采样率一般都是44100的,解码后的数据采样率也必须是44100,否则播放会失败。进行解码重采样的时候,需要更改采样率和格式,这样,才会成功,一般来说,我们所需要的pcm数据文件都是8000赫兹,16bit,1通道。大家可以去参考雷神的代码,百度一下就可以搜索到。但是雷神的代码有一个问题:只能修改解码后的数据格式为S16,当修改采样率的时候,获取的pcm数据是失败的。之后,在ffmepg官网上找到重采样的示例代码,经过自己的调试,是可以进行更改采样率的。
第二个是编码的问题,其实这个问题倒是不大,不过自己需要主要一点,不管是解码还是编码,采样率是不能进行修改的,否则会导致获取的数据文件是不对的。除非进行重采样来修改采样率。
第三个是转码的问题,这个是自己遇到问题最多的地方。雷神有类似的代码,可以去参考。自己就说一下自己遇到的问题吧。总的来说,步骤是音频文件解码再进行编码。由于转码前后的音频文件是不同的。导致音频文件每一帧解码后的数据多少和文件编码每一帧所需要的数据多少是不同的(nb_samples),所以,进行操作的时候,需要利用ffmepg提供的avfifo管道模块来进行操作,把解码的数据放入管道中,根据编码需要的数据量来进行取出数据。这个问题解决了,一般就没有什么大问题了。
其实,ffpemg官网中提供了很多的示例,不过,有的示例不太对头,需要修改一下,是不能copy下来直接使用的。还有,ffmpeg的API更新很快,很多接口都需要修改的。不过,思路是借鉴的。
音频编解码中关于转码以及播放的总结相关推荐
- android MediaCodec 音频编解码的实现——转码
转载请标明出处http://blog.csdn.net/tinsanmr/article/details/51049179 ,本文出自:[Tinsan的博客] 从今天开始 每周不定期更新博客,把这一周 ...
- 音频编解码(软/硬编码),音频转码
> 音频编解码(软编码) FFMpeg视频软件编解码的.B站的ijkplayer等. 音频数据的编解码- http://blog.51cto.com/ticktick/1760191 1.And ...
- Android视频编辑器(五)音频编解码、从视频中分离音频、音频混音、音频音量调节等
前言 这篇博客,主要讲解的是android端的音频处理,在开发Android视频编辑器的时候,有一个非常重要的点就是音频的相关处理.比如如何从视频中分离音频(保存为mp3文件),然后分离出来的音频如何 ...
- 视音频编解码学习工程:FLV封装格式分析器
===================================================== 视音频编解码学习工程系列文章列表: 视音频编解码学习工程:H.264分析器 视音频编解码学习 ...
- 视音频编解码学习工程:H.264分析器
===================================================== 视音频编解码学习工程系列文章列表: 视音频编解码学习工程:H.264分析器 视音频编解码学习 ...
- 视音频编解码技术及其实现
核心提示:一.视音频编码国际标准化组织及其压缩标准介绍 国际上有两个负责视音频编码的标准化组织,一个是VCEG(VideocodeExpertGroup),是国际电信联合会下的视频编码专家组,一个是M ...
- [总结]FFMPEG视音频编解码零基础学习方法--转
ffmpeg编解码学习 目录(?)[-] ffmpeg程序的使用ffmpegexeffplayexeffprobeexe 1 ffmpegexe 2 ffplayexe 3 ffprobeexe ff ...
- 基于 FFMPEG 的音频编解码(一):Hello FFMPEG,安装与编译
Hello FFMPEG 基于 FFMPEG 的音频编解码(一):Hello FFMPEG,安装与编译 基于 FFMPEG 的音频编解码(二):音频解码 基于 FFMPEG 的音频编解码(三):音频编 ...
- FFMPEG视音频编解码零基础学习方法
总结]FFMPEG视音频编解码零基础学习方法 在CSDN上的这一段日子,接触到了很多同行业的人,尤其是使用FFMPEG进行视音频编解码的人,有的已经是有多年经验的"大神",有的是刚 ...
最新文章
- Beta冲刺提交-星期四
- 折衷的方式实现php与ruby共享session实现单点登录
- Java 中的5个代码性能提升技巧,最高提升近10倍
- 屏幕旋转后_网易哒哒H5又又叒刷屏了,TCL·XESS 旋转智屏竟然是一大亮点
- linux编译l和l区别,linux 下 g++编译程序时-I(大写i) 与-L(大写l)-l(小写l) 的作用详解...
- 《应用软件安全编程指南》国标发布 奇安信代码卫士已全面支持
- U-Boot中ubi和ubifs命令的使用
- 索辰科技回复首轮问询:2021年收入约2亿元,募投项目遭质疑
- 如何预防 CSRF 攻击?
- PowerShell: 作为一个PowerShell菜鸟,如何快速入门?掌握这些就够了
- 陕科大c语言大作业,西工大c语言大作业.ppt
- css 文本超出2行就隐藏并且显示省略号
- 如何使用Mac快捷键强制退出无法响应的应用程序
- 元宇宙厂商产品布局思路
- DOCTYPE与怪异模式
- redis java.util.LinkedHashMap cannot be cast to XXX
- 如何:对代理使用 IP 切换
- 免费的sql工具_免费SQL工具
- HTC G11图案解锁
- 【问底】李平:大型网站的灵魂——性能(转)