Привет извините, если это уже спросили, но у меня есть введение mp4 и более чем 1 000 mp4 в другой папке, в чем я нуждаюсь, введение mp4, которое будет добавлено к каждому mp4 в папке, я использую человечность, что является лучшим способом сделать это.
все mp4 имеют то же кодирование
ffmpeg -i intro.mp4 -c copy -bsf:v h264_mp4toannexb -f mpegts intermediate1.ts
ffmpeg -i 1.mp4 -c copy -bsf:v h264_mp4toannexb -f mpegts intermediate2.ts
ffmpeg -i "concat:intermediate1.ts|intermediate2.ts" -c copy output.mp4
это командные слова для по одному этой моей попытки пакета, но var не работает
for f in *.mp4; do ffmpeg -i "$f" -c copy -bsf:v h264_mp4toannexb -f mpegts "$f.ts"; done
этот код хорошо работает
for i in *.mp4;
do
test="concat:intro.mp4.ts|"${i%.*}".mp4.ts";
ffmpeg -i "$test" -c copy anime2/"${i%.mp4}.mp4"; done
Добрался это работающий с этими 2 командами сделало целый пакет в одном сценарии
for f in *.mp4; do ffmpeg -i "$f" -c copy -bsf:v h264_mp4toannexb -f mpegts "$f.ts"; done
for i in *.mp4;
do
test="concat:intro.mp4.ts|"${i%.*}".mp4.ts";
ffmpeg -i "$test" -c copy anime2/"${i%.mp4}.mp4"; done
спасибо
Параметры должны соответствовать поэтому сначала, необходимо приспособить введению для соответствия другим видео (или наоборот).
Использовать ffprobe
просмотреть различия:
ffprove -loglevel error -show_streams intro.mp4
ffprove -loglevel error -show_streams 1.mp4
Повторно закодировать intro.mp4
соответствовать 1.mp4
:
ffmpeg -i intro.mp4 -filter_complex "[0:v]fps=500/21,scale=848:480:force_original_aspect_ratio=increase,crop=848:480,setsar=171/170[v]" -map "[v]" -map 0:a -c:v libx264 -profile:v main -c:a aac -ar 44100 intro_b.mp4
Теперь используйте concat demuxer. Сделайте текстовый файл, перечисляющий исходные данные, которые будут связаны:
file 'intro_b.mp4'
file '1.mp4'
Затем конкатенируйте:
ffmpeg -f concat -i input.txt -c copy output.mp4