Как удалить субтитры из mkv

Автоматизация выгрузки субтитров из *.mkv файлов

Как удалить субтитры из mkv

Пару месяцев назад у меня появился телевизор со SmartTV от Samsung.

Девайс быстро подружился с медиацентром (роль которого исполняет Plex Media Server) с помощью нативного приложения, однако почти сразу же обнаружился весьма неприятный недостаток — отсутствие поддержки вшитых субтитров в *.mkv.

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

Под катом — рассказ о том, как при помощи 30 строчек кода на js пары шелл-скриптов и плагина для Deluge привести *mkv-файлы в удобоваримый для телевизора вид.

Исходные данные

Итак, у нас есть: headless-машина с Ubuntu Server 12.04LTS, Deluge 1.3.5 и Plex Media Server 0.9.7.28 с веб-интерфейсом. Для начала составим мини-ТЗ. Последовательность действий:

  1. обработка данных о свежескачанном торренте и вычленение списка *.

    mkv-файлов;

  2. извлечение субтитров;
  3. обновление медиатеки Plex'a.

Хотелось бы:

  • иметь возможность извлекать субтитры только для определенных языков;
  • иметь возможность вручную скормить скрипту произвольный файл.

Хук для deluge

В базовой установке Deluge присутствует плагин Execute, позволяющий выполнить произвольный скрипт при добавлении торрента и/или завершении его загрузки (документацию и примеры можно посмотреть здесь).

Нас же интересует лишь точный формат передаваемых аргументов, описания которого в манах нет, но пример которого можно легко получить с помощью тестового скрипта:
#!/bin/bashecho -e «$1$2$3» >> /specshare/sample.

txt
Сохраним скрипт в какой-нибудь общедоступной директории (я использовал для этого кастомную директорию /specshare) под именем testhook.sh и дадим нужные права на исполнение с помощью
sudo chmod +x testhook.sh Далее необходимо подключить скрипт.

Для удаленного доступа к Deluge я использую GTK-клиент, в котором последовательность действий такова:

  1. открываем в нем Edit-Preferences-Plugins и ставим галочку напротив Execute, после чего на панели Categories появится соответствующий пункт;
  2. в разделе Execute, в комбо-боксе Event ставим Torrent Complete, в поле Command указываем путь к скрипту:
  3. жмем Add, OK, после чего перезапускаем демона:
    sudo service deluged restart

Последний шаг необходим, иначе скрипт попросту не будет вызываться, при этом корректно отображаясь в настройках. Теперь ставим на закачку небольшой торрент и получаем в файле sample.txt что-то вроде:

1759d534dbe371565632ec0cccbb1579d344c5ca Totally.Legal.Open.Source.Software.iso /store/distribs Первый параметр — универсальный идентификатор торрента, позволяющий запросить по нему у демона дополнительную информацию. Второй — имя торрента; как правило, это либо имя файла, либо имя директории (если файлов в раздаче несколько). Третий — имя родительской папки для торрента.

Теперь, когда мы знаем, как выглядят входные параметры, создадим два файла в той же директории, где лежал testhook.sh: extractor.

sh и deluge-movie-callback.sh.

Первый скрипт будет отвечать за непосредственное извлечение субтитров, и к нему мы вернемся чуть позже, а во второй файл введем следующее:

#!/bin/bash torrentname=$2;torrentpath=$(readlink -f «$3″);fullpath=»$torrentpath/$torrentname»; echo «============================» >> /specshare/log.txt;echo «$(date +»%D %T»): $1 $2 $3″ >> /specshare/log.txt;echo «$(date +»%D %T»): $fullpath» >> /specshare/log.txt; if [[ «$fullpath» != /store/films/* ]];then echo «$(date +»%D %T»): Invalid path» >> /specshare/log.txt; exit 0;fi;echo «$(date +»%D %T»): path ok» >> /specshare/log.txt; mkvlist=$(find «$fullpath» -type f | grep .mkv); while read -r fname; do /specshare/extractor.sh «$fname» «eng,rus,unk»;done /specshare/log.txt;counter=0; tracks=$(mkvmerge -I «$1»);while read -r track; do echo -e «$(date +»%D %T»): $track» >> /specshare/log.txt; if [[ $track =~ $FORMAT_FULL ]]; then id=${BASH_REMATCH[1]}; tType=${BASH_REMATCH[2]}; lang=${BASH_REMATCH[4]}; codec=${BASH_REMATCH[3]}; else if [[ $track =~ $FORMAT_SHORT ]]; then id=${BASH_REMATCH[1]}; tType=${BASH_REMATCH[2]}; codec=${BASH_REMATCH[3]}; lang=»unk»; else id=-1; fi fi; langMatch=false; idMatch=false; typeMatch=false; codecMatch=false; shouldExtract=false; for reqLang in $requiredLangs; do [ «$reqLang» == «$lang» ] && langMatch=true; done [ «$tType» == «subtitles» ] && typeMatch=true; [ «$codec» == «S_TEXT/UTF8″ ] && codecMatch=true; [ $id -ne -1 ] && idMatch=true; $langMatch && $idMatch && $typeMatch && $codecMatch && shouldExtract=true; if $shouldExtract ; then subName=»$baseName.$lang.srt» if [ -f «$subName» -o «$lang» == «unk» ]; then subName=»$baseName.$lang$counter.srt»; (( counter++ )); fi mkvextract tracks «$1″ $id:»$subName»; fidone /dev/null ;
Можно добавить к URL параметры ?deep=1 или ?force=1 для более тщательного сканирования.

