Вопрос или проблема
Это немного многослойный вопрос, так что, пожалуйста, потерпите меня.
Мой NAS заполняется телешоу, поэтому для экономии пространства я пытаюсь удалить все дублированные аудиодорожки из моих мультимедийных видео. В настоящий момент мой процесс выглядит следующим образом:
- Я использую mkvinfo для первого эпизода шоу, чтобы проверить, какие дорожки я хочу сохранить
- Запускаю mkvmerge для всех эпизодов в каталоге, сохраняя только те аудио- и субтитровые дорожки, которые я хочу (например,
for file in *.mkv; do mkvmerge -o output/$file --audio-tracks 2 --subtitle-tracks 3 --default-track 2 --default-track 3 $file; done
) - Вручную проверяю, чтобы все эпизоды правильно содержали аудиодорожки и субтитры, которые я хочу.
Для меня это чрезвычайно утомительный процесс, особенно часть с ручной проверкой, так как в некоторых эпизодах порядок может меняться или добавляется дополнительная дорожка. Шоу, которые мне нужно отфильтровать, насчитывают тысячи, так что этот процесс может занять потенциально дни.
Существует ли способ автоматизировать эти процессы? Одним из основных препятствий, которые я предвижу, является то, что дорожки часто неправильно обозначены. Я подумываю написать программу, чтобы сделать это за меня, но если есть более простое решение, я был бы рад узнать. Спасибо.
Ответ или решение
Автоматическое удаление аудиодорожек из файлов MKV и проверка их удаления
В условиях, когда объем хранения на вашем NAS устройства быстро заканчивается из-за большого количества телешоу, удаление ненужных аудиодорожек может значительно помочь в экономии места. Ваша текущая методика, хотя и рабочая, требует значительного времени и ручного вмешательства. Давайте рассмотрим, как автоматизировать этот процесс, чтобы он стал более эффективным и менее трудоемким.
Шаг 1: Определение ненужных дорожек
Для начала, вам необходимо определить, какие аудиодорожки вы хотите удалить, а какие оставить. Если они не имеют правильных меток, вы можете использовать mkvinfo
для получения информации о дорожках в автоматическом режиме. Рекомендуется написать небольшой скрипт на Bash для перебора всех файлов MKV в выбранной директории и автоматического вывода информации о дорожках.
for file in *.mkv; do
mkvinfo "$file" | grep -E "Track ID|audio|subtitles" >> track_info.txt
done
Этот скрипт создаст файл track_info.txt
, где будет собрана информация о дорожках всех файлов.
Шаг 2: Фильтрация и удаление аудиодорожек
Скрипт, который вы уже используете, можно модифицировать для автоматизации удаления ненужных дорожек. Предположим, что вы хотите сохранить только определенные аудиодорожки (например, с ID 2) и субтитры (например, с ID 3). Вы можете использовать следующий Bash-скрипт:
mkdir -p output
for file in *.mkv; do
mkvmerge -o "output/$file" --audio-tracks 2 --subtitle-tracks 3 --default-track 2 --default-track 3 "$file"
done
Шаг 3: Автоматизированная проверка аудиодорожек
Для автоматизации проверки удаления ненужных дорожек вы можете дополнить свой скрипт вызовом mkvinfo
после обработки каждого файла. Например:
for file in output/*.mkv; do
echo "Проверка файла: $file"
mkvinfo "$file" | grep -E "Track ID|audio|subtitles" >> verification_log.txt
done
Этот процесс создаст файл verification_log.txt
, в котором будет указана информация по всем дорожкам в обработанных файлах. Сравнив его с исходным файлом, вы сможете легко увидеть, были ли ненужные дорожки удалены.
Заключение
Автоматизация процессов удаления и проверки аудиодорожек из файлов MKV с использованием команд mkvinfo
и mkvmerge
существенно снизит ваше время на обработку. Разработанный скрипт позволяет вам быстро и эффективно управлять большими объемами данных. Если вы столкнетесь с особенностями в именовании или номерах дорожек, вы всегда можете дополнительно настроить свои скрипты для обработки специфических случаев.
Используйте указанные шаги и адаптируйте их под свои нужды для оптимального результата. Если у вас появятся новые вопросы или потребуется помощь с конкретными проблемами, всегда можно обратиться за советом.