cczzhh 发表于 2018-12-5 07:49:01

本帖最后由 cczzhh 于 2018-12-5 07:57 编辑

EdveR 发表于 2018-12-5 00:21
请教一下,mpv可以用快捷键手动加载外挂字幕吗?就像MPC-BE按Ctrl+L那样~
因为个人习惯原因,字幕文件和视 ...
意思是类似open-file-dialog.lua这个插件,用Ctrl+O打开视频/音频文件那样,用Ctrl+L打开字幕文件?用lua写一下就可以做到了,就照着open-file-dialog.lua抄再小改一下就行了,把loadfile换成sub-add。如果是这个意思的话我可以改个脚本出来。

mpv本身肯定是不支持的,因为人家设计就是命令行程序,是通过
mpv video/example.mkv --sub-file=subs/different_name.ass这样的方式打开视频和字幕的。拖拽添加文件其实大多数情况下已经够好了。


SMPlayer这东西早在mpv还是mplayer的时候我就用过了。如今想拿它作为mpv的GUI,如果你用着没问题的话,那也挺好的。就我个人而言,我是不喜欢SMPlayer的,因为脚本系统和mpv自身的配置文件全被禁用了,对我而言是不可接受的。其他也有很多用libmpv的GUI,好比mpv-qt,但质量都一般。GUI的设计应该向macOS的IINA看齐。mpv的GitHub Wiki这页有大概讲哪些基于mpv的应用:https://github.com/mpv-player/mpv/wiki/Applications-using-mpv


