Обновление: я использовал более старую версию ffmpeg и у меня были проблемы с ней.
Обновление решило мою проблему, и мне больше не нужно использовать MP4Box для извлечения правильной видеодорожки.
Теперь мне просто любопытно, может ли MP4Box автоматически использовать TrackID видео после его обнаружения.
У меня были проблемы с извлечением необработанного файла h264 из mkv с помощью ffmpeg, поэтому я решил использовать MP4Box, и он работал хорошо.
Поэтому я сделал следующий пакетный файл, чтобы извлечь нужные мне файлы:
@echo on
ffmpeg.exe -i "%1" -c copy -map 0:a? -f tee "[select='a\:0':onfail=ignore]"%~n1"_a0.aac|[select='a\:1':onfail=ignore]"%~n1"_a1.aac|[select='a\:2':onfail=ignore]"%~n1"_a2.aac|[select='a\:3':onfail=ignore]"%~n1"_a3.aac|[select='a\:4':onfail=ignore]"%~n1"_a4.aac|[select='a\:5':onfail=ignore]"%~n1"_a5.aac"
ffmpeg.exe -y -i "%1" -map 0:a? -map 0:v -c:v copy -c:a copy "%~n1.mp4"
MP4Box -add "%~n1.mp4"#video -raw %$2% -new "%~n1"
del /f "%~n1"
MP4Box -add "%~n1"_track%$2%.h264:fps=60 -new "%~n1"_fix.mp4
del /f "%~n1"_track%$2%.h264
Если я вписываю имя командного файла и mkv-файла в строку cmd, это работает нормально.
Но если я перетащу файл mkv в командный файл, он не сможет заменить% $ 2% на видео TrackID.
MP4Box -add "%~n1.mp4"#video -raw %$2% -new "%~n1"
Вывод этого упоминает правильный TrackID, но немедленно терпит неудачу. Есть ли лучший способ заставить MP4Box использовать правильный TrackID видео или запрашивать ввод пользователя после отображения идентификатора?
Спасибо.