pcm
一、PCM文件的定义
PCM文件:模拟音频信号经模数转换(A/D变换)直接形成的二进制序列,该文件没有附加的文件头和文件结束标志。windows的Convert工具能够把PCM音频格式的文件转换成Microsoft的wav格式的文件。将音频数字化,事实上就是将声音数字化。最常见的方式是透过脉冲编码调制PCM(Pulse Code Modulation) 。
上面这段话是博主在网上摘抄的关于PCM文件的定义。其实PCM简单地来说,就是一种无压缩的原始音频格式,而我们熟知的MP3等格式的音频文件是有压缩的(因为无压缩导致的结果就是占用空间会很大,会极大地增加存贮和传输的成本,所以存贮在电脑上的一般是MP3等压缩格式的文件)。播放器要想播放MP3,AAC,APE,FLAC等格式的音频文件,首先得把它们解码成PCM数据(解码出来后一般是FLT的格式,还要通过重采样转为声卡支持的S16格式),然后才能播放。
二、通过FFmpeg命令转换得到PCM文件
如下图所示,工程目录下有audio1.mp3这个MP3文件,下面我们介绍把它转为PCM文件的方法。
在命令提示符cmd.exe中进入当前工程所在目录(ffmpeg.exe和audio1.mp3所在目录),然后输入命令:
ffmpeg -i audio1.mp3 -f s16le audio1.pcm
该命令的作用是把所在路径下的audio1.mp3文件转换为s16(声卡支持该格式)、小端格式的PCM文件:audio1.pcm。
注:
-i 表示设定输入流
-f 表示设定输出格式
执行该命令后,我们发现工程目录下会生成audio1.pcm文件,如下图所示:
三、PCM文件分析
我们可以看到生成的audio1.pcm文件大小为49.5MB,比audio1.mp3文件的11.2MB大了数倍,如下图所示,证明了PCM文件占用空间比MP3文件要大。
至于audio1.pcm文件大小为49.5MB,这个49.5MB,是可以根据公式算出来的。使用博主的另一篇博文《FFmpeg解封装(解复用)并获取本地媒体文件的信息》https://blog.csdn.net/u014552102/article/details/81709929中的程序可以看到audio1.mp3的采样频率(音频采样率)为44100Hz,采样位数为16位(这个从音频采样格式:AV_SAMPLE_FMT_S16P可以看出),声道(音频信道数目)为2。时间(音频总时长)为294秒,如下图所示:(在这两篇博客中我们都用同一个audio1.mp3文件,下图摘自我上述的那篇博客)
根据PCM文件所占容量的公式:存储量 = (采样频率*采样位数*声道)*时间/8(单位:字节数).
计算得出的audio1.pcm的大小 = (44100 * 16 * 2) * 294 / 8 = 51861600(字节) = 49.45MB
这个跟我们在电脑上看到的audio1.pcm文件大小为49.5MB是一致的。由此证明了PCM文件的大小是可以算出来的。
四、使用ffplay.exe播放PCM文件
PCM文件是原始无压缩的音频格式文件,用市面上流行的播放器我们一般无法直接播放。但我们可以通过FFmpeg提供的ffplay.exe播放PCM文件。
在命令提示符cmd.exe中进入当前工程所在目录(ffplay.exe和audio1.pcm所在目录),然后输入命令:
ffplay -ar 44100 -ac 2 -f s16le -i audio1.pcm
该命令的作用是使用ffplay播放频率为44100Hz,双通道,16位、小端的音频文件audio1.pcm。
注:
-i 表示指定的输入文件
-f 表示强制使用的格式
-ar 表示播放的音频数据的采样率
-ac 表示播放的音频数据的通道数
如下图所示,出现如下画面和能听到音乐,则表示播放成功。
五、遇到问题:
如果使用ffplay.exe播放媒体文件遇到错误:WASAPI can't initialize audio client。如下图所示:
则先在命令提示符执行命令:
set SDL_AUDIODRIVER=directsound
然后再使用ffplay.exe播放媒体文件。
六、资源下载
资源下载地址在https://download.csdn.net/download/u014552102/10671629,包含上述演示用的所有资源。包括上述的ffmpeg.exe,ffplay.exe,mp3文件,pcm文件等。
相关阅读
ijkplayer的github地址ijkplayer的编译gradle现在可以直接使用gradle引入ijkplayer了。但是,如果需要对更多格式进行支持,还是需要
磨洋工磨了好久,终于决定开始写视频播放器了,嗯,相册播放器那里,就是典型的旧坑未填,又挖新坑,233.再辞给自己立一个flag,一个月之后就要
文章目录1 问题描述2 解决方法1 问题描述 firefox正在安装组件,以便播放此页面上的音频或视频用火狐浏览器观看视频时被进行上述黄
昨天有朋友问我,她的电脑下载了一种新的文件格式,是MXF扩展名的,不知道此文件如何打开,那么MXF是什么文件?MXF格式用什么播放器呢?本文
迅雷云点播于2011年底推出了测试版,只向付费的迅雷VIP会员开放。云点播没有客户端,用户只需在该服务的网页上输入一部影片的BT种子