| 
						
						
						
						
						
	|   |  
	| nujievik 
 Стаж: 1 год 7 месяцев Сообщений: 146 | 
			
								
					nujievik · 
					 05-Сен-24 11:58
				
												(1 год 1 месяц назад, ред. 27-Сен-25 14:18) 
												
													
Быстрый старт 
Windows 
Скачайте полный архив для вашей системы (mux-media-win64-full.zip).
Распакуйте архив.
Запустите распакованный mux-media.exe в директории (папке) с аниме. 
Остальные системы 
Установите MKVToolNix
Скачайте архив для вашей системы.
Распакуйте архив.
Запустите распакованный mux-media в директории (папке) с аниме. 
Результат сохраняется в поддиректорию muxed . 
Возможности 
Работа в Windows, MacOS, GNU/Linux.
Продвинутая автоматизация:
Поиск внешних дорожек:
по совпадению префикса имени (eg., Death Note - 01.mkv и Death Note - 01.eng.aac)
во всех поддиректориях до заданной глубины (по умолчанию: 16)Добавление шрифтов
Выставление языка из системной локали
Настройка кодировки субтитров
Определение имен дорожек из имени файла на диске
Определение языков дорожек из имени файла на диске
Сортировка дорожек, учитывающая тип, флаги и язык
Настройка флагов дорожек по требованиям раздела Аниме
Перекодирование неподдерживаемых дорожек для пользовательских контейнеров
Удаление линковки с пересинхронизацией дорожекПоддержка разных типов выходных контейнеров.
 
Продвинутое использование Запустите mux-media -h  для отображения справки (help). 
 Настройки по умолчанию можно поменять:
 
Через аргументы CLI (командной строки)
Настроив JSON файл в директории медиа и запустив с флагом mux-media -j 
Windows 
Полная версия содержит вложенные ffmpeg и mkvmerge и распаковывает их во время выполнения
Можно использовать системные ffmpeg и mkvmerge через запуск mux-media --user-tools
Неполная версия по умолчанию использует системные версии и требует ручной установки MKVToolNix и FFmpeg (для пользовательских контейнеров) 
Пользовательские выходные контейнеры 
Контейнер по умолчанию - Matroska (.mkv)
Другие поддерживаемые контейнеры: .avi, .mp4, .webm.
Установите FFmpeg для использования других контейнеров.
Пользовательские контейнеры могут перекодировать дорожки, значительно ухудшая качество - используйте только при необходимости. 
Перекодирование 
По умолчанию перекодирование не выполняется.
При использовании пользовательского контейнера неподдерживаемые им дорожки будут перекодироваться
Для форсированного перекодирования всех дорожек с пользовательским контейнером используйте mux-media --reencode
Перекодирование в .mp4:
Код: mux-media -o ,.mp4 --reencodeПерекодирование в .avi (оставляет только 1 видео и 1 аудиодорожку, без субтитров).
Код: mux-media -o ,.avi --reencode 
Автоматическое выставление флагов, имен, языков и кодировок отключается через mux-media -p |  
	|  |  
	| Lexo666 
 
 Стаж: 15 лет 2 месяца Сообщений: 1143 | 
			
								
					Lexo666 · 
					 05-Сен-24 12:07
				
												(спустя 9 мин.) 
						
													Зачем, когда плеер и так подхватывает внешнюю дорожку?											 |  
	|  |  
	| nujievik 
 Стаж: 1 год 7 месяцев Сообщений: 146 | 
			
								
					nujievik · 
					 05-Сен-24 12:25
				
												(спустя 18 мин.) 
						
													Lexo666Не все смотрят с компа
 |  
	|  |  
	| Lexo666 
 
 Стаж: 15 лет 2 месяца Сообщений: 1143 | 
			
								
					Lexo666 · 
					 05-Сен-24 12:26
				
												(спустя 59 сек.) 
						
													с разрешения димонаПроблемы любителей TV...
 |  
	|  |  
	| Haru 
 Стаж: 13 лет 2 месяца Сообщений: 4168 | 
			
								
					Haru · 
					 05-Сен-24 14:29
				
												(спустя 2 часа 3 мин.) 
						
													
Отказанос разрешения димона писал(а): 86667714Предлагаю ложить этот скрипт в директории с внешним аудио, чтобы облегчить жизнь трудящимся, которые затрудняются это сделать самостоятельно.Всего лишь 20-25 дополнительных Кбайт к каждой папке с внешним аудио за уменьшение количества хейта и нытья!
 . Это лишний файл, ещё и потенциально опасный скрипт, который производит установку файлов из сети.
 
с разрешения димона писал(а): 86667714Написал скрипт 
Можете коротко объяснить отличия от этого  и того ? Я-то понимаю, но интересно ваше объяснение.											 |  
	|  |  
	| nujievik 
 Стаж: 1 год 7 месяцев Сообщений: 146 | 
			
								
					nujievik · 
					 05-Сен-24 20:46
				
												(спустя 6 часов, ред. 05-Янв-25 18:19) 
						
													
