iina/iina

切换不同字幕可以根据文件名切换,而不是按字幕流序号的方式

Opened this issue · 5 comments

比如,现在有三个不同的外挂字幕文件,设置自动添加字幕到软件中,软件会以1,2,3来标序这三个字幕流。设置快捷键切换这几个字幕也是以1,2,3的序号设置。因为字幕加载的顺序每次都可能不同,所以设置的快捷键切换就可能出现偏差,本来想切换中文,结果切换的是英文。所以是否可以增加设置快捷键的时候根据文件名的特征设置?(文件名一般是有不同语言模式的次后缀)

其实,许多字幕文件在命名时并未明确标注字幕语言信息。我认为最佳的解决方案是采用可视化的字幕列表展示方式。用户只需根据界面上的指引,即可轻松选择和切换不同的字幕,无需在文件名中费力寻找语言信息。这种方式类似于 macOS 中的输入法切换,通过简单的组合键(如Command+空格键)即可迅速切换至所需的输入法,既方便又高效。

其实,许多字幕文件在命名时并未明确标注字幕语言信息。我认为最佳的解决方案是采用可视化的字幕列表展示方式。用户只需根据界面上的指引,即可轻松选择和切换不同的字幕,无需在文件名中费力寻找语言信息。这种方式类似于 macOS 中的输入法切换,通过简单的组合键(如Command+空格键)即可迅速切换至所需的输入法,既方便又高效。

这个功能的目的是给快捷键用的,就是最快速地一键即可以明确切换到不同语言模式的字幕。借助界面来指引就慢了,体验差非常多。如果字幕文件没有标志字幕信息,那么用户是自己修改一下文件名就可以了

以英语为母语的人使用在线翻译进行回复...

这项提议的功能带来了一个软件工程设计问题。与许多开放源代码项目类似,IINA 也是在许多其他项目的代码之上分层的。软件工程师必须考虑在什么地方进行修改比较合适。通常情况下,在从其他项目获取的代码之上添加新功能是不可取的,因为该功能确实应该在其他项目拥有的代码中实现。如果您确实在其他项目的代码上添加了功能,那么如果将来该项目也实现了该功能,就会出现问题。

在音频/视频播放和字幕渲染支持方面,IINA 使用了 mpv 项目中的一个库。因此,开发人员必须考虑的一个问题是,mpv 播放器是否也能从提议的功能中受益。如果可以,最好由 mpv 项目实现该功能,然后由 IINA 进行必要的修改以利用该功能。

mpv 播放器具有将按键与动作绑定的广泛功能。也许应该向该项目提出这样的功能建议。

要在 IINA 插件中实现某些功能,所需信息可在 mpv 属性 track-list 中找到:

track-list:
low-batt@gag ~$ echo '{ "command": ["get_property", "track-list"] }' | socat - /tmp/mpv-socket | jq
{
  "data": [
    {
      "id": 1,
      "type": "video",
      "src-id": 1,
      "image": false,
      "albumart": false,
      "default": true,
      "forced": false,
      "dependent": false,
      "visual-impaired": false,
      "hearing-impaired": false,
      "external": false,
      "selected": true,
      "main-selection": 0,
      "ff-index": 0,
      "decoder-desc": "h264 (H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10)",
      "codec": "h264",
      "demux-w": 1920,
      "demux-h": 1080,
      "demux-fps": 30.000000,
      "demux-par": 1.000000
    },
    {
      "id": 1,
      "type": "audio",
      "src-id": 2,
      "lang": "eng",
      "audio-channels": 2,
      "image": false,
      "albumart": false,
      "default": true,
      "forced": false,
      "dependent": false,
      "visual-impaired": false,
      "hearing-impaired": false,
      "external": false,
      "selected": true,
      "main-selection": 0,
      "ff-index": 1,
      "decoder-desc": "aac (AAC (Advanced Audio Coding))",
      "codec": "aac",
      "demux-channel-count": 2,
      "demux-channels": "stereo",
      "demux-samplerate": 44100,
      "demux-bitrate": 128000
    },
    {
      "id": 1,
      "type": "sub",
      "title": "Predictions on the USA  - With many different Subtitles [6QmwrtdqFJc].en.vtt",
      "image": false,
      "albumart": false,
      "default": false,
      "forced": false,
      "dependent": false,
      "visual-impaired": false,
      "hearing-impaired": false,
      "external": true,
      "selected": true,
      "main-selection": 0,
      "external-filename": "/Users/low-batt/Movies/Predictions on the USA  - With many different Subtitles [6QmwrtdqFJc].en.vtt",
      "ff-index": 0,
      "codec": "webvtt"
    },
    {
      "id": 2,
      "type": "sub",
      "title": "Predictions on the USA  - With many different Subtitles [6QmwrtdqFJc].sv.vtt",
      "image": false,
      "albumart": false,
      "default": false,
      "forced": false,
      "dependent": false,
      "visual-impaired": false,
      "hearing-impaired": false,
      "external": true,
      "selected": false,
      "external-filename": "/Users/low-batt/Movies/Predictions on the USA  - With many different Subtitles [6QmwrtdqFJc].sv.vtt",
      "ff-index": 0,
      "codec": "webvtt"
    },
…

注意 mpv 并没有填充 lang 属性,尽管它可以从文件名中导出。

以英语为母语的人使用在线翻译进行回复...

这项提议的功能带来了一个软件工程设计问题。与许多开放源代码项目类似,IINA 也是在许多其他项目的代码之上分层的。软件工程师必须考虑在什么地方进行修改比较合适。通常情况下,在从其他项目获取的代码之上添加新功能是不可取的,因为该功能确实应该在其他项目拥有的代码中实现。如果您确实在其他项目的代码上添加了功能,那么如果将来该项目也实现了该功能,就会出现问题。

在音频/视频播放和字幕渲染支持方面,IINA 使用了 mpv 项目中的一个库。因此,开发人员必须考虑的一个问题是,mpv 播放器是否也能从提议的功能中受益。如果可以,最好由 mpv 项目实现该功能,然后由 IINA 进行必要的修改以利用该功能。

mpv 播放器具有将按键与动作绑定的广泛功能。也许应该向该项目提出这样的功能建议。

要在 IINA 插件中实现某些功能,所需信息可在 mpv 属性 track-list 中找到:

track-list:
注意 mpv 并没有填充 lang 属性,尽管它可以从文件名中导出。

我暂时通过把字幕文件通过软字幕的方式加入视频文件中决解了这个问题。非常感谢iina这个项目,住你们越来越好!

感谢您的更新