FFmpeg开发笔记(五十八)把32位采样的MP3转换为16位的PCM音频
1.FFmpeg开发笔记(一)搭建Linux系统的开发环境2.FFmpeg开发笔记(二)搭建Windows系统的开发环境3.FFmpeg开发笔记(三)FFmpeg的可执行程序介绍4.FFmpeg开发笔记(四)FFmpeg的动态链接库介绍5.FFmpeg开发笔记(五)更新MSYS的密钥环6.FFmpeg开发笔记(六)如何访问Github下载FFmpeg源码7.FFmpeg开发笔记(九)Linux交叉编译Android的x265库8.FFmpeg开发笔记(十)Linux环境给FFmpeg集成vorbis和amr9.FFmpeg开发笔记(十一)Windows环境给FFmpeg集成vorbis和amr10.FFmpeg开发笔记(七)欧拉系统编译安装FFmpeg11.FFmpeg开发笔记(八)Linux交叉编译Android的FFmpeg库12.FFmpeg开发笔记(十二)Linux环境给FFmpeg集成libopus和libvpx13.FFmpeg开发笔记(十三)Windows环境给FFmpeg集成libopus和libvpx14.FFmpeg开发笔记(十四)FFmpeg音频重采样的缓存15.FFmpeg开发笔记(十五)详解MediaMTX的推拉流16.FFmpeg开发笔记(十六)Linux交叉编译Android的OpenSSL库17.FFmpeg开发笔记(十七)Windows环境给FFmpeg集成字幕库libass18.FFmpeg开发笔记(十八)FFmpeg兼容各种音频格式的播放19.FFmpeg开发笔记(十九)FFmpeg开启两个线程分别解码音视频20.FFmpeg开发笔记(二十)Linux环境给FFmpeg集成AVS3解码器21.FFmpeg开发笔记(二十一)Windows环境给FFmpeg集成AVS3解码器22.FFmpeg开发笔记(二十二)FFmpeg中SAR与DAR的显示宽高比23.FFmpeg开发笔记(二十三)使用OBS Studio开启RTMP直播推流24.FFmpeg开发笔记(二十四)Linux环境给FFmpeg集成AV1的编解码器25.FFmpeg开发笔记(二十五)Linux环境给FFmpeg集成libwebp26.FFmpeg开发笔记(二十六)Linux环境安装ZLMediaKit实现视频推流27.FFmpeg开发笔记(二十七)解决APP无法访问ZLMediaKit的直播链接问题28.FFmpeg开发笔记(二十八)Linux环境给FFmpeg集成libxvid29.FFmpeg开发笔记(二十九)Windows环境给FFmpeg集成libxvid30.FFmpeg开发笔记(三十)解析H.264码流中的SPS帧和PPS帧31.FFmpeg开发笔记(三十一)使用RTMP Streamer开启APP直播推流32.FFmpeg开发笔记(三十二)利用RTMP协议构建电脑与手机的直播Demo33.FFmpeg开发笔记(三十三)分析ZLMediaKit对H.264流的插帧操作34.FFmpeg开发笔记(三十四)Linux环境给FFmpeg集成libsrt和librist35.FFmpeg开发笔记(三十五)Windows环境给FFmpeg集成libsrt36.FFmpeg开发笔记(三十六)Linux环境安装SRS实现视频直播推流37.FFmpeg开发笔记全目录(FFmpeg开发实战详解,含直播系统的搭建过程)38.FFmpeg开发笔记(三十七)分析SRS对HLS协议里TS包的插帧操作39.FFmpeg开发笔记(三十八)APP如何访问SRS推流的RTMP直播地址40.FFmpeg开发笔记(三十九)给Visual Studio的C++工程集成FFmpeg41.FFmpeg开发笔记(四十)Nginx集成rtmp模块实现RTMP推拉流42.FFmpeg开发笔记(四十一)结合OBS与MediaMTX实现SRT直播推流43.FFmpeg开发笔记(四十二)使用ZLMediaKit开启SRT视频直播服务44.FFmpeg开发笔记(四十三)使用SRS开启SRT协议的视频直播服务45.FFmpeg开发笔记(四十四)毕业设计可做的几个拉满颜值的音视频APP46.FFmpeg开发笔记(四十五)使用SRT Streamer开启APP直播推流47.FFmpeg开发笔记(四十六)利用SRT协议构建手机APP的直播Demo48.FFmpeg开发笔记(四十七)寒冬下安卓程序员的几个技术转型发展方向49.FFmpeg开发笔记(四十八)从0开始搭建直播系统的开源软件架构50.FFmpeg开发笔记(四十九)助您在毕业设计中脱颖而出的几个流行APP51.FFmpeg开发笔记(五十)聊聊几种流媒体传输技术的前世今生52.FFmpeg开发笔记(五十一)适合学习研究的几个音视频开源框架53.FFmpeg开发笔记(五十二)移动端的国产视频播放器GSYVideoPlayer54.FFmpeg开发笔记(五十三)移动端的国产直播录制工具EasyPusher55.FFmpeg开发笔记(五十四)使用EasyPusher实现移动端的RTSP直播56.FFmpeg开发笔记(五十五)寒冬里的安卓程序员可进阶修炼的几种姿势57.FFmpeg开发笔记(五十六)使用Media3的Exoplayer播放网络视频58.FFmpeg开发笔记(五十七)使用Media3的Transformer加工视频文件
59.FFmpeg开发笔记(五十八)把32位采样的MP3转换为16位的PCM音频
60.FFmpeg开发笔记(五十九)Linux编译ijkplayer的Android平台so库61.FFmpeg开发笔记(六十)使用国产的ijkplayer播放器观看网络视频 原汁原味保存的PCM文件本来也没什么问题,可是在实际应用中,有的业务场景需要特定规格的PCM音频。比如某厂家的语音识别引擎,要求只能输入16位的PCM数据,然而标准的MP3音频都采用32位采样,如此一来,得想办法把32位的MP3音频转换为16位的PCM音频才行。
考虑到使用FFmpeg的命令行转换比较方便,于是在控制台执行下面的ffmpeg格式转换指令,在转换采样频率和声道数量的同时一起转换采样位数。
谁知控制台输出以下的报错信息“pcm_s16le codec not supported”,意思是不支持16位的PCM编码器。
咦,FFmpeg怎么会不支持这么基本的PCM编码器呢?继续执行下面的编码器查看命令:
发现输出的查询结果赫然出现下面的pcm_s16le信息,说明FFmpeg默认已经支持该编码器。
那么为啥ffmpeg命令行无法正常转换PCM音频的采样位数呢?
搜了一圈发现没有使用ffmpeg成功转换采样位数的案例,只好先把原音频转换为32位采样的PCM文件,转换命令如下所示:
接下来另外编写转换音频采样位数的代码convertpcm.c,代码内容如下所示:
保存代码,然后执行下面的编译命令。
编译完成,再执行下面的采样位数转换命令。
现在生成的output_16.pcm就是16位采样的PCM文件,可以用作语音识别了。
更多详细的FFmpeg开发知识参见
合集:
FFmpeg开发实战
分类:
ffmpeg
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 本地部署 DeepSeek:小白也能轻松搞定!
· 如何给本地部署的DeepSeek投喂数据,让他更懂你
· 在缓慢中沉淀,在挑战中重生!2024个人总结!
· 从 Windows Forms 到微服务的经验教训
· 李飞飞的50美金比肩DeepSeek把CEO忽悠瘸了,倒霉的却是程序员
2018-10-19 Kotlin入门(26)数据库ManagedSQLiteOpenHelper