скрытый текст 
Haru писал(а): 86668136потенциально опасный скрипт, который производит установку файлов из сети. 
Данную функцию можно вырезать. В Linux скрипте скачивания нет. 
Сейчас установка требует явного согласия пользователя вводом "yes" или "y" с клавиатуры, без согласия ничего не скачивается. Считаю такой подход этичным. Но вы правы в том, что я не могу отвечать за безопасность скачиваемого исполняемого файла с github, оно на совести разработчика.
 
Haru писал(а): 86668136Можете коротко объяснить отличия от этого и того 
В указанных скриптах:
 
Требуется помещение видео в одну папку с аудио (мой находит видео и в директориях выше)
В случае нахождения аудио в другой директории требуется ввод пути к директории аудио (у меня другой подход, предполагается что скрипт лежит в папке с аудио, а не с видео, но путь к видео в другой директории вводить не требуется)
Требуется ввод расширения аудиофайлов (в моем не требуется)
Не требующий ввода расширения аудио скрипт обрабатывает только аудио в .mka
Меньше список поддерживаемых расширений
Нельзя задать ограничение на количество обрабатываемых файлов
Поддерживается работа с субтитрами (в моем в настоящий момент нет)
Нет Linux версии 
В целом же можно сказать, что мой скрипт можно просто ложить в папку аудио для раздач с текущей структурой (где видео находится в каталогах выше аудио). И он будет работать. Никаких дополнительных путей, расширений вводить не надо будет. 
Единственное, что нужно - это ffmpeg по пути %USERPROFILE%\Downloads\ffmpeg-master-latest-win64-gpl\bin\ffmpeg.exe. И то в настоящий момент поддерживается его скачивание. Так что все должно работать просто при запуске батника, без скачивания и распаковки ffmpeg вручную. |  
	|  |  
	| Haru 
 Стаж: 13 лет 2 месяца Сообщений: 4168 | 
			
								
					Haru · 
					 05-Сен-24 21:42
				
												(спустя 55 мин.) 
						
													
с разрешения димона писал(а): 86669513Данную функцию можно вырезать. 
Основная проблема в том, что скрипт — это автоматизация какого-то процесса, который может нанести вред. Я верю вам, что в вашем скрипте ничего плохого нет, но я не верю релизеру, который может заменить ваш скрипт на что угодно. В качестве отдельной темы, F.A.Q — это можно устроить, да. Выглядит полезно. Но не в составе раздачи. 
С таким же успехом, в состав раздачи необходимо включать плеер, проводник и прочее. Не забывайте, что здесь раздаётся аниме, а не программы для их просмотра.
 
с разрешения димона писал(а): 86669513Поддерживается работа с субтитрами 
Ну вот и первое предложение. Многие стараются делать субтитры-надписи, а скрипт их игнорирует.
 
с разрешения димона писал(а): 86669513ffmpeg по пути 
Тоже мелкая проблема. Обычно ffmpeg проще в path один раз прописать, так и будет у тех, кто им часто пользуется. 
Но мы тут всё-таки о новичках рассуждаем, да.
 
с разрешения димона писал(а): 86669513Меньше список поддерживаемых расширений 
Mkvtoolnix вроде бы не так уж мало поддерживает форматов. 
 Промежуточные итоги: 
Скрипт выглядит полезным, но надо доработать. 
Основная проблема в том, что сколько бы скриптов не писали, как бы жизнь смотрящим не упрощали, то итог будет всегда негативный: «Зачем мне что-то качать? Почему не могу посмотреть? Я качаю с очков и тут нет скриптов!». Мысль, думаю, вы понимаете. 
 Скрипт проверим, если всё ок, то подумаем над включением его в какой-то единый пост со всеми полезностями.											 |  
	|  |  
	| Haru 
 Стаж: 13 лет 2 месяца Сообщений: 4168 | 
			
								
					Haru · 
					 10-Сен-24 10:51
				
												(спустя 4 дня) 
						
													с разрешения димона, попробовал ваш скрипт. Нюансы были ясны уже из вашего текста, теперь просто наглядно подтвердил их.
 
На моих внешних файлах он не может найти видео и сопоставить их с аудио. Как вы и написали: «имена аудио- и видеофайлов совпадают за исключением расширения». Т. е. пользователь должен всё равно руками переименовывать/копировать дорожки. Легче не стало.Всё из-за того, что аудио у меня подписаны таким шаблоном:
 
А видео, очевидно, не имеет уточнения:Код: Ramen Aka Neko - 01 [WEB-DL CR 1080p AVC AAC].AniLibria.mka 
Получаю закономерный ответ от скрипта:Код: Ramen Aka Neko - 01 [WEB-DL CR 1080p AVC AAC].mkv 
 
