Shell
mpv 自動播放字幕
字幕文件有多種格式,從 .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].srt
,fuzzy
因此是下一個最佳選擇,它適用於我的系統。所以只是
echo "sub-auto=fuzzy" >> ~/.config/mpv/mpv.conf
。