qwertyop
Silver Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Код: @echo off if exist "%~n1_converted.mkv" goto exit mkvmerge -i %1 > mkvcvtmp.txt find /c "WMV3)" mkvcvtmp.txt if not errorlevel 1 goto end find /c "video (V_MS/VFW" mkvcvtmp.txt if not errorlevel 1 goto end find /c "Track ID 1: audio" mkvcvtmp.txt if not errorlevel 1 goto end find /c "Track ID 4: audio" mkvcvtmp.txt if not errorlevel 1 goto 4tr find /c "Track ID 3: audio" mkvcvtmp.txt if not errorlevel 1 goto 3tr find /c "Track ID 2: audio" mkvcvtmp.txt if not errorlevel 1 goto 2tr goto end :4tr mkvextract tracks "%1" 1:mkvcvtmp.h264 2:mkvcvtmp.tr2 3:mkvcvtmp.tr3 4:mkvcvtmp.tr4 avc2avi.exe -i mkvcvtmp.h264 -o mkvcvtmp.avi -f 23.976 if exist mkvcvtmp.tr4 mkvmerge.exe --engage allow_avc_in_vfw_mode -o "%~n1_converted.mkv" mkvcvtmp.avi mkvcvtmp.tr2 mkvcvtmp.tr3 mkvcvtmp.tr4 goto end :3tr mkvextract tracks "%1" 1:mkvcvtmp.h264 2:mkvcvtmp.tr2 3:mkvcvtmp.tr3 avc2avi.exe -i mkvcvtmp.h264 -o mkvcvtmp.avi -f 23.976 if exist mkvcvtmp.tr3 mkvmerge.exe --engage allow_avc_in_vfw_mode -o "%~n1_converted.mkv" mkvcvtmp.avi mkvcvtmp.tr2 mkvcvtmp.tr3 goto end :2tr mkvextract tracks "%1" 1:mkvcvtmp.h264 2:mkvcvtmp.tr2 avc2avi.exe -i mkvcvtmp.h264 -o mkvcvtmp.avi -f 23.976 if exist mkvcvtmp.tr2 mkvmerge.exe --engage allow_avc_in_vfw_mode -o "%~n1_converted.mkv" mkvcvtmp.avi mkvcvtmp.tr2 :End del mkvcvtmp.* :Exit | При копировании через буфер обмена, не забываем удалять получающиеся пробелы в конце строк! Ограничения для cmd-шки: 1. будет пересобрано до 4х дорожек (а мне больше и ненадо ), 2. видео во входном MKV должно идти первым потоком (другие не попадались). На самом деле, сделать коммандник по всем правилам c операторами FOR и т.д., для проверки всего возможного разнообразия MKV для меня сложновато. Да и в 99% случаев достаточно такого, какой есть. В строчках поиска последнего аудиопотока find /c "Track ID 4: audio" mkvcvtmp.txt можно убрать ": audio" если хотите, что б в конечном файле были не только видео+аудио, но и сабы, или ещё чего. Проверка на наличие WMV потока введена, т.к. такое видео VirtualDubMod, всё-равно, не откроет. | Всего записей: 3683 | Зарегистр. 17-10-2008 | Отправлено: 22:32 23-09-2009 | Исправлено: qwertyop, 11:45 28-11-2009 |
|