Как уже писал выше, ваш скрипт заменяет аудио и не учитывает субтитры (и шрифты), тем самым он бесполезен для тех, кто смотрит JAP+Sub на приставках/тв и прочих устройствах без поддержки внешних файлов. 
На данный момент, то спорный скрипт. На примере Онгоинги (HD Video)  мы видим такую статистику: 
Всего 60 релизов и 15 авторов, из них: 6 авторов сделали раздачи с внешними файлами
 . 32 релиза содержат внешние файлы
 :
 
24 релиза сделаны с внешним аудио.
8 релизов имеют только внешние русские субтитры 
Что примерно 50%. С учётом вышенаписанного, то ваш скрипт даже эти 50% не может обработать так просто, как вам того хотелось бы. 
В масштабах всего раздела, то мы можем говорить примерно о такой же статистике (очень условно, конечно), исключая линковку . Ваш скрипт успешно её игнорирует и собирает бесполезный файл с большим рассинхроном.											 |  
	|  |  
	| nujievik 
 Стаж: 1 год 7 месяцев Сообщений: 146 | 
			
								
					nujievik · 
					 13-Сен-24 23:50
				
												(спустя 3 дня, ред. 05-Янв-25 18:18) 
						
													
скрытый текст v0.2
Концепция та же. Закидываете в папку к аудио или к сабам, с которыми хотите сгенерировать видео. Запускаете.
 
Для случаев без шрифтов скрипт умеет сам устанавливать ffmpeg.
Для шрифтов требуется ручная установка mkvmerge (mkvtoolnix). Установите в любую директорию и пропишите в системный PATH. Или положите по пути:
Код: %USERPROFILE%\Downloads\mkvtoolnix\mkvmerge.exe 
Добавлено 
Поиск по частичному совпадению имени.Теперь скрипт сопоставляет файлы типа X.ext1 и XY.ext2. Необходимо, чтобы имя одного из двух файлов включало в себя имя другого без расширения. Т.е. приведенный выше пример обработается корректно:
 
Код: Ramen Aka Neko - 01 [WEB-DL CR 1080p AVC AAC].AniLibria.mkaRamen Aka Neko - 01 [WEB-DL CR 1080p AVC AAC].mkv
 
Поддержка субтитров.
У пользователя запрашивается, нужно ли искать субтитры. По умолчанию ищутся.
Если скрипт запущен в директории аудио, субтитры будут заменены вместе с аудио.
Если скрипт запущен в директории аудио приоритетно ищутся надписи.
Если скрипт запущен в директории субтитров, будут заменены только субтитры. Аудио заменяться не будет.
Если скрипт запущен в директории субтитров обрабатываться будут только субтитры в директории скрипта.
Субтитры ищутся в директории скрипта, в поддиректориях по запросам для поиска, в директории видео, в поддиректориях по запросам для поиска.Поддержка шрифтов.
Вместе с субтитрами в контейнер добавляются шрифты, если они есть.
Шрифты ищутся в директории скрипта, в поддиректориях по запросам для поиска, в директории субтитров, в поддиректориях по запросам, в поддиректориях родительской директории субтитров.
Для добавления шрифтов необходим mkvmerge в PATH или по пути %USERPROFILE%\Downloads\mkvtoolnix\mkvmerge.exeПоддержка добавленных в PATH программ
Теперь не требуется скачивание ffmpeg и ffprobe в Downloads, если они прописаны в PATH.Функции поиска директорий
Вспомогательные функции для работы скрипта.
Ищут директории субтитров и шрифтов по частичному совпадению имени к запросу.
Пользователь с ними не взаимодействует. Шаблоны поиска прописаны в файле скрипта. 
Что планируется добавить 
Скачивание mkvmerge аналогично ffmpeg.
Шаблоны поиска из нескольких слов.
Сейчас в строке поиска прописано несколько запросов из одного слова. Из-за этого возможны ошибки.
Если в шаблоне поиска Sub а в релизе несколько директорий с Sub, например, ENG Subs и RUS Subs, то скрипт перейдет в первую найденную директорию - в ансаб. И будет добавлять ансабы в данном случае.
На текущий момент для таких релизов закидывайте сабы в директорию к аудио. Или запускайте скрипт из директории сабов (аудио не будет заменяться). 
С линкованным видео не работает! Поддержку линкованного видео пока не представляю как реализовать. |  
	|  |  
	| Adventurer_Kun 
 
 Стаж: 13 лет 4 месяца Сообщений: 5306 | 
			
								
					Adventurer_Kun · 
					 14-Сен-24 07:51
				
												(спустя 8 часов) 
						
													
Цитата: %USERPROFILE%\Downloads\mkvtoolnix\mkvmerge.exe 
Добавить дополнительные директории как ниже можно дополнительно? 
Ну это самые ходовые если у человека стоит MkvToolNix
 
