Автоматическое воспроизведение субтитров с помощью mpv

Эта ситуация могла возникнуть, если таймаут для сценария инициализации был слишком коротким. Например, см. MDEV-9382 , ситуация, когда тайм-аут составлял 30 секунд, но серверу требовалось 48 секунд для запуска.

В системах, где systemd не включен / не поддерживается:

Тайм-аут можно увеличить, установив MYSQLD_STARTUP_TIMEOUT либо непосредственно в сценарии, либо через командную строку. В MariaDB 10.1.13 и более поздних версиях сценарий инициализации также является источником / etc / default / mariadb, поэтому его также можно использовать для установки MYSQLD_STARTUP_TIMEOUT для постоянного изменения запуска тайм-аут. Тайм-аут по умолчанию был увеличен с 30 до 60 в MariaDB 10.1.13.

В системах, поддерживающих systemd:

Тайм-аут запуска можно увеличить, установив параметр Systemd TimeoutStartSec . Если есть какие-то настройки systemd, которые нужно переопределить или установить, создайте файл /etc/systemd/system/mariadb.service.d/XXXX.conf , где XXXX - это что-то значимое для вас и поместите параметры конфигурации в соответствующий раздел, обычно [Service]. Если параметр systemd представляет собой список, вам может потребоваться установить его пустым перед установкой значения замены, например:

[Service]

TimeoutStartSec=
TimeoutStartSec=60

После любого изменения конфигурации systemctl daemon-reload потребуется для принятия изменений.

Источник: https://mariadb.com/kb/en/mariadb/apt-upgrade-fails-but-the-database-is-running/

12
02.05.2016, 00:35
3 ответа

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

точный , может показаться подходящим выбором, но поскольку это значение по умолчанию и он не загружает такие файлы, как [название видео без расширения] .srt , fuzzy - лучший вариант, и он работает в моей системе.

Так что просто echo "sub-auto = fuzzy" >> ~ / .config / mpv / mpv.conf .

18
27.01.2020, 19:55

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

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:
3
27.01.2020, 19:55

если вы хотите создать что-то подобное, (щелкните любой файл, связанный с mpv, и воспроизведите его с субтитрами)

внутри/usr/share/applications/mpv.desktop:

    ...
     Exec=/home/username/custom_apps/mpv2.sh %F
    ...

затем внутри скрипта mpv2.sh:

#!/usr/bin/env bash
subtitles=""
movie="$1"
mdir="${movie%/*}"
name="${movie##*/}"
dir="$(readlink -f "$1")"
mdir="${dir1%/*}"
for file in $mdir/*; do
  if [[ ${file%.*} == ${1%.*} ]]; then
    title="${file%.*}"
    for match in "$title"*; do
      if [[ $match =~ @*.(vtt|ass|srt|sub) ]]; then
        subtitles="$match"
      fi
    done
  fi
done
if [[ -n $subtitles ]]; then
        mpv "$mdir1" --sub-file="$subtitles"
else
    mpv "$name"
fi
0
27.01.2020, 19:55

Теги

Похожие вопросы