mpv目前仍然是没有官方GUI的。但我觉得现在这样用lua凑出OSC的minimal GUI已经很好了(可能就是习惯了吧


EdveR 发表于 2018-12-5 17:44:30

本帖最后由 EdveR 于 2018-12-5 17:54 编辑

cczzhh 发表于 2018-12-5 07:49
意思是类似open-file-dialog.lua这个插件,用Ctrl+O打开视频/音频文件那样,用Ctrl+L打开字幕文件?用lua ...
确实界面都有些土,不是很喜欢,最麻烦的是它默认的快捷键还和mpv不一样,刚习惯了mpv的快捷键。。还是老老实实用mpv了。
嗯,是这个意思。自己简单粗暴地改了一下,能用,也不知道对不对。后面title和lang都没写(其实是没搞清楚)。可以把打开文件窗口对话的路径定义到视频的上一层文件夹吗?现在打开窗口默认是上一次打开过的路径。还有,我发现scripts文件夹放在mpv安装目录下也可以正常运行。
sub-add "<file>" [<flags> [<title> [<lang>]]]
Load the given subtitle file. It is selected as current subtitle after loading.

The flags args is one of the following values:

<select>

Select the subtitle immediately.
<auto>

Don't select the subtitle. (Or in some special situations, let the default stream selection mechanism decide.)
<cached>

Select the subtitle. If a subtitle with the same filename was already added, that one is selected, instead of loading a duplicate entry. (In this case, title/language are ignored, and if the was changed since it was loaded, these changes won't be reflected.)
The title argument sets the track title in the UI.

The lang argument sets the track language, and can also influence stream selection with flags set to auto.
utils = require 'mp.utils'

function open_sub_dialog()
      local was_ontop = mp.get_property_native("ontop")
      if was_ontop then mp.set_property_native("ontop", false) end
      local res = utils.subprocess({
                args = {'powershell', '-NoProfile', '-Command', [[& {
                        Trap {
                              Write-Error -ErrorRecord $_
                              Exit 1
                        }
                        Add-Type -AssemblyName PresentationFramework

                        $u8 = ::UTF8
                        $out = ::OpenStandardOutput()

                        $ofd = New-Object -TypeName Microsoft.Win32.OpenFileDialog
                        $ofd.Multiselect = $true

                        If ($ofd.ShowDialog() -eq $true) {
                              ForEach ($filename in $ofd.FileNames) {
                                        $u8filename = $u8.GetBytes("$filename`n")
                                        $out.Write($u8filename, 0, $u8filename.Length)
                              }
                        }
                }]]},
                cancellable = false,
      })
      if was_ontop then mp.set_property_native("ontop", true) end
      if (res.status ~= 0) then return end

      local first_file = true
      for filename in string.gmatch(res.stdout, '[^\n]+') do
                mp.commandv('sub-add', filename, first_file and 'select')
                first_file = false
      end
end

mp.add_key_binding('ctrl+l', 'open-sub-dialog', open_sub_dialog)还有两个问题:
1、在播放有些字幕时,特效会不对,如下图。OP过渡效果应该是逐字变色的,MPC-BE播放正常,用mpv就变成下面这样了。
https://upload.cc/i1/2018/12/05/DvCxHr.gif
2、播放4K HDR 60fps时卡顿掉帧,4K HDR 24fps时流畅不掉帧,CPU占用不超过60%。之前用MPC-BE+madVR播放60fps也不掉帧,mpv默认设置。
https://upload.cc/i1/2018/12/05/y7lCD8.png

laichiaheng 发表于 2018-12-5 18:56:03

本帖最后由 laichiaheng 于 2018-12-5 20:17 编辑

EdveR 发表于 2018-12-5 17:44
确实界面都有些土,不是很喜欢,最麻烦的是它默认的快捷键还和mpv不一样,刚习惯了mpv的快捷键。。还是老 ...
我也是 4K 60fps 時會掉幀,不過只有啟用 vaapi zero copy 並且開啟高於 bilinear 的 cscale 演算法和 deband 時會發生,而且我發現離開全螢幕時就不會了,大概又是 AMDGPU 驅動出的包

CPU:i5-4460
GPU:AMD RX460

cczzhh 发表于 2018-12-6 06:01:41

EdveR 发表于 2018-12-5 17:44
确实界面都有些土,不是很喜欢,最麻烦的是它默认的快捷键还和mpv不一样,刚习惯了mpv的快捷键。。还是老 ...

脚本中你不需要first_file这个变量。然后推荐用'cached'而非'select'。

想要直接打开进上一层目录要改那部分powershell脚本。我查了一圈没找到合适的方法。我是觉得,何必这么麻烦自己。推荐要么命令行启动,要么在视频文件夹底下再建一个subs文件夹,里面存指向上层目录里的字幕文件的快捷方式,并修改快捷方式的名字匹配视频文件名,利用mpv的字幕自动加载机制。



字幕特效不对原因不太好判断,要么libass就是有bug,要么就是字幕制作者是按照vsfilter的标准做的,然后触及到了和libass不兼容的部分,这部分不兼容也有可能是libass没bug但是vsfilter有bug,字幕文件这么写反而在vsfilter上正常,之类的。我是对特效字幕没什么了解,不过你可以把这个字幕传上来看看。

我4790K软解4K 60fps HDR也会掉帧,甚至选择vo=null没有视频输出纯测试解码能力也会发现无法做到实时解码。由于我自己并不看4K 60fps HDR,就没多计较。如果想解决的话,可以试试开关vd-lavc-dr(默认是开的),vd-lavc-threads设超过16线程(默认自适应,但不会超过16)等等来试图增加软解性能。至于lav为什么能解更快,我不知道,按道理用的都是ffmpeg的解码。或许和编译器指令集优化有关?如果是比GTX960新的显卡,那开d3d11硬解吧。

laichiaheng 发表于 2018-12-6 08:10:48

本帖最后由 laichiaheng 于 2018-12-6 08:12 编辑

cczzhh 发表于 2018-12-6 06:01
脚本中你不需要first_file这个变量。然后推荐用'cached'而非'select'。

想要直接打开进上一层目录要改那 ...
mpv 的字幕渲染絕對有問題,只要有外掛 srt 這類的字幕就容易出現 delayed 或 mistimed,在我比較舊的電腦上更是明顯
然後我發現我和他問題不太一樣,4K HDR 60fps 沒問題,但 4K 非HDR 60fps 就有問題

EdveR 发表于 2018-12-6 20:51:06

本帖最后由 EdveR 于 2018-12-6 20:52 编辑

cczzhh 发表于 2018-12-6 06:01
脚本中你不需要first_file这个变量。然后推荐用'cached'而非'select'。

想要直接打开进上一层目录要改那 ...
我都试过了,还是一样掉帧。vulkan也试过,LZ的配置也试过,和4K HDR有关的项都改过,还是没有用。MPC-BE+madVR能跑得动,为什么换mpv就不行了?明明mpv渲染字幕的效率比MPC-BE高的说~搞不懂。。。CPU和GPU占用都不超过50%,不像是硬件性能不够啊~老显卡想硬解也解不了T_T
附件是加载字幕的lua脚本和那个mpv播放有问题的字幕。

EdveR 发表于 2018-12-6 21:25:46

laichiaheng 发表于 2018-12-5 18:56
我也是 4K 60fps 時會掉幀,不過只有啟用 vaapi zero copy 並且開啟高於 bilinear 的 cscale 演算法和 deb ...

我是全屏幕和窗口化都会掉帧,不管用什么算法。我用的N卡,应该不是GPU驱动的问题。话说你是用Linux吗?

laichiaheng 发表于 2018-12-6 23:26:17

EdveR 发表于 2018-12-6 21:25
我是全屏幕和窗口化都会掉帧,不管用什么算法。我用的N卡,应该不是GPU驱动的问题。话说你是用Linux吗? ...
是,原來你是用 Windows 啊,沒注意到

neil78 发表于 2018-12-7 01:36:17

本帖最后由 neil78 于 2018-12-7 02:21 编辑

大,vulkan 模式是否在旧的显卡、系统(例如win7)表现不是很好啊



cczzhh 发表于 2018-12-7 02:42:28

本帖最后由 cczzhh 于 2018-12-7 08:34 编辑

EdveR 发表于 2018-12-6 21:25
我是全屏幕和窗口化都会掉帧,不管用什么算法。我用的N卡,应该不是GPU驱动的问题。话说你是用Linux吗? ...
他用的是硬解,完全不是一个问题。

你用的是什么CPU?madVR Ctrl+j看dropped frames计数确实不增长?

我Intel i7-4790K用mpc-be+madVR也会掉帧,即使开bilinear算法。


页: 2 3 4 5 6 7 8 9 10 11 [12] 13 14 15 16 17 18 19 20 21
查看完整版本: 分享一下自己的mpv配置