Код: "%PROGRAMFILES%\MkvToolNix\mkvmerge.exe"
 "%PROGRAMFILES(x86)%\MkvToolNix\mkvmerge.exe"
 
 |  
	|  |  
	| nujievik 
 Стаж: 1 год 7 месяцев Сообщений: 146 | 
			
								
					nujievik · 
					 14-Сен-24 12:40
				
												(спустя 4 часа, ред. 05-Янв-25 18:18) 
						
													
скрытый текст Adventurer_Kun
Добавил. v0.2.1
 
Обновил прикрепленный файл в стартовом посте. 
Теперь скрипт умеет работать с mkvmerge.exe в стандартных директориях:
 
Код: "%PROGRAMFILES%\MkvToolNix\mkvmerge.exe"
 "%PROGRAMFILES(x86)%\MkvToolNix\mkvmerge.exe"
 
 |  
	|  |  
	| Haru 
 Стаж: 13 лет 2 месяца Сообщений: 4168 | 
			
								
					Haru · 
					 14-Сен-24 15:12
				
												(спустя 2 часа 31 мин.) 
						
													с разрешения димона, попробовал обновлённый скрипт. Сейчас уже похоже на то, что можно «мозг» отключить и одной кнопкой всё сделать.
 
с разрешения димона писал(а): 86701327С линкованным видео не работает! Поддержку линкованного видео пока не представляю как реализовать. 
Это я, конечно, в общем плане писал. Сейчас линковка в разделе запрещена, но будет интересно, если вы сможете это реализовать, если честно. Раздач с линковкой много. 
Протестирую ещё ваш скрипт. Благодарю за доработку.											 |  
	|  |  
	| Adventurer_Kun 
 
 Стаж: 13 лет 4 месяца Сообщений: 5306 | 
			
								
					Adventurer_Kun · 
					 16-Сен-24 09:10
				
												(спустя 1 день 17 часов, ред. 16-Сен-24 09:10) 
						
													ещё можно добавить расширения аудио.
 
Код: wav, dts, truehd, ec3, dtshd, mp2, mpa, eac3 
А также видео.
 
 
Цитата: set "VIDEO_EXTENSIONS=mkv mp4 avi m4a mpeg mpg ts webm mov flv" 
Цитата: set "AUDIO_EXTENSIONS=mka m4a mp4 aac ac3 flac mp3 ogg opus mov flv" 
Мне вот интересно это не приведёт ли к каким-то конфликтам? 
Хотя ни разу не видел в аниме разделе чтобы озвучки в mp4 были, тем более в mov, как и видео в m4a. 
 ну и насчёт разговора о добавления скрипта в раздачи, такое точно не разрешат, но вот стоит упростить некоторые вещи для обычного пользователя. 
 скрипту не хватает уже сканирование всех папок с озвучками, субтитрами и потом вшитием их всех в видео (либо выбором из какой подпапки вшить озвучку, субтитры), в идеале скрипт должен находиться возле видео, а ещё чтобы он имена дорожкам внутри контейнера давал исходя из названия папки в которой находиться озвучка (субтитры), такие имена как Sound, Sounds, RUS Sounds можно добавить в чёрный список имён. 
 В целом я давно размышлял о таком универсальном скрипте что вшивает сразу все дороги аудио, субтитры и шрифты. Только у меня пока умения нет написать такое сложное. (Хотя может напишу, уже сложные скрипты немного научился) Ну и лень немного такое делать   
Из последнего сложного писал фандаб команде скрипт что вшивает внешнюю обложку в видео и кодирует 2 версии видео для разных хостингов, применяя определённые настройки кодирования исходя из размера входного видео. И там по мелочи всякие доп штуки.
 
