
Я использую ffmpeg для изменения нескольких .mp4
файлов.
Сначала я использую эту команду, чтобы изменить язык по умолчанию с eng
на fr
.
ffmpeg.exe -i "imput 1.mp4" -map 0 -c copy -disposition:a:0 0 -disposition:a:1 default "Output 2.mp4"
Затем я хочу использовать эту команду для добавления мягких субтитров из .srt
файла в .mp4
.
ffmpeg.exe -i "Input 1.mp4" -i "Input 2.srt" -c copy -c:s mov_text -metadata:s:s:0 language=fr "Output 1.mp4"
Эти две команды работают независимо, но я хотел бы объединить их в одну строку.
Я пробовал что-то подобное, но меняется только звук, на субтитры это никак не влияет.
ffmpeg.exe -i "Input 1.mp4" -i "Input 2.srt" -map 0 -c copy -disposition:a:0 0 -disposition:a:1 default -c:s mov_text -metadata:s:s:0 language=fr Output 1.mp4"
Я знаю, что что-то не так, но не могу понять, что именно.
Может ли кто-нибудь сказать мне, что не так с моим объединенным командованием?
Затем, как я уже говорил, я работаю над несколькими файлами (314 точно), и у каждого файла есть свое имя, и утомительно вручную менять имя файла каждый раз. Есть ли способ сделать это для каждого файла, присутствующего в каталоге?
решение1
Попробуйте сделать это внутри папки, где находятся видео и субтитры, откройте командную строку и используйте эту команду:
for %a in (*.mkv *.mp4) do ffmpeg -i "%a" -i "%~na.srt" -map 0 -map 1:s:0 -disposition:a:0 0 -disposition:a:1 default -c copy -metadata:s:s:0 language=fr "%~na_new.%~xa"
Должно создаться новое видео с тем же названием, что и у старого, но с приставкой «новое» в названии, а также измененным звуком и субтитрами.