前言(吐槽)
写个foorbar关于flac和WAV文件的蛇皮走位的故事
本来打算上博客园开个小博客的,发现居然还要人工审核。
不等了,等到审核通过临时产生的想法都要忘了。。。
事情大概是这样纸滴
今天听歌的时候发现冷鸟女神童靴出专辑了(好像出来很久了)
声音甚是好听,然后在逛贴吧的时候发现了有粉丝提供无损音乐的下载
嗯,然后就一顿操作猛如虎了,
下载完都是flac,然后就兴冲冲的下了个用foorbar打开享受一下(笔记本前两天回档了QAQ)
结果发现。。。
长度还是一个大大的问号。。。
国际惯例先看了一眼解码器:
这不是都挺好的嘛,而且讲道理foorbar是打娘胎里就支持flac的,
再看看能不能放别的flac文件:
是可以的额。。。。
看一下可以正常播放的文件属性是长这样的:
可以看到采样频率和位速等信息,反观播放不了的flac就没有:
你以为到这就完了?
神奇的事情发生了,酷狗可以打开。。。
不信?放一个给你听听(看看)
但是采样什么都是看不到的。。。
于是本能驱使。。我用记事本打开了这个大概50多M的疑似音频文件。。。
在经历了N久N久的转圈圈以后。。。
我放弃了,选了一个比较小的大概20M的一个音频文件来打开,不过也是转了好久好久的圈圈。
内容大致如下,截取了一部分
RIFF?wWAVEfmtD? ? data .w? ?? ? ?? ???? ?? ???? ? ????? ?? ? ? ? ?? ? ? ????? ? ? ? ? ? ?? ? ??? ? ?? ? ??? ? ?? ? ???? ? ? ??? ? ??? ? ?? ? ?? ? ? ? ? ?? ? ? ? ? ? ?? ? ? ?? ? ? ?? ? ? ???? ? ?? ??? ? ?? ? ?? ? ??? ?? ?? ? ? ? ? ? ? ? ? ? ?? ? ? ? ? ? ?? ? ? ? ?? ? ? ? ? ? ? ? ? ? ? ? ?? ? ??? ??? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??? ? ? ?? ? ? ??? ? ?? ? ? ? ? ? ?? ? ?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? ? ? ? ? ? ? ? ? ? ?? ?? ? ? ? ????? ?????? ??? ??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? ???????? ????????????????????????? ??????? ???? ?????????????????? ?????? ?????? ?????????????? ??? ? ????????? ? ????? ? ? ? ?? ? ? ? ?? ???????? ? ? ? ? ??? ? ???? ? ?? ???? ?? ? ? ? ???? ? ? ? ? ? ? ? ? ? ?? ? ? ? ? ? ? ? ? ? ? ?? ? ? ? ? ? ? ?? ? ? ? ? ? ? ? ? ?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
重点还是文件的开头
RIFF?wWAVEfmtD? ? data .w
RIFF?wWAVEfmt D? ? data .w
我看到了啥?
关键词:
RiFFWAVED? ? data .w
emmm。。。什么鬼啊都是,那先百度一下吧:
哦,那是音频格式没跑了,然后接下来找到的资料更是确定了我的推测:
RIFF file format
RIFF全称为资源互换文件格式(Resources Interchange File Format),是Windows下大部分多媒体文件遵循的一种文件结构。RIFF文件所包含的数据类型由该文件的扩展名来标识,能以RIFF格式存储的数据有:
音频视频交错格式数据 .AVI
波形格式数据 .WAV
位图数据格式 .RDI
MIDI格式数据 .RMI
调色板格式 .PAL
多媒体电影 .RMN
动画光标 .ANI
其他的RIFF文件 .BND
CHUNK
chunk是RIFF文件的基本单元,其基本结构如下:
struct chunk
{
uint32_t id; // 块标志
uint32_t size; // 块大小
uint8_t data[size]; // 块数据
};
id 4字节,用以标识块中所包含的数据。如:RIFF,LIST,fmt,data,WAV,AVI等,由于这种文件结构 最初是由Microsoft和IBM为PC机所定义,RIFF文件是按照小端 little-endian字节顺序写入的。
size 块大小 存储在data域中的数据长度,不包含id和size的大小
data 包含数据,数据以字为单位存放,如果数据长度为奇数(字节为单位),则最后添加一个空字节。
chunk是可以嵌套的,但是只有块标志为RIFF或者LIST的chunk才能包含其他的chunk。
以上内容引用自:/wangguchangqing/p/5957531.html
反正我就觉得你Y的就是一个波形文件,然后ren一下就读出来了:
嗯,泼墨漓江真好听!~
其实主要问题还是foorbar检测到flac就用对应解码器去读文件了,其实是个波形文件PCM方式就可以出来了。
至于酷狗嘛。。。。人家路子野。。。