скрытый текст @echo offrmdir /s /q "C:\Temp" > NUL 2>&1
 ::
 cls
 echo Поместите в папку рядом со скриптом файлы:
 echo 1) Видео в формате MKV,MP4,AVI
 echo 2) Субтитры в формате ASS
 echo 3) Обложку в формате PNG,JPG,JPEG
 echo.
 ::
 echo.
 echo Введите название выходного видео и нажмите Enter.
 echo.
 set /p name=
 ::
 mkdir "C:\Temp\" > NUL 2>&1
 (attrib +h "C:\Temp" 2>&1)
 setlocal
 set "скрипт_директория=%~dp0"
 if not exist "%скрипт_директория%*.ass" (
 "%~dp0\Resources\ffplay.exe" -autoexit -nodisp -loglevel panic "%~dp0\Resources\error.wav"
 echo ┌──────────────────────────────────────────────────────────────────────┐
 echo │ Внимание, файл ASS с надписями не найден в папке. │
 echo │ Закройте окно и поместите в папку надписи и снова запустите скрипт. │
 echo │ Либо нажмите Enter для продолжения работы скрипта без надписей. │
 echo └──────────────────────────────────────────────────────────────────────┘
 echo.
 copy "%~dp0\Resources\Temp.ass" "C:\Temp\Temp.ass" > NUL 2>&1
 pause
 cls 7
 echo ┌───────────────────────────────────────────┐
 echo │ Выбрано кодирование видео без надписей. │
 echo └───────────────────────────────────────────┘
 echo.
 ) else (
 echo.
 )
 ::
 mkdir "%~dp0\Completed" > NUL 2>&1
 copy "%~dp0\Resources\Telegram.txt" "C:\Temp\Telegram.txt" > NUL 2>&1
 ::
 cls
 echo Выбрано имя выходного файла: %name%
 echo Подготовка видео и определение настроек кодирования.
 for %%f in ("*.mp4","*.mkv","*.avi") do (
 "%~dp0\Resources\MKVToolNix\mkvmerge.exe" --output "C:\Temp\Temp.mkv" --no-subtitles --no-attachments --no-chapters ^( "%%f" ^) -q > NUL 2>&1
 )
 ::
 set "videoPath=C:\Temp\Temp.mkv"
 for %%A in ("%videoPath%") do set "videoSizeBytes=%%~zA"
 set /a "videoSizeMB=videoSizeBytes / 1048576"
 if %videoSizeMB% gtr 1024 (
 set "result=20"
 ) else (
 set "result=17"
 )
 ::
 set "videoPath=C:\Temp\Temp.mkv"
 for %%A in ("%videoPath%") do set "videoSizeBytes=%%~zA"
 set /a "videoSizeMB=videoSizeBytes / 1048576"
 if %videoSizeMB% gtr 1024 (
 set "resultT=Выбраны настройки кодирования [обычные], так как видео больше 1 ГБ"
 ) else (
 set "resultT=Выбраны настройки кодирования [высокие], так как видео меньше 1 ГБ"
 )
 echo %resultT%
 ::
 setlocal
 set "скрипт_директория=C:\Temp\"
 if not exist "%скрипт_директория%Temp.mkv" (
 "%~dp0\Resources\ffplay.exe" -autoexit -nodisp -loglevel panic "%~dp0\Resources\error.wav"
 cls 7
 echo ┌──────────────────────────────────────────────────────────────────────┐
 echo │ Внимание, видео не найдено в папке. │
 echo │ Закройте окно и поместите в папку видео и снова запустите скрипт. │
 echo └──────────────────────────────────────────────────────────────────────┘
 echo.
 pause
 exit
 ) else (
 echo > NUL 2>&1
 )
 ::
 setlocal enabledelayedexpansion
 set "Temp_folder=C:\Temp"
 if not exist "%Temp_folder%" (
 mkdir "%Temp_folder%"
 )
 for %%i in ("*.ass") do (
 copy "%%i" "%Temp_folder%\Temp%%~xi" > NUL 2>&1
 )
 ::
 echo.
 echo Кодирование аудиодорожки:
 "%~dp0\Resources\FFmpeg.exe" -y -i "C:\Temp\Temp.mkv" -loglevel panic -stats -c:v copy -f wav - | "%~dp0\Resources\qaac64.exe" 2> "C:\Temp\errors.log" --threading --ignorelength --tvbr 118 - -o "C:\Temp\qaac64.m4a"
 ::
 setlocal enabledelayedexpansion
 set ffmpeg_path="%~dp0\Resources\FFmpeg.exe"
 for %%i in (*.jpg) do (
 !ffmpeg_path! -i "%%i" -loglevel panic -stats "C:\Temp\Temp.png" > NUL 2>&1
 )
 for %%i in (*.png) do (
 =
 !ffmpeg_path! -i "%%i" -loglevel panic -stats "C:\Temp\Temp.png" > NUL 2>&1
 )
 for %%i in (*.jpeg) do (
 =
 !ffmpeg_path! -i "%%i" -loglevel panic -stats "C:\Temp\Temp.png" > NUL 2>&1
 )
 ::
 setlocal
 set "скрипт_директория=C:\Temp\"
 if not exist "%скрипт_директория%Temp.png" (
 "%~dp0\Resources\ffplay.exe" -autoexit -nodisp -loglevel panic "%~dp0\Resources\error.wav"
 cls 7
 echo ┌──────────────────────────────────────────────────────────────────────┐
 echo │ Внимание, файл для обложки не найден в папке │
 echo │ Закройте окно и поместите в папку обложку и снова запустите скрипт. │
 echo └──────────────────────────────────────────────────────────────────────┘
 echo.
 pause
 exit
 ) else (
 echo > NUL 2>&1
 )
 ::
 setlocal
 set image_file="C:\Temp\Temp.png"
 ::
 "%~dp0\Resources\FFmpeg.exe" -loop 1 -i %image_file% -y -c:v libx264 -t 0.001 -crf %result% -preset medium -r 23.976 -vf format=yuv420p -colorspace bt709 -s 1920x1080 -loglevel panic -stats "C:\Temp\01.mp4" > NUL 2>&1
 ::
 cd /d "C:\Temp\"
 echo.
 echo Кодирование видео для VK:
 "%~dp0\Resources\FFmpeg.exe" -i "C:\Temp\Temp.mkv" -y -c:v libx264 -crf %result% -preset medium -an -r 23.976 -vf format=yuv420p,hflip,ass="Temp.ass" -colorspace bt709 -s 1920x1080 -loglevel panic -stats "C:\Temp\VK.mp4"
 ::
 cd /d "C:\Temp\"
 echo.
 echo Кодирование видео для Telegram:
 "%~dp0\Resources\FFmpeg.exe" -i "C:\Temp\Temp.mkv" -y -c:v libx264 -crf %result% -preset medium -an -r 23.976 -vf format=yuv420p,ass="Temp.ass" -colorspace bt709 -s 1920x1080 -loglevel panic -stats "C:\Temp\Telegram.mp4"
 ::
 cd..
 ::
 echo Объединение заставки и видео Telegram.
 "%~dp0\Resources\FFmpeg.exe" -f concat -safe 0 -i "C:\Temp\Telegram.txt" -r 23.976 -c copy -loglevel panic -stats "C:\Temp\Telegram-Temp.mp4" > NUL 2>&1
 ::
 echo Создание готового видео для VK.
 mkdir "%~dp0\Completed\VK" > NUL 2>&1
 "%~dp0\Resources\FFmpeg.exe" -y -i "C:\Temp\VK.mp4" -i "C:\Temp\qaac64.m4a" -loglevel panic -c:v copy -c:a copy -metadata:s:a:0 title="MoonWalkers (Script by Adventurer_Kun v8)" -map 0:0 -map 1:0 -loglevel panic -stats "%~dp0\Completed\VK\%name% [VK].mp4" > NUL 2>&1
 ::
 echo Создание готового видео для Telegram.
 mkdir "%~dp0\Completed\Telegram" > NUL 2>&1
 "%~dp0\Resources\FFmpeg.exe" -y -i "C:\Temp\Telegram-Temp.mp4" -i "C:\Temp\qaac64.m4a" -loglevel panic -c:v copy -c:a copy -metadata:s:a:0 title="MoonWalkers (Script by Adventurer_Kun v8)" -map 0:0 -map 1:0 -loglevel panic -stats "%~dp0\Completed\Telegram\%name% [Telegram].mp4" > NUL 2>&1
 ::
 rmdir /s /q "C:\Temp" > NUL 2>&1
 cls
 timeout /t 1 >nul
 "%~dp0\Resources\ffplay.exe" -autoexit -nodisp -loglevel panic "%~dp0\Resources\success.wav"
 echo ┌────────────────────────────────────────────┐
 echo │ Кодирование успешно завершено. │
 echo │ Готовые видео находятся в папке Completed │
 echo └────────────────────────────────────────────┘
 echo.
 ::
 echo Введите цифру для выбора шаблона и нажмите Enter.
 echo 1 = Удалить входные файлы (Внимание. Удалит все файлы в папке с расширением .ass .mkv .mp4 .avi .png .jpg .jpeg)
 echo 2 = Не удалять входные файлы.
 echo 3 = Сделать резервную копию входных файлов в zip и удалить входные файлы рядом со скриптом.
 echo.
 @echo off
 setlocal
 :begin
 set /p q=""
 if "%q%"=="1" goto delete_files
 if "%q%"=="2" goto skip_deletion
 if "%q%"=="3" goto backup_files
 echo Неверный ввод, попробуйте снова.
 goto begin
 :delete_files
 echo Удаление входных файлов...
 cd /d "%~dp0"
 del *.ass *.mkv *.mp4 *.avi *.png *.jpg *.jpeg /q
 echo Все файлы удалены.
 exit
 goto end
 :skip_deletion
 echo Вы выбрали не удалять файлы.
 exit
 goto end
 :backup_files
 echo.
 echo Введите имя резервной копии.
 echo.
 set /p filename=
 echo.
 echo Архивирование и удаление входных файлов...
 mkdir "C:\Temp\" > NUL 2>&1
 (attrib +h "C:\Temp" 2>&1)
 "%~dp0\Resources\7-ZipPortable\App\7-Zip64\7z.exe" a -tzip "C:\Temp\%filename%.zip" "%~dp0\*.ass" "%~dp0\*.mkv" "%~dp0\*.mp4" "%~dp0\*.avi" "%~dp0\*.png" "%~dp0\*.jpg" "%~dp0\*.jpeg" > NUL 2>&1
 mkdir "%~dp0\Backup" > NUL 2>&1
 for /f "tokens=1-4 delims=/: " %%a in ("%date%") do (
 set "year=%%c"
 set "month=%%b"
 set "day=%%a"
 )
 for /f "tokens=1-3 delims=:." %%A in ("%time%") do (
 set "hour=%%A"
 set "minute=%%B"
 )
 mkdir "%~dp0\Backup\%year%%month%%day%" > NUL 2>&1
 set "extensions=.zip"
 for %%G in (%extensions%) do (
 move /y "C:\Temp\*.zip" "%~dp0\Backup\%year%%month%%day%\" > NUL 2>&1
 )
 del /q "%~dp0\*.ass" "%~dp0\*.mkv" "%~dp0\*.mp4" "%~dp0\*.avi" "%~dp0\*.png" "%~dp0\*.jpg" "%~dp0\*.jpeg" 2>nul
 rmdir /s /q "C:\Temp" > NUL 2>&1
 exit
 goto end
 :end
 pause
 |  
	|  |  
	| nujievik 
 Стаж: 1 год 7 месяцев Сообщений: 146 | 
			
								
					nujievik · 
					 17-Сен-24 03:48
				
												(спустя 18 часов, ред. 05-Янв-25 18:18) 
						
													
