Shell

mpv 自動播放字幕

  • August 16, 2018

字幕文件有多種格式,從 .srt 到 .sub 到 .ass 等等。有沒有辦法告訴 mpv 搜尋字幕文件以及媒體文件,如果它確實開始自動播放文件。目前我必須做這樣的事情,這可能會很長,具體取決於文件​​名 -

[$] mpv --list-options | grep sub-file                                                                                              
(null) requires an argument
--sub-file                       String list (default: ) [file]

期待答案。

更新 1 - 具有 .srt(或下標)的典型電影

[$] mpv Winter.Sleep.\(Kis.Uykusu\).2014.720p.BrRip.2CH.x265.HEVC.Megablast.mkv                                                    
(null) requires an argument
Playing: Winter.Sleep.(Kis.Uykusu).2014.720p.BrRip.2CH.x265.HEVC.Megablast.mkv
(+) Video --vid=1 (*) (hevc)
(+) Audio --aid=1 (aac)
(+) Subs  --sid=1 'Winter.Sleep.(Kis.Uykusu).2014.720p.BrRip.2CH.x265.HEVC.Megablast.srt' (subrip) (external)
[vo/opengl] Could not create EGL context!
[sub] Using subtitle charset: UTF-8-BROKEN
AO: [alsa] 48000Hz stereo 2ch float
VO: [opengl] 1280x536 yuv420p
AV: 00:02:14 / 03:16:45 (1%) A-V:  0.000

最有趣的一行是:-

(+) Subs  --sid=1 'Winter.Sleep.(Kis.Uykusu).2014.720p.BrRip.2CH.x265.HEVC.Megablast.srt' (subrip) (external)

現在,如果文件是具有相同文件名的 .ass 或 .sub ,它將無法工作。我已經在許多具有這些副檔名的媒體文件中嘗試過它,並且每次 mpv 載入影片和音頻以及協議而不是外部字幕文件時。

更新 2 - .ass 腳本部分在 mpv 的 bts 中被列為錯誤 - https://github.com/mpv-player/mpv/issues/2846

更新 3 - 一直在嘗試在上游的幫助下進行調試,為此送出了https://github.com/mpv-player/mpv/issues/3091

似乎不是 mpv 負責,而是 ffmpeg(和 libavformat)應該對字幕進行解碼。因此也添加了ffmpeg。

如中所示man mpv

  --sub-auto=<no|exact|fuzzy|all>, --no-sub-auto
         Load additional subtitle files matching the video filename. The
         parameter specifies how external subtitle files are matched.
         exact is enabled by default.

         no     Don't automatically load external subtitle files.

         exact  Load the media filename with subtitle file extension
                (default).

         fuzzy  Load all subs containing media filename.

         all    Load all subs in the current and --sub-paths directories.

exact似乎是合適的選擇,但由於它是預設設置並且它不載入文件[video name minus extension].srtfuzzy因此是下一個最佳選擇,它適用於我的系統。

所以只是echo "sub-auto=fuzzy" >> ~/.config/mpv/mpv.conf

引用自:https://unix.stackexchange.com/questions/279884