Воспроизведение субтитров автоматически с помощью 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%) AV: 0.000 

Самая интересная строка:

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

Теперь, если файл был как .ass или .sub с тем же именем файла, это не сработает. Я пробовал это во многих медиафайлах, которые имеют эти расширения, и каждый раз mpv загружает видео и аудио, а также протоколы, но не внешние файлы субтитров.

Обновление 2 – часть скрипта .ass указана как ошибка в bts mpv – https://github.com/mpv-player/mpv/issues/2846

Обновление 3 – Пробовали отлаживать с помощью upstream, подавали https://github.com/mpv-player/mpv/issues/3091 для этого.

Кажется, что это не mpv, а ответственный, но ffmpeg (и libavformat), который должен декодировать субтитры. Следовательно, добавили к нему ffmpeg.

2 Solutions collect form web for “Воспроизведение субтитров автоматически с помощью mpv”

Как видно в 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 .

Я использую простую функцию:

 mpvs() { local file="$1" mpv --sub-file="${file%.*}".srt "$file" } 

Если вы хотите протестировать наличие файлов субтитров с разными расширениями, вы можете использовать более сложный подход:

 #!/usr/bin/env bash # Play subtitles for a film if they exist movie="$1" mdir="${movie%/*}" name="${movie##*/}" cd "$mdir" for file in *; do if [[ ${file%.*} == ${name%.*} ]]; then title="${file%.*}" for match in "$title"*; do if [[ $match =~ @*.(ass|srt|sub) ]]; then subtitles="$match" fi done fi done if [[ -n $subtitles ]]; then mpv --subfile="$subtitles" "$name" else printf "%s\n" "No subs found, playing film anyway..." mpv "$name" fi # vim:set sw=2 ts=2 et: 
  • Использование MPV для воспроизведения DVD-фильмов
  • Возможно ли воспроизвести папку VIDEO_TS DVD с помощью общей команды (mpv)?
  • Interesting Posts

    Диски (в корпусе USB) продолжают просыпаться, даже если они не установлены

    Lsyncd не работает на Mac 10.9

    Как настроить две письма для двух разных пользователей в Ubuntu

    Как сохранить регулярное выражение в переменной оболочки, избегая проблем с цитированием символов, которые являются особыми для оболочки?

    Как я могу убить программу, запущенную из rc.local, когда Ctrl-C не работает?

    Переименуйте файл в другой каталог, не повторяя путь

    Значок рабочего стола без изображения в Gnome (Debian Jessie)

    Файл не отображается с помощью vi, но отображается с помощью команды ls -l CD *

    find: отсутствующий аргумент для «-ok»

    Восстановить выполнение по умолчанию

    Восстановить / bin / hostname на AWS AMI

    Как автоматически импортировать зашифрованный ZFS-пул без загрузки root при загрузке?

    Возможны ли жесткие ссылки для каталогов в файловых системах ext2 / 3/4?

    VirtualBox дает мне только 32-битный вариант для системной установки, но у меня 64-битный процессор

    `find -path` объяснил

    Linux и Unix - лучшая ОС в мире.