скрытый текст Adventurer_Kun
Спасибо, добавил, поправил.
 
Adventurer_Kun писал(а): 86710957не приведёт ли к каким-то конфликтам 
Не приведет.
 
Подробнее 
Аудио и видео должны быть разные файлы. Один и тот же файл скрипт не примет и за аудио и за видео.
Такие "конфликтные" расширения перечислены в MIX_EXTENSIONS и для них есть доп. проверка. Это контейнеры, которые в теории могут содержать как аудио, так и видеодорожку.
Если файл с расширением из "видеорасширений" в одной папке с аудио и расширение аудио не "чисто аудио", то проверяется наличие в этом файле видеодорожки.
Если файл с расширением из "видеорасширений" не в одной папке с аудио, а выше, то проверка не производится (ресурсозатратно). 
Т.е. если в раздаче не нарушена структура и аудио лежат в поддиректориях видеодиректории или видео закинуто в директорию к аудио, то все норм будет. 
 В теории еще возможен конфликт если закинуть более 1 аудиофайла с одинаковым названием в папку. Если одно из аудио будет "чисто аудио", а другое аудио "смешанное", то скрипт может принять "смешанное" аудио за видео и т.к. второй файл "чисто аудио" проверка на наличие видеодорожки проводиться не будет. Но сейчас скрипт впринципе не поддерживает добавление более одной аудиодорожки, так что это использование не по назначению. 
 Конкретно с m4a ошибка, поправил. Он только аудио. mp4 же - контейнер, который может содержать видео и/или аудио. Т.е. в теории возможны в нем озвучки. Как и в mov и flv. 
