MKVMerge добавляет .srt субтитры批量

Вопрос или проблема

Я ищу какую-то команду / скрипт, чтобы
сканировать мою назначенную папку, объединять файлы srt (с тем же именем, что и видео) с файлами avi/mp4/mkv, чтобы получить файлы mkv, а затем удалить оригинальные файлы (видео И субтитры).

Сейчас у меня есть этот код (не мой, от каких-то авторов, я его объединил):

@echo off
for /R %%A IN (*.mkv *.avi *.mp4) do (
"C:\Program Files\MKVToolNix\mkvmerge.exe" -o "%%~nxA_CZ.mkv" "%%~A" "%%~nA.srt"
  if errorlevel 1 (
                echo Предупреждения/ошибки, возникшие во время ремикширования, оригинальный файл не удалён
            ) else (
                del /f "%%A" "%%~nA.srt"
                echo Успешно ремикшировано в "%%~dpna (Нет субтитров)%%~xa", оригинальный файл удалён
            )
            echo.
        )
    )
)

Это частично работает, но у меня есть несколько проблем.
Параметр /R не работает, не знаю почему, но когда я помещаю его в папку с подпапками, он сканирует только файлы srt в ней и выдает ошибку “Не удается открыть”. (Эта ошибка также возникает для файлов в одной папке, но в конечном итоге он делает то, что мне нужно.)

Есть ли идеи, как исправить мою проблему?

Вот как нужно добавлять субтитры:

mkvmerge.exe -o "output.mkv" --audio-tracks 1 --no-subtitles --no-attachments 
--no-chapters --language 0:und --default-track 0:yes --compression 0:none     
--language 1:und --default-track 1:yes --compression 1:none "input.mkv"       
--language 0:und --compression 0:none "input.srt" --track-order 0:0,0:1,1:0   
--probe-range-percentage 0.50

Ответ или решение

Для решения вашей задачи по объединению видеофайлов формата AVI, MP4 и MKV с субтитрами в формате SRT с помощью MKVMerge, предлагаю модифицировать ваш скрипт, чтобы устранить существующие проблемы и улучшить функциональность.

Проблема с параметром /R и ошибками при объединении

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

Модифицированный скрипт

@echo off
setlocal enabledelayedexpansion

REM Путь к mkvmerge
set mkvmerge_path="C:\Program Files\MKVToolNix\mkvmerge.exe"

REM Сканируем все видеофайлы в целевой папке
for /R %%A IN (*.mkv *.avi *.mp4) do (
    set "input_video=%%A"
    set "input_subtitle=%%~dpnA.srt"

    REM Проверяем наличие соответствующего файла субтитров
    if exist "!input_subtitle!" (
        REM Формируем имя выходного файла
        set "output_file=%%~dpnA_CZ.mkv"

        REM Выполняем объединение с другими параметрами
        !mkvmerge_path! -o "!output_file!" --audio-tracks 1 --no-subtitles --no-attachments --no-chapters --language 0:und --default-track 0:yes --compression 0:none "!input_video!" --language 1:und --compression 1:none "!input_subtitle!" --track-order 0:0,0:1,1:0 --probe-range-percentage 0.50

        REM Проверка на ошибки
        if errorlevel 1 (
            echo В процессе объединения возникли предупреждения/ошибки, оригинальные файлы не удалены
        ) else (
            del /f "!input_video!" "!input_subtitle!"
            echo Успешно объединено в "!output_file!", оригинальные файлы удалены
        )
        echo.
    ) else (
        echo Файл субтитров для "%%~nA" не найден, пропуск файла.
    )
)

endlocal

Описание изменений:

  1. Улучшенная проверка субтитров: Перед выполнением команды объединения скрипт проверяет наличие файла субтитров с помощью команды if exist.

  2. Использование переменных: Мы используем переменные для хранения путей к файлам, что делает код более читаемым и упрощает отладку.

  3. Обработка ошибок: Добавлена более четкая информативная печать для случаев, когда файлы субтитров не найдены или возникли ошибки во время объединения.

  4. Поддержка подкаталогов: Использование for /R для рекурсивного сканирования всех подкаталогов на вашем пути.

Оптимизация для SEO:

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

Заключение

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

Оцените материал
Добавить комментарий

Капча загружается...