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

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

    Как найти количество вертикальных линий, доступных в терминале?

    Как установить раскладку клавиатуры консоли по умолчанию в Arch Linux?

    Как должны быть установлены страницы человека?

    Backtrack 5 R3 – отказывается подключаться к VPN

    Почему uniq игнорирует Unicode и строки с одной буквой?

    Псевдонимы не сохраняются после сценария поиска

    Наушники JBL должны подключаться дважды, чтобы получить хорошее качество звука (элементарные os и мята)

    Понимание сообщения «serial8250: слишком много работы для irq4»

    В чем разница между ~ / .profile, ~ / .bashrc, ~ / .bash_profile, ~ / .gnomerc, / etc / bash_bashrc, / etc / screenrc …?

    запускать команды xmodmap после входа в систему

    Можно ли восстановить восстановленные файлы?

    Могу ли я установить, как долго ssh-agent хранит ключи в памяти?

    tr жалоб на «Неверная последовательность байтов»

    ~ поведение оператора glob с пустым шаблоном

    Невозможно настроить службу netcfg в arch linux

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