PHP技术那点事
全部
技术
PHP
MySQL
前端
Linux
JAVA
退出
编辑文章
选择分类
PHP
MySQL
前端
Linux
Java
工具
选择专栏
设计模式
java基础
Angular学习
Java面试题
描述:
最近用ffmpeg将mp3转为pcm,遇到了一些坑
封面图上传 :
+
点击上传图片
大概是这样的,我使用ffmpeg将mp3转为pcm,使用的命令: `ffmpeg -y -i 1.mp3 -acodec pcm_s16be -f s16be -ac 2 -ar 16000 16k.pcm` 转换出来的pcm文件用Cool Edit Pro软件offset 0类型打开时,声音的波普是乱的,当时是和科大讯飞调试语音测评接口,结果人家拿我的语音用Cool Edit Pro 打开说是音频全是杂音,然后我就百思不得其解,毕竟这个软件的offset参数是干嘛也不知道,用Cool Edit Pro软件offset 1类型打开是OK的,后面百度才知道这个是来过滤噪音的。 但当时不知道什么情况,后面百度ffmpeg的参数s16be,发现还有一种是s16le,抱着试一试的心态,把**s16be**换成了**s16le**,结果还是没有用,后面搞了好久,发现没有把**pcm_s16be**也换成**pcm_s16le** 又试了一下,发现可以用Cool Edit Pro软件offset 0类型打开了。 原来这个音频分两个编码 **s16le为: PCM signed 16-bit little-endian** **s16be为: PCM signed 16-bit big-endian** **Little-endian:将低序字节存储在起始地址(低位编址)** **Big-endian:将高序字节存储在起始地址(高位编址)** linux可以用 `ffmpeg -formats -h` 查看支持的全部格格式 -f (-foramts)指定格式 ####正确的生成方式 `ffmpeg -y -i 1.mp3 -acodec pcm_s16le -f s16le -ac 2 -ar 16000 16k.pcm` | 参数 | 说明 | | ------------ | ------------ | |-y |允许覆盖 | |-i 1.mp3| mp3源文件 | |-acodec pcm_s16le |编码器| |-f s16le | 强制文件格式 | |-ac 2| 1-单声道 2-双声道 | |-ar 16000|采样率 | |16k.pcm| 最终输出的pcm文件|
保存文章