找回密码
 -注册-
查看: 19777|回复: 30
打印 上一主题 下一主题

针对foobar2000卡顿的优化总结

[复制链接]
跳转到指定楼层
1
发表于 2019-1-28 23:03 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式 来自 黑龙江省哈尔滨市
本帖最后由 SpinningSTAR 于 2019-1-28 23:56 编辑

之前我已经发过一个帖子,但仍觉得不够精,故在此重新总结一下foobar2000的优化小技巧
此贴仅供参考,希望在你foobar2000卡顿时能够参照此贴找到一个改善思路
请大家阅读此贴子时注意我对应的说明,都是我自己在实际使用过程当中总结出来的,由于本人水平有限,可能解释的不是特别准确到位




2
 楼主| 发表于 2019-1-28 23:17 | 只看该作者 来自 黑龙江省哈尔滨市
本帖最后由 SpinningSTAR 于 2019-1-29 00:03 编辑

第一类方法:调节foobar2000自身的设置
1.缓冲长度选项

在foobar的 参数选项-播放-输出 界面上有个缓冲长度的选项



界面如图所示,单位为毫秒ms
当foobar卡顿时,可以通过适当拉高缓冲长度来提升流畅度
此项的作用是写入内存的缓冲时长,故拉高可在一定程度上解决卡顿
个人推荐500——1000ms
但请注意:
这个缓冲长度会影响听感,短缓冲下,声音解析度较高,但比较干燥,齿音较多.极端情况下,超出了声卡的能力范围,甚至会出现爆音和短暂的停顿;

高缓冲下,声音叫润,细节减少,但耐听.极端情况下,超出声卡缓存,会报错。

2.全文件缓冲选项

在foobar的 参数选项-高级-播放 界面上有一个全文件缓冲的选项


界面如图所示,这个选项的作用是设置播放时把源文件全部读入内存的最大文件大小

我设置的是1048600kb,也就是略大于1G(即为1048576kb)

请注意:在测试过程中发现foobar最大支持1G的全文件缓冲,在设置上写16G都没用,它最大还是缓存1G文件(一般的无损文件很少超过1G)

还试了试给foobar申请大内存,然并卵,最大就缓存1G


个人认为:全文件缓冲解决问题的概率较高,内存的读写速度远高于硬盘,哪怕是SSD,CPU直接从内存中读取文件,而不再是从硬盘一点点提取到内存,再由CPU读取

减少了中间过程,卡顿产生的几率也就更小。



如果你的电脑配置够好,推荐使用第二种方法,例如我电脑是16G内存,分1G听歌用总不过分吧(还不一定用满)

配置实在不行就用第一个方法,但影响听感。


回复

使用道具 举报

3
 楼主| 发表于 2019-1-28 23:47 | 只看该作者 来自 黑龙江省哈尔滨市
第二类方法:提升foobar的优先级,并使其CPU亲和力避开CPU0
实际使用中,如果你打开任务管理器会发现:CPU0的占用率明显高于CPU1234567......

也就是传说中的“一核有难,n核围观”

究其原因,CPU0作为第一逻辑核心,什么任务都会优先找上他
windows系统自带的DPC(延迟过程调用),DPC会导致高优先级进程打断低优先级进程
一旦来了优先级更高的任务,那么foobar的任务就被搁置了,也就卡了一下。


解决此问题的方法就是使用软件 process lasso 调整
第一,调高优先级

第二,调整CPU亲和力(注:一定要避开CPU0)

第三,调整I/O优先级

第四,调整内存优先级

注:一定要在总是里更改

解释一下我们这么做的目的
foobar本来也不太吃资源,还总被打断,我们提升它这几个方面:
1.优先级:即进程优先级,设为高,防止被打断
2.CPU亲和力:选择使用率较低的CPU核心上运行foobar的进程
3.I/O优先级:即该进程的调用硬盘资源的优先级,设为高
4.内存优先级:进程调用内存的优先级

用个通俗的解释就是:让工人优先干foobar的小活,找比较闲的工人去干,仓库的钥匙给工人们,流水线也允许优先使用

这样达到了从系统层面上优化foobar

而DPC是底层系统的运行机制,相当于宪法,很难很难很难更改!!!

回复

使用道具 举报

4
发表于 2019-1-28 23:57 | 只看该作者 来自 上海市
不管有没有用,先照样设置一下。
也没觉得有什么不同(本来也没爆音)
回复

使用道具 举报

5
发表于 2019-1-29 00:03 来自手机 | 只看该作者 来自 上海市闵行区
不知道楼主是什么windows系统,我亲身经历的情况是在win7下我用尽了很多方法其中就包括楼主的一些方法结果卡顿依旧,但我换成win10之后没做任何优化,卡顿消失了!!
回复

使用道具 举报

6
 楼主| 发表于 2019-1-29 00:07 | 只看该作者 来自 黑龙江省哈尔滨市
本帖最后由 SpinningSTAR 于 2019-1-29 00:08 编辑
rejx 发表于 2019-1-29 00:03
不知道楼主是什么windows系统,我亲身经历的情况是在win7下我用尽了很多方法其中就包括楼主的一些方法结果 ...

同win10,其实win10的卡顿不算太多,但我有强迫症。。。
还有,我有听歌时用电脑做其他事的习惯,此种做法会导致出现一定的卡顿,才研究的这些方法


回复

使用道具 举报

7
 楼主| 发表于 2019-1-29 00:12 | 只看该作者 来自 辽宁省沈阳市
大大TOM 发表于 2019-1-28 23:57
不管有没有用,先照样设置一下。
也没觉得有什么不同(本来也没爆音)

哈哈,不卡顿就没必要看我这帖子了
回复