Если к конфликтам не приводит не вижу смысла не добавлять, проверка на соответствие расширению ведется сравнением переменных внутри скрипта, т.е. ресурсов добавление еще нескольких расширений не отнимает практически. 
Adventurer_Kun писал(а): 86710957о добавления скрипта в раздачи, такое точно не разрешат 
Согласен. Аргумент, что автор раздачи может подменить батник, сложно оспорить. Надеюсь на выделение в FAQ и в "пост с полезностями".
 
Adventurer_Kun писал(а): 86710957стоит упростить 
Adventurer_Kun писал(а): 86710957либо выбором из какой подпапки вшить озвучку, субтитры 
немного противоречит идеи упрощения   
Но у меня есть идея как одновременно и упростить и дать больше настроек. 
 
 v0.2.2
 
Обновлен файл в стартовом посте. Также скрипт теперь можно скачать с Github 
Скорректирована логика поиска директорий субтитров и шрифтов.
Мелкие фиксы и исправления. |  
	|  |  
	| nujievik 
 Стаж: 1 год 7 месяцев Сообщений: 146 | 
			
								
					nujievik · 
					 20-Сен-24 17:19
				
												(спустя 3 дня, ред. 05-Янв-25 18:17) 
						
													
скрытый текст v0.3.0
Добавлена поддержка линкованного видео.
Для обработки линкованного видео в одной папке с батником нужно положить merge-video-from-split-chapters.py и delete-temp-files.py для чистки (временный вариант).
Также в системе должен быть установлен Python и прописан в PATH. 
Нелинкованное видео можно обрабатывать как прежде - одним батником и без Python. 
 
 
 Основное тело скрипта будет переписано на Python для кроссплатформенного выполнения. До этого добавления новой функциональности не будет. 
С точки зрения пользователя планируется оставить все как есть. Просто запуск одного батника, который сделает красиво. 
 
 UPD 13.10
 
