itKelis / MPV-Play-BiliBili-Comments

This is a mpv plugin for mpv to load bilibili comments automaticaly
GNU General Public License v3.0
154 stars 12 forks source link

subtitles and danmu coexist / 字幕与弹幕共存 #22

Closed verygoodlee closed 11 months ago

verygoodlee commented 1 year ago

目前有个痛点,弹幕与字幕只能选择一个,不能同时播,\ 其实mpv是支持多字幕的,使用lavfi下的subtitles滤镜可同时输出多个高级字幕,\ vf append subtitles=filename="xxx.ass"或者简写vf append subtitles="xxx.ass"\ 但是有个缺点,只在软解和auto-copy硬解模式下有效,但是也不算多大的问题,auto-copy硬解是兼顾性能和兼容性的最佳选择

修改点如下:

  1. 使用subtitles滤镜加载弹幕,字幕还是原生的字幕轨
  2. 因为只在软解和auto-copy硬解模式下有效,综合考虑解码强制改为hwdec=auto-copy
  3. 由于不能像之前一样通过切换字幕轨来关闭弹幕,快捷键b改为 加载/关闭 一体,如果存在弹幕就关闭,不存在就加载

测试视频链接,最终效果图如下,弹幕和字幕都成功加载\ 屏幕截图 2023-10-09 222613

update: 假设禁用了mpv默认快捷键,mpv.conf no-input-default-bindings,此时快捷键b是无效的, 脚本里绑定快捷键mp.add_key_binding()的时候给了一个名字toggle, 可以手动在input.conf里自定义快捷键KEY script-binding bilibiliAssert/toggle,这里配置的快捷键是可生效的

update2: 显示器分辨率是可以自动获取的,display-widthdisplay-height两个属性, 必须要开始播放之后才能取到,注册事件mp.register_event()start-file改为file-loaded才行,不然会取到空值