使用道具 举报

8
发表于 2019-1-29 00:37 来自手机 | 只看该作者 来自 上海市闵行区
SpinningSTAR 发表于 2019-1-29 00:07
同win10,其实win10的卡顿不算太多,但我有强迫症。。。
还有,我有听歌时用电脑做其他事的习惯,此种做 ...

我也是喜欢一边工作一边听音乐,要同时打开好几个大型软件,在同样的应用环境下win7秒顿频率高到我无法忍受,而换成win10就再也没发生过卡顿,可能还没有楼主折磨电脑那么狠吧。这说明win10确实有可取之处。
回复

使用道具 举报

9
 楼主| 发表于 2019-1-30 18:46 | 只看该作者 来自 黑龙江省哈尔滨市
再说一下:
1.foobar其实优化还行,但我听歌走的ASIO通道,可能就有点问题了,音质最佳,相对易卡顿;再加上我有听歌干其他事情的习惯,就更容易卡。
2.其实走DS通道从来没卡过,但音质堪忧;wasipi通道感觉有音染,就怎么没用过。
3.我CPU是i7-7700hq 4c8t 默频2.8Ghz 睿频3.8Ghz,理论上不应该会卡的,但现实打脸。
4.foobar占用不大,把它提升优先级后再移到闲置核心单独处理,卡顿问题就不大了。再把那些大型软件关闭foobar所在核心,感觉会更好。
5.之所以这么干,是因为process lasso也只是个软件,能提升的优先级有限,所以还是要配合CPU亲和力、IO优先级、内存优先级的调整。
回复

使用道具 举报

10
发表于 2019-1-30 19:26 | 只看该作者 来自 浙江省台州市
我拿着100块钱进图吧淘来一台电脑,闭着眼睛装上的Win7,一开foobar,完全没有卡顿。
不太能理解lz折腾是为个啥。。。
对楼主来说,也许去图吧淘个100块的电脑才是正经的解决之道。。
回复

使用道具 举报

11
发表于 2019-2-21 17:04 | 只看该作者 来自 广东省中山市
欸,少有的实用主义玩家,nice
回复

使用道具 举报

12
 楼主| 发表于 2019-2-22 09:50 | 只看该作者 来自 辽宁省锦州市
补充一下:最近实验发现,foobar2000并不太适合超线程技术,存在负优化
如果你电脑CPU有超线程,在避开CPU0的同时,选择物理核心也就是CPU2468....(偶数核心)


实在不知道那个是物理核心,你就点一下“Disable Hyper-Threading”,并关闭CPU0。
回复

使用道具 举报

13
发表于 2019-2-22 10:05 | 只看该作者 来自 广东省中山市
本帖最后由 la2ygoo 于 2019-2-22 10:15 编辑

卡顿就是缓冲长度太低了吧,选1000ms可能就什么事都没。foobar官方也说asio和wasapi模式不提升音质,低延时下可能有副作用影响音质,说的就是卡顿爆音。
有个说法是设置到1280ms,然后高级里面wasapi push设置成320ms,然后用wasapi push输出音质最好。

我看aimp(类似foobar的软件)的缓存大小,算出来也是接近320ms。



回复

使用道具 举报

14
发表于 2019-2-22 10:11 | 只看该作者 来自 上海市静安区
是不是开了高强度的SRC升频插件?
回复

使用道具 举报

15
 楼主| 发表于 2019-2-22 10:19 | 只看该作者 来自 辽宁省锦州市
芝麻汤团 发表于 2019-2-22 10:11
是不是开了高强度的SRC升频插件?

从不开那东西,影响音质的
回复

使用道具 举报

16
 楼主| 发表于 2019-2-22 10:24 | 只看该作者 来自 辽宁省锦州市
la2ygoo 发表于 2019-2-22 10:05
卡顿就是缓冲长度太低了吧,选1000ms可能就什么事都没。foobar官方也说asio和wasapi模式不提升音质,低延时 ...

ASIO对于DSD格式兼容性更好,而且DSDTransconder也仅支持ASIO通道
wasapi的话事件模式要好于推送模式吧
回复

使用道具 举报

17
发表于 2019-3-7 14:58 | 只看该作者 来自 上海市闵行区
SpinningSTAR 发表于 2019-1-28 23:47
第二类方法:提升foobar的优先级,并使其CPU亲和力避开CPU0
实际使用中,如果你打开任务管理器会发现:CPU ...

这个软件 process lasso非常好!
回复

使用道具 举报

18
发表于 2019-3-7 16:46 | 只看该作者 来自 北京市
我的电脑是双核的。。。
回复

使用道具 举报

19
发表于 2019-3-7 16:57 | 只看该作者 来自 上海市
不要用ASIO回放,回放用wasapi push模式更好。ASIO默认的缓存低,ASIO是XP时代为录音设备开发出来的,不是给回放音频用的,录音要求低延迟,回放延迟没什么大问题,缓存大一点,声音更稳定。
回复

使用道具 举报

20
发表于 2019-3-7 16:58 | 只看该作者 来自 上海市
SpinningSTAR 发表于 2019-2-22 10:24
ASIO对于DSD格式兼容性更好,而且DSDTransconder也仅支持ASIO通道
wasapi的话事件模式要好于推送模式吧
...

Event模式貌似更清晰,但是声音硬,缺乏乐感,push模式听感更模拟,流畅。event需要频繁的上下文切换其实并不好。回放还是push好。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | -注册-

本版积分规则

Archiver|手机版|粤icp备09046054号|耳机网-耳机大家坛

粤公网安备 44030602000598号 耳机大家坛、www.erji.net、网站LOGO图形均为注册商标

GMT+8, 2024-4-27 21:37

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表