Replies: 3 comments 6 replies
-
之前讨论过,现有的两个脚本瓶颈在于解码太多不必要的帧导致了变态的cpu开销(而且暂存在内存就没法复用生成的缩略图了),存在哪里是次要的。我没看这个脚本,如果只解码目标时轴的帧,那可能有修复的价值 edit: 当前的 thumbfast 几乎全面优于旧有的缩略图方案 |
Beta Was this translation helpful? Give feedback.
-
这脚本不生成bgra的原因只是因为它把bgra文件扔管道了,而ffmpeg/mpv都支持管道IO。由于管道随用随弃的特性,预览图成功显示的时候就已经被消费掉了,不会驻留在内存里,不存在能复用的空间 说实话反复的单帧解码效率太低了,如果真的觉得节省CPU和硬盘是刚需的话,建议向mpv的各种壳提需求,在全局层面实现比现在脚本的方式容易得多,毕竟播放本身已经解码一遍了 当然如果只想充分利用内存不写硬盘的话,其实可以考虑操作系统级别的实现,创建rgba的时候标注下这个文件只驻留内存,windows下塞个attribute T,unix下用tmpfs。或者更傻瓜一点,不用改脚本直接装个ramdisk |
Beta Was this translation helpful? Give feedback.
-
我好几次想重写这个脚本,无奈能力不够,只是改正了输出bgra的命令,基本能够正常使用,其他bug无力解决。 关键的一点是,我没搞懂怎么获取鼠标悬浮位置的时间点,去看OSC的实现,完全看不懂,如果mpv有鼠标seeking的相关函数就好了。 |
Beta Was this translation helpful? Give feedback.
-
https://github.com/bun-dev/mpv-thumbPreview
这个脚本可以不生成bgra文件,而是直接显示内存中生成的bgra,可以解决频繁读写和占用硬盘的问题。不过,该脚本已经过时,在新版mpv中无法使用(生成bgra的命令过时了,修正即可),且有许多bug。
希望有能力的人可以修一修这个脚本,或者,将其直接使用内存存储预览图的功能移植到现有的脚本中。希望能实现悬浮鼠标时才在精确时间生成预览,并暂存在内存,关闭视频就释放内存,这样就可以节省CPU和硬盘了。
Beta Was this translation helpful? Give feedback.
All reactions