ffmpeg PCM_S16LE和PCM_S16BE怎么转换:

只要交换每个sample的高8bit和低8bit就可以了
AV_SAMPLE_FMT_FLTP转为AV_SAMPLE_FMT_S16P(ffmpeg),在使用ffmpeg解码aac的时候,如果使用avcodec_decode_audio4函数解码,那么解码出来的会是AV_SAMPLE_FMT_FLTP 格式的数据( float, 4bit , planar), 如果我们希望得到16bit的数据(如AV_SAMPLE_FMT_S16P数据),那么我们需要转换一下:
解決方式:
將 samples 由 32bits 转为16bits. 参考 ffmpeg samplefmt.h
若 sample 是 AV_SAMPLE_FMT_FLTP,則 sample 會是 float 格式,且值域为 [-1.0, 1.0]
若 sample 是 AV_SAMPLE_FMT_S16, 則 sample 會是 int16 格式,且值域为 [-32767, +32767]
早期ffmpeg编码音频,输入数据一般都是S16格式,解码输出一般也是S16,也就是说PCM数据是存储在连续的buffer中,对一个双声道(左右)音频来说,存储格式可能就为LRLRLR.........

ffmpeg升级到2.1后,同样对双声道音频PCM数据,以S16P为例,存储就可能是
plane 0: LLLLLLLLLLLLLLLLLLLLLLLLLL...
plane 1: RRRRRRRRRRRRRRRRRRRRRRRRRR...
而不再是以前的连续buffer。
而AAC编码依旧使用 AV_SAMPLE_FMT_S16格式
也就说,音频编码不能再像以前那样简单的处理,统一输入S16数据,而要根据具体的codec转化为其支持的格式,否则无论是编码还是解码输出的声音会莫名其妙,幸好,转换工作不用自己做,ffmpeg提供了相应的API,swr_convert(类似以前的audio_resample,只是audio_resample目前已不再推荐使用,因为swr_convert更强大)
基于此,对音频编码部分做了相应修改,主要用的数据结构为 struct SwrContext* m_SwrCtx;

对于解码也可能需要做swr_convert,比如做播放器,很多时候我们是将S16格式数据丢给声卡,而新版ffmpeg解码音频输出的格式可能不满足S16,如AAC解码后得到的是FLT(浮点型),AC3解码是FLTP(带平面)

PCM、FLTP、S16资料了解相关推荐

  1. C# 模拟PCM数据并创建WAV文件

    最近由于着手一个无线电接受机信号处理的工作,需要处理解调模式下传递的PCM数据,绘制波形并播放声音,特此记录. 模拟PCM数据,保存到本地 private void button1_Click(obj ...

  2. 【C语言】PCM音频数据处理---左右声道分离

    我用一麦克风录制的PCM数据是16bit,双声道的,用Audacity工具查看可知,右声道是没有声音的,左声道才有声音,如下图所示 所以为了节省存储空间,完全可以将左右声道分离出来,左右声道分离的方法 ...

  3. 音频PCM float32到s16转换

    有些应用场景下音频解码器出来的PCM sample格式是float32, 可能需要转成s16(int16)类型, 不多说直接上干货,拿走不谢~ #include <stdint.h>inl ...

  4. 使用FFmpeg将S16格式音频数据重采样为FLTP格式

    代码对一些数据没做判断,仅仅是做个备忘!请谨慎参考! #include <libavutil/opt.h> #include <libavutil/samplefmt.h> # ...

  5. FFmpeg音频编码 ---- pcm转aac(使用新版ffmpeg API,亲测可用)

    /** * @projectName 08-01-encode_audio * @brief 音频编码 * 从本地读取PCM数据进行AAC编码 * 1. 输入PCM格式问题,通过AVCodec的sam ...

  6. ffmpeg音视频转单声道16位16K赫兹小端点pcm音频

    直接看命令: E:\BaiduNetdiskDownload>ffmpeg -i roundDeskS02E01.mp4 -acodec pcm_s16le -f s16le -ac 1 -ar ...

  7. 音视频基本概念和FFmpeg的简单入门(新手友好+FFmpeg资料分享)

    音视频基本概念和FFmpeg的简单入门 基本概念 容器/文件(Conainer/File): 即特定格式的多媒体文件,一般来说一个视频文件是由视频,音频,字幕等按特定的格式/规则组合到一起的,常见如: ...

  8. FFmpeg简单使用:音频编码 ---- pcm转aac

    基本流程  函数说明 avcodec_find_encoder:根据指定的AVCodecID查找注册的编码器. avcodec_alloc_context3:为AVCodecContext分配内存. ...

  9. Android音视频开发,详说PCM音频重采样、PCM编码

    直播伴音,两种数据能否合在一起?不能叠加在一起 会有噪音 合并以后 再去编码推流 直播的例子 客户端播放器,可以开启多个播放器 对于我们重采样 很多时候就是为了统一格式,就是为了要合并这个流,去推送, ...

最新文章

  1. Python可以调用Gpu吗_加快Python算法的四个方法:Numba篇
  2. Java私有变量是否可继承
  3. 系统学习机器学习之决策树
  4. 点云三角化之后还能贴图嘛_雪糕化了之后重新冷冻还能吃吗?宁波这个实验真相了!...
  5. Git之checkout到别的分支提示Your local changes to the following files would be overwritten by checkout:
  6. java.util.Date转换成java.sql.Date
  7. C++11 并发指南六( atomic 类型详解二 std::atomic )
  8. idea新建类包图标_IntelliJ IDEA 常见文件类型的图标介绍
  9. 【Elasticsearch】es 重启 已经 重启会导致什么问题
  10. WeixinJSBridge目前还能够直接使用的功能(2019)
  11. 主引导扇区(MBR)释疑
  12. 【计算机网络】网络层(六)—— IP组播与移动IP
  13. ipa安装失败,以及安装办法
  14. 基于matlab的单相pwm逆变电路的仿真研究,基于MATLAB的单相PWM逆变电路的仿真研究.pdf...
  15. 光电信息科学与工程学c语言吗,光电信息工程专业排名_光电信息科学与工程专业可以考什么专业的研究生...
  16. 中国计量大学计算机考研难吗,去中国计量大学读研好吗 考研题难吗_
  17. rⅰd的意思_自动挡车上的P、R、N、D、L代表什么意思?老司机也搞晕了!
  18. ORACLE对表批处理操作
  19. 用C语言写羊了个羊(一)
  20. Linux账号与身份管理

热门文章

  1. python从入门到实践电子版-Python编程从入门到实践PDF电子书免费下载
  2. Python简单实现邂逅在迷宫无限十连自动抽卡并根据金卡数量停止程序
  3. php 处理 非法访问
  4. 时间格式区别之YYYY/MM/dd HH:mm 与 yyyy/MM/dd HH:mm
  5. 成为SAP咨询顾问的条件(转)
  6. 数据分析面试(一)统计基础篇
  7. 工业机器人打磨去毛刺实操工作站
  8. 手感虽重要,工具更可靠|SunTorque智能扭矩系统
  9. 小福利,django搭建个人网站的源码公开(一)
  10. 关于xlrd读取整数默认带小数位的问题解决