yuu 发表于 2022-7-27 06:02:54

求教一个关于mpv缓存的问题

mpv哪个设置选项能先使用一段时间的缓存内容,然后再把缓存一次性向前推进来补上。

否则对于大一点的视频文件,没办法全读进内存,那么达到最大缓存设定后,照样还是边播放边读取,那开缓存以减少硬盘运转时间的意义就没有了啊

tmdtmdtmdqq 发表于 2022-7-27 12:00:05

你可能对 缓存 理解有误
缓存的意义在于:解决存储器性能跟不上CPU性能的问题,并不是为了减少存储器的运行时间(通俗一点说,是为了解决卡顿问题)
某些场景下,开启了缓存的确会使得存储器的运行时间减少,比如频繁读取某一段刚好在缓存中的数据,这样就不会去存储器里读取了。

我没看过播放器的渲染代码,但是按照正常理解,播放器播放一次视频,一般只会使用视频数据一次(或几次?),并不会很频繁地使用某一段视频数据。所以实际上,存储器的运行时间并不会有很实质性的缩短。只是减少了一点读取存储器的次数。

一旦缓存里的数据不命中(在缓存中找不到需要的数据),就会再次读取存储器里的数据到快速存储(内存),这是缓存的设计原理,正常操作。

你所说的硬盘运行时间(对HDD的来说)实际上包含2部分:寻道时间+数据传输时间。

你想减少存储器读取次数的话,就开大缓存,让它一次性载入全部数据。因为存储器的读取次数减少了,存储器的运行时间(主要是减少了寻道时间,而数据传输时间基本不会变,因为数据还是至少要全部读取一次的)也会相应缩短一些。

总而言之就是,一般情况下,缓存不会减少你磁盘的运行时间,只会减少你磁盘的运行次数。因为磁盘运行次数减少了,所以磁盘的运行时间可能随之减少了一点,减少的那部分主要是磁盘的寻道时间。

yuu 发表于 2022-7-27 12:46:38

tmdtmdtmdqq 发表于 2022-7-27 12:00
你可能对 缓存 理解有误
缓存的意义在于:解决存储器性能跟不上CPU性能的问题,并不是为了减少存储器的运行 ...

我的意思是在不开缓存时,播放器默认是边播放边读取硬盘,这样就怕工作时震动开了缓存以后,就可以在一开始读进内存,对于小一点的文件来说,在一开始的十几秒全速读取时我可以保证硬盘静止,一旦全部读进内存,硬盘就不需要工作了。甚至第二次读取时硬盘灯都不亮的

tmdtmdtmdqq 发表于 2022-7-27 13:12:22

你这种需求的话,如果你内存够大,可以建个内存盘试试
直接把数据复制到内存盘操作,这样就完全一次性读取了

内存盘工具挺多,我都用好几年了。当前使用的是GiliSoft RAMDisk

tmdtmdtmdqq 发表于 2022-7-27 13:25:57

硬盘灯亮不亮,跟磁头位置、盘片转动无直接对应关系。
灯不亮不一定代表说磁头就复位、磁盘就不转,只是没读/写而已。盘片该转的还是在转。

如果是移动硬盘,超过时限自动休眠了的话,还好说。

通电后的硬盘最好还是不要有震动或移动什么的,你是不会晓得电脑里还会有什么软件突然会读/写你的硬盘的(系统自带整理工具?杀毒软件?)

孤雨独火 发表于 2022-7-27 21:50:37

本帖最后由 孤雨独火 于 2022-7-27 22:01 编辑

cache = yes
demuxer-max-bytes = 10240MiB

yuu 发表于 2022-7-27 23:07:03

孤雨独火 发表于 2022-7-27 21:50


知道你的意思,我也是差不多这么设置的,但是问题在于

当碰到一个体积大于设定值的文件时,缓存始终都是固定的,这样不就这边在播放,前面还在读取,那样不就和不开缓存没区别了吗,

总不可能什么情况都全部读进内存里啊。

我想要的效果时读进这10G以后,先用这部分缓存,用到比如只剩500M时再一次性把10G设定值给填满,这样就减少了硬盘持续运行时间
页: [1]
查看完整版本: 求教一个关于mpv缓存的问题