У нас готовы оба скрипта, осталось дать им права на запуск и добавить deluge-movie-callback.sh в настройки Execute. Этот процесс уже рассматривался, так что я не буду заострять на нем внимание.

Пара советов.

  • Перед вводом в эксплуатацию тщательно протестируйте скрипты на нескольких небольших раздачах. Эмоции, которые испытываешь, проснувшись утром и обнаружив, что немного опечатался в условии и весь жесткий диск забит извлеченными видео- и аудиодорожками, не передать цензурными словами.
  • Извлечение субтитров — процедура тяжелая и ресурсоемкая, и весьма ощутимо сказывается на производительность всей системы. Хорошо подумайте, прежде чем извлекать из файлов всю начинку.
  • Если в Deluge настроено автоматическое перемещение файлов после окончания загрузки, то вызов скрипта будет осуществляться после перемещения, и в параметрах будет новый путь. Это также верно при использовании плагина Label.
  • Я не стал уделять много внимания вопросу прав на скрипты, ограничившись правами на запуск, но на практике необходимо убедиться, что пользователь, из под которого запущен демон deluged, имеет необходимые права на доступ к соответствующим файлам. Проще всего это проверить, переключившись c помощью sudo su — и попытавшись провести тест из консоли.
  • ubuntu
  • plex media server
  • bash scripting
  • deluge
  • mkv

Источник: https://habr.com/post/202870/

Редактируем видео файлы в MKV ToolNix

MKV ToolNix — программа для редактирования файлов MKV. В наше время, у нас появилась возможность посмотреть новые фильмы, и много других фильмов, выпущенных ранее, которые мы не могли увидеть по разным причинам.

Сейчас, имея высокую скорость интернета, можно смотреть фильмы на компьютере в режиме онлайн.

Но, в этом случае, есть тоже некоторые ограничения: качество фильма не всегда устраивает, не всегда можно найти нужный фильм, необходимо иметь постоянное соединение с интернетом, желательно с большой скоростью соединения, а это проблема, особенно для тех, кто подключен через мобильных операторов (здесь и высокая цена всего этого).

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

Если фильмы хранятся на жестком диске компьютера, то на нем постепенно становиться все меньше, и меньше свободного места. Для решения этой проблемы, можно использовать внешний жесткий диск большого размера.

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

Для удаления лишнего содержимого видео файла, используют специальные программы. Об использовании одной из них, MKV ToolNix, прочитайте эту небольшую инструкцию.

Бесплатная программа MKV ToolNix предназначена для работы с файлами формата «MKV» (Matroska). С помощью этой программы можно редактировать и модифицировать файлы, помещенные в контейнер «MKV».

С помощью MKV ToolNix вы можете: добавлять, удалять, изменять содержимое (аудио, видео, субтитры) файла этого формата, а также формата «AVI». Сейчас встречается довольно много фильмов помещенных в этот контейнер, потому что он имеет некоторые преимущества перед традиционным форматом «AVI».

Выпущенные недавно плееры, в том числе встроенные в телевизор, обычно, уже имеют поддержку этого формата «.mkv». Описанные ниже операции также можно производить с файлами, помещенными в контейнер «AVI». В этом случае содержимое файла остается в исходных форматах, а весь файл помещается в контейнер «MKV».

При просмотре такого фильма на компьютере не возникнет никаких проблем, при условии установки соответствующих кодеков.

Если на телевизоре не получается посмотреть фильм в этом формате, то фильм придется перекодировать в другой формат специальной программой — конвертером.

Таких программ имеется огромное количество, в том числе, и бесплатных.

Бесплатная программа MKV ToolNix имеет русский интерфейс.

mkvtoolnix скачать

На странице загрузки, вам необходимо выбрать свою операционную систему (Windows находится внизу страницы), а также вариант скачивания (архив или исполняемый файл) программы. Переносная (portable) версия программы MKV ToolNix находится в архиве.

После загрузки MKV ToolNix, устанавливаете программу обычным способом. Установка программы происходит на русском языке. При использовании программы не происходит конвертация видео файлов, и видео файлы не ухудшают своего качества.

Теперь перейдем к ответу на вопрос — как пользоваться MKV ToolNix. Вот небольшая инструкция по работе с MKV ToolNix.

Как удалить лишние аудио дорожки и субтитры из видео файла

На этом примере, я буду использовать фильм «Ганди», 1982 года выпуска, в формате .mkv, имеющий размер 2,88 ГБ.

