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

  • Играйте в плейлист youtube с youtube-dl с перетасовкой или повторением
  • Создание субтитров (.srt) больше или меньше с помощью mpv
  • как выбрать одну звуковую дорожку, если в медиафайле есть несколько звуковых дорожек с использованием mpv?
  • Использование MPV для воспроизведения DVD-фильмов
  • Stream Youtube с mpv, начиная с произвольной точки позже в видео
  • Как убедиться, что заставка не срабатывает при просмотре фильма?
  • Сделать mpv отображаемое имя ссылки youtube при воспроизведении только аудио
  • смотреть случайно упорядоченные видео в одном экземпляре mpv
  • 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: 
    Interesting Posts

    Как ничего не делать вечно элегантным способом?

    Ошибка при компиляции Subversion с пользовательским скомпилированным Apache на общем сервере

    Как создать файл, который содержит двоичный номер?

    В цикле над массивом добавьте элемент в массив

    Изменение даты доступа, изменения и изменения файла к той же прошлой дате

    Как передать результат скручивания в качестве параметра

    Как установить минимальное разрешение экрана и максимальное разрешение xrandr для Exceed-on-Demand (EoD)

    Ошибка создания псевдонима для команды find

    Как распечатать символ ASCII с помощью разных кодовых точек в Bash?

    Почему порядок, в котором выполняются клавиши ярлыков, важны?

    Потерянные папки и файлы в каталоге / home / ubuntu / in Ubuntu

    Предоставление «нормальной» возможности пользователя монтировать диск (visudo)

    Значение fcntl … F_SETLK … (Ресурс временно недоступен) в выводе strace?

    Удалить софт-ссылку, но не целевую

    Эффективный способ сравнения в awk

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