码迷,mamicode.com
首页 > 其他好文 > 详细

程序员大牛与菜鸡分别写音乐播放器播放同一首歌音质会有差别吗?

时间:2017-11-18 12:43:51      阅读:255      评论:0      收藏:0      [点我收藏+]

标签:ibm   rip   开源   芯片   研究   lin   kernel   格式   模式   

播放器对音质有影响吗?

有。但大多数情) 兄下你听不出来。

 

 
技术分享图片
 

影响在哪些方面?

1.对于有损编码,不同解码器解码质量都不太一样,调用不同解码器所得的音贡可以有很大差

别。但现在主流解码器也就那么几个,大家也都差不多了,你也很难自己撸一个更好的出来。

而无损编码的话,解码输出理应没有区另」。

2.播放器中必然涉及重采样、不同位深之间的转换,浮点与定点之间的转换。不同的重采样算

法、不同的dithering 和rounding 策略都会弓|入差别。重采样算法之间的差别还是比较大

的,但一般是调用现成的库或者调用系统的重采样,所以大家差别也不大。dithering 和

rounding 弓|入的误 差,基本上大多数人都听不出来。其实如果你是直接把解码出来的音频送

给系统API,这些过程都是被系统mixer (存在于WASAPI、Core Audio.PulseAudio.

AudioFlinger 等系统audio server 中)做掉了,不需要你自己去做。

3.如果播放器中有音效处理的话,那差别就更大了。但音效没有特别客观的评价标准。这里我就

不讨论这个问题了。但也要指出,同一个音效算法即使使用同一套参数,不同的处理精度,不

同的优化等都会对其处理结果产生影响。

4.另外在音频处理中还有一些常用的优化技巧,比如尽量在初始化的过程中分配好所有内存,处

理过程中不再向系统请求内存。这样可以提高实时性,防止在播放过程中产生可听见的中断,

也就是click 的产生。但现在电脑性能那么高,即使不这么做,产生click 的可能性也已经比以

前大大降低了。如果是在DSP 芯片上,就必须这么做了。

会,foobar就是现成的例子。

当年Windows下的神级音乐播放器,界面不忍直视,就凭音质这个硬功夫称霸。现在我不怎么用了,因为现在基本不用pc放音乐了。

它音质好的原因我没有研究过,猜测可能在于它支持asio吧?

foobar就是现成的例子。

当年Windows下的神级音乐播放器,界面不忍直视,就凭音质这个硬功夫称霸。现在我不怎么用了,因为现在基本不用pc放音乐了。

它音质好的原因我没有研究过,猜测可能在于它支持asio吧?

不是,或者不仅仅是这个原因~foobar出现是作者不满意winamp的发展方向,想做纯粹点的播放器,首先解码库(指MP3的,因为那时候是主流人数格式),使用的是libmpg123~经典,高效,准确的解码库,在主流格式(其实就是mp3,因为其他格式我记忆里解码并没有过多选择,都是最主流的)上奠定了精准这个基础(后来一些版本的foobar能切换libmad,但mad解码MP3音染大,结果精确差,不过有声音暖这优势,但可能与精确的理念不同,新版本都不能切换);

其次kernel模式输出,绕过了一众使用directsound输出的播放器可能导致的混音与渲染(作者也说明过,kernel模式并不比dxsound声音优势,只不过dx里可以有各种filter,更多的流程,滤镜可能导致音质延迟与劣化)~

加上其他的更好的解码精度(有损的,如mp3,mpc,aac等,内部都是32位浮点),更优秀的抖动算法;加上ac97标准那垃圾的SRC导致的声音劣化,foobar自带或者能替换的src库都远超系统驱动的src算法~优秀的EQ算法等。

综上一系列手段保证了音质~一句话,作者明白音乐播放的每一个流程,节点,在自己(代码)能控制的阶段都做了比较好的选择(毕竟解码库不是自己写的,SRC的算法也是知名开源的,其他部分也是),可以认为作者相当于一个技术牛逼,项目(音乐播放)深刻理解的优秀集成商(′▽`)ノ?

欢迎加入学习交流群569772982,大家一起学习交流。

程序员大牛与菜鸡分别写音乐播放器播放同一首歌音质会有差别吗?

标签:ibm   rip   开源   芯片   研究   lin   kernel   格式   模式   

原文地址:http://www.cnblogs.com/wl2014/p/7856287.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!