В настоящее время я использую пять отдельных процессов FFmpeg для выполнения следующих действий:
- Обрезать и обрезать Vid B
- масштабировать Vid B до высоты Vid A
- объединить Vid B и Vid A
- добавить постепенное исчезновение / постепенное исчезновение в Combined Vid
- добавить наложение для постепенного появления / исчезновения VID
I чтобы все они были настроены на сверхбыстрое время, но это все равно занимает много времени - около 40 секунд, когда каждое видео длится ~ 10 секунд.
Сначала я исследовал объединение некоторых фильтров, но не смог заставить его работать в течение таймфрейма. Я имел в наличии. Я также не был уверен, что время, потраченное на выяснение того, как объединить все фильтры, окупится за более короткое время обработки.
Есть какие-нибудь мысли / идеи от вас, блестящие гуру FFmpeg? Ускорит ли это обработку, и если да, я должен объединить все команды вместе или есть некоторые, которые я должен объединить, а другие я должен оставить отдельно?
Вот мои текущие команды, все из которых работают:
// trimming 200ms off begining of vid B + cropping frame (note that I have previously retrieved dimensions and duration of both videos with ffprobe)
1. `ffmpeg -i vidB.mov -ss 200 -t ${vidB.duration} -async 1 -filter:v "crop=iw:${vidB.croppedHeight}:0:${vidB.offset}" -preset ultrafast -c:a copy croppedVidB.mov`
// scale Vid B up to Vid A's height
2. `ffmpeg -i croppedVidB.mov -vf scale=-2:${vidA.height} vidBScaled.mov`
// combine videos
3. `ffmpeg -i vidA.mov -i vidBScaled.mov -filter_complex "[0:v][1:v] hstack=inputs=2[v]; [0:a][1:a]amix[a]" -map "[v]" -map "[a]" -preset ultrafast -ac 2 combined.mov`
// add fade in & out
4. `ffmpeg -i combined.mov -sseof -1 -copyts -i combined.mov -filter_complex "[1]fade=out:0:30[t];[0][t]overlay,fade=in:0:30[v]; anullsrc,atrim=0:1[at];[0][at]acrossfade=d=1,afade=d=1[a]" -map "[v]" -map "[a]" -c:v libx264 -crf 22 -preset ultrafast -shortest fadeInOut.mov`
// add overlay
5. `ffmpeg -i fadeInOut.mov -i overlay.png -filter_complex overlay=W-w-10:H-h-10 -codec:a copy -preset ultrafast -async 1 overlay.mov`
Заранее спасибо за ваши мысли!