从音乐播放的流程解释可能比较容易,我虽然id是cppbuilder却不是程序员,说个大概不一定精确。在Roon/tidal-connect等现代数播客户端上,你要播放一段音乐,需要做几件事:
1.从硬盘甚至网络读文件(的一部分)出来放内存里
2.在内存里转化为可以播放的SNDRV_PCM_FMTBIT_DSD_U32_BE等格式
3.用alsa播放这个格式
所谓有损无损,体现在两方面,一个是数据是否一样,很显然无损flac在数据上是无损的。另外一个就是延迟/cpu占用率等是否一样,站在爱好者的角度可能会觉得完全没压缩的wav文件更快,但是实际测试中往往是适度压缩的flac更快,CPU占用也更低。主要原因出在从硬盘读取这块,即便是最高速的ssd硬盘,速度和延迟也远不如内存,这导致从硬盘读取wav会比读取flac花费更多时间,占用更多CPU,转化格式所需时间反而相差不大,而且wav并不是可以直接被系统读取的文件,数播上是上面那个很长的格式,flac/wav/ape都是需要转码的。实际上一些企业级的NAS上就是这么设计文件系统的,存储和读取时候要做数据压缩。
事实上有的数播公司私有的播放软件会因为上述原因,修改传统播放音频流的过程,不是一边转码一边播放而是先转码,一个音轨转完了一起播放,这样虽然播放之前会有些许延迟的时间,播放时占用的资源却更低更稳定。“号称”音质更好。
不知道我说清了没有。
【 在 HANNING 的大作中提到: 】
: 请教一下,
: mp3我知道是舍弃了音频中的高频部分和弱小信号,是有损的;
: flac,ape压缩采用都是无损压缩算法,我理解的,就和rar一样,是可以恢复原来的wave的,为什么是有损的呢?
: e等所谓无损。其实只要是压缩过的都是有损的。
--
修改:cppbuilder FROM 1.202.10.*
FROM 1.202.10.*