v0.3.2 
Добавлен ретайминг аудио и субтитров для линкованного видео. Больше рассинхрона быть не должно для любых конфигураций |  
	|  |  
	| Adventurer_Kun 
 
 Стаж: 13 лет 4 месяца Сообщений: 5306 | 
			
								
					Adventurer_Kun · 
					 20-Сен-24 17:50
				
												(спустя 30 мин., ред. 20-Сен-24 17:50) 
						
													
Цитата: Также в системе должен быть установлен Python и прописан в PATH. 
Можно через команду
 
Код: winget install Python.Python.3 
в cmd поставить питон и вроде он сразу в path добавляется. 
Ну это самый лёгкий способ вроде.											 |  
	|  |  
	| nujievik 
 Стаж: 1 год 7 месяцев Сообщений: 146 | 
			
								
					nujievik · 
					 22-Ноя-24 21:05
				
												(спустя 2 месяца 2 дня, ред. 05-Янв-25 18:17) 
						
													
скрытый текст v0.5.0 
Для Windows и Linux выложил x64 исполняемые файлы. Установка Python и MKVToolNix для них не требуется. Просто скачиваете .exe и запускаете, в него все включено. 
Python скрипт остается универсальным вариантом для всех систем.
 
Добавлена поддержка всех аргументов mkvmerge, добавлены новые аргументы (см. "Аргументы вызова" в стартовом посте). Т.е. теперь можно накрутить все что угодно, что поддерживает mkvmerge. |  
	|  |  
	| nujievik 
 Стаж: 1 год 7 месяцев Сообщений: 146 | 
			
								
					nujievik · 
					 16-Июл-25 05:04
				
												(спустя 7 месяцев, ред. 27-Сен-25 14:03) 
						
													
скрытый текст И муксер снова полностью переписан. Теперь уже на Rust) 
Инструкция в шапке . 
В текущем виде это самое универсальное, самое автоматизированное, самое продвинутое и самое быстрое решение из существующих оболочек для mkvmerge. 
Пользователям собственно mkvmerge тоже советую попробовать Профессиональный mux-media. Настройка муксирования через CLI заиграет новыми красками и ваша жизнь никогда не будет прежней! |  
	|  |  
	| Adventurer_Kun 
 
 Стаж: 13 лет 4 месяца Сообщений: 5306 | 
			
								
					Adventurer_Kun · 
					 16-Июл-25 06:59
				
												(спустя 1 час 54 мин., ред. 16-Июл-25 06:59) 
						
													японские и английские дорожки в готовом файле имеют заголовок с названием видео почему-то. Ну либо где нет заголовка у дорожек аудио в видео, оно у вас туда лепит название видео.ну и прогресс выполнения обработки серии какой-то бы ещё чтобы был.
 |  
	|  |  
	| nujievik 
 Стаж: 1 год 7 месяцев Сообщений: 146 | 
			
								
					nujievik · 
					 16-Июл-25 08:30
				
												(спустя 1 час 31 мин., ред. 11-Авг-25 06:49) 
						
													Adventurer_Kun
скрытый текст Добавил пофайловый прогресс.Имя дорожки ставится (в порядке приоритета):
 1. из ввода пользователя
 2. из тегов mkvinfo
 3. из хвоста имени (video.mkv, video.name.mka)
 4. из имени директории файла
 Соответственно 1-3 отсутствовали, проставилось имя директории видео.
 Если это нежелательное поведение, отключается на флаг -p для всех авто (или --no-add-names только для имен).
 Тогда имя будет браться только из 1-2 (ввод пользователя и теги mkvinfo).
 |  
	|  |  
	| nujievik 
 Стаж: 1 год 7 месяцев Сообщений: 146 | 
			
								
					nujievik · 
					 11-Авг-25 07:14
				
												(спустя 25 дней, ред. 27-Сен-25 14:03) 
						
													
скрытый текст Добавлена поддержка .mp4, .avi и .webm выходных контейнеров с автоматическим перекодированием неподдерживаемых этими контейнерами дорожек. По умолчанию используется .mkv и никакого перекодирования нет. Нужно явно задать mux-media -o ,.mp4 тогда будет.Перекодирование осуществляется через простой советский самый обыкновенный ffmpeg без подбора настроек кодирования, так что рассматривать исключительно как быстрый способ запустить на неподдерживаемом оборудовании.
 |  
	|  |  
	| nujievik 
 Стаж: 1 год 7 месяцев Сообщений: 146 | 
			
								
					nujievik · 
					 27-Сен-25 14:03
				
												(спустя 1 месяц 16 дней) 
						
													Два ядра - хорошо... А 4 ЯДРА - ВАЩЕ ПРЕКРАСНОВзорвавший crates io и рутрекер знаменитый мультиплексор аниме mux-media получил долгожданное обновление!
 Добавлено:
 - Параллельное (многопоточное) муксирование.
 Возвращено:
 - Поддержка линкованного видео.
 |  
	|  |  |