编程开源技术交流,分享技术与知识

网站首页 > 开源技术 正文

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

wxchong 2024-08-16 06:04:29 开源技术 21 ℃ 0 评论

播放器对音质有影响吗?

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

影响在哪些方面?

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的算法也是知名开源的,其他部分也是),可以认为作者相当于一个技术牛逼,项目(音乐播放)深刻理解的优秀集成商(′▽`)ノ?

一个程序员学习平台分享给你们,让你在实践中积累经验掌握原理。主要方向是JAVA工程师。如果你想拿高薪,想突破瓶颈,想跟别人竞争能取得优势的,想进BAT但是有担心面试不过的,可以加我的Java学习交流群:282711949。

注:加群要求

1、大学学习的是Java相关专业,毕业后面试受挫,找不到对口工作可以

2、在公司待久了,现在过得很安逸,但跳槽时面试碰壁。需要在短时间内进修、跳槽拿高薪的

3、参加过线下培训后,知识点掌握不够深刻,就业困难,想继续深造

4、已经在Java相关部门上班的在职人员,对自身职业规划不清晰,混日子的

5、有一定的C语言基础,接触过java开发,想转行的

小号勿扰,不喜勿加

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表