После открытия главного окна программы, вы можете добавить видео файл в программу, просто перетащив его мышью в поле «Входные файлы», или нажав для этого на кнопку «Добавить». В окне Проводника нужно будет выбрать видео файл, и нажать на кнопку «Открыть».

После того, как вы добавили фильм, в поле «Дорожки, главы и теги», вы увидите, что фильм состоит видео файла, трех аудио дорожек и одиннадцати дорожек с субтитрами (фильм специально не выбирал, он такой попался!).

Для того, чтобы удалить ненужные аудио дорожки и субтитры, необходимо снять флажки в соответствующих пунктах. Предварительно запустите видео файл и посмотрите, под каким номером находится у вас аудио дорожка на русском языке. Обычно, она первая, но, может быть и под другим номером.

В поле «Имя выходного файла» показан путь для сохранения обработанного файла. Если нажать на кнопку «Обзор», то в окне Проводника можно выбрать другой путь сохранения, и другое имя для нового файла. После этого нажимаете на кнопку «Начать обработку».

Происходит обработка, этот процесс происходит довольно быстро (обработка этого фильма заняла 133 секунды).

После завершения обработки видео файла, нажимаете на кнопку «ОК».

Теперь вы можете посмотреть на размер нового файла. Разница между 2,88 ГБ и 2.32 ГБ довольно внушительная. После того как вы проверили обработанный видео файл, старый файл можно удалить, сэкономив на жестком диске, в нашем случае 0,56 ГБ, свободного пространства.

Таким способом можно отключить аудио дорожку, которая установлена в фильме по умолчанию (если она не на русском языке), потому что при просмотре на телевизоре поменять аудио дорожки местами не получится.

Как добавить аудио файлы и субтитры в MKV

Иногда, встречаются фильмы с отдельным аудио файлом или субтитрами. Хранить такие фильмы в отдельной папке, не совсем удобно. На этом примере старый (1934 года выпуска) фильм «1860», на итальянском  языке (формат «.avi»), с русскими субтитрами (с отдельной аудио дорожкой производятся аналогичные действия).

Для того, чтобы соединить эти файлы в один видео файл, необходимо добавить поочередно файлы в поле «Входные файлы». После этого нажимаете на кнопку «Начать обработку».

После завершения обработки, вы получите фильм, состоящий из одного файла, со встроенными субтитрами.

Как соединить видео файлы с помощью MKV ToolNix

Некоторые фильмы разделены на несколько частей, что не совсем удобно, если эти части не отдельные серии фильма.

Для соединения видео файлов, добавляете фильмы в программу, соблюдая очередность эпизодов, включаем обработку.

Обработку можно запускать из меню «Обработка» => «Начать обработку (запустить mkvmerge)», или при одновременном нажатии сочетания клавиш на клавиатуре «Ctrl» + «R».

На выходе вы получаете фильм в виде одного видео файла.

Как разделить видео файлы с помощью MKV ToolNix

С помощью MKV ToolNix также можно разбивать видео файлы на несколько частей. Для того, чтобы разделить видео файл на несколько частей, заходите во вкладку «Глобальные».

Там ставите флажок напротив пункта «Включить разбиение…». При наведение курсора мыши к соответствующему пункту появляются подсказки с объяснением соответствующих действий.

Выбираете размер файла, устанавливая после цифры соответствующий символ (буквы «K», «M», «G» — соответствуют килобайтам, мегабайтам и гигабайтам). Можете ввести название файла/сегмента, но это делать необязательно. После этих действий нажимаете на кнопку «Начать обработку».

После обработки получаете видео файл, разделенный на несколько частей.

Я постарался рассказать об основных и самых распространенных действиях производимых с помощью этой небольшой и полезной программы. Теперь вы знаете, как пользоваться MKV ToolNix.

Решение проблемы воспроизведения видео файлов на аппаратных плеерах

В программе MKV ToolNix начиная с версии 4 и выше, производитель программы в настройках по умолчанию включил сжатие заголовков, которое многие аппаратные плееры не поддерживают.  Получившийся после обработки видео файл не проигрывается на таком плеере, а на компьютере воспроизводиться без проблем.

Одним из выходов из этой ситуации будет использование программы MKV ToolNix версии 3 и ниже, где не предусмотрено сжатие заголовков в настройках программы по умолчанию.

Другим способом решить эту проблему можно следующим образом.

После снятия флажков с ненужными аудио дорожками, необходимо выделить оставшийся аудио файл и нажать на кнопку «Дополнительные параметры».

В пункте «Сжатие» нужно нажать на треугольник и в выпадающем меню нажать на пункт «нет». После этого можно нажать на кнопку «Начать обработку» для удаления ненужных аудио дорожек из видео файла.

Получившийся в итоге видео файл теперь будет воспроизводиться при помощи аппаратного плеера.

Удаляем аудиодорожки из видеофайла в MKV ToolNix (видео)

https://www..com/watch?v=_VvTqKa7vUw

Источник: https://vellisa.ru/redaktiruem-video-faylyi-v-mkv-toolnix

Понравилась статья? Поделить с друзьями:
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: