3

Этот ответ суперпользователя между двумя видео с использованием ffmpeg дошел до меня, но теперь, когда я перепробовал много решений и увидел каждую ссылку SO, пришло время попросить вас всех о помощи.

Я пытаюсь смешать 2 видео по 10 секунд каждый в формате ts с аудио и видео одновременно.

Шаги:

  1. Добавить сложный фильтр черного экрана
  2. Затухание видео 1 через 9 секунд, с длительностью затухания 1 секунда
  3. Появление видео 2 на 9 секунд, с продолжительностью затухания 1 секунда
  4. Обрезать черный фильтр до 19 секунд

Это прекрасно работает только для одного видео, но когда я пытаюсь добавить аудио, я не могу получить это сообщение об ошибке:

Панель вывода "default" с типом audio экземпляра фильтра "Parsed_asetpts_4" asetpts, не подключенного к какому-либо месту назначения

Похоже, я не подключаю аудио выход правильно. Я думаю, что мне нужно изменить [over] строки, чтобы включить аудио. Но как мне это сделать?

`ffmpeg -i vid1.ts -i vid2.ts -f lavfi -i color=black -filter_complex \
"[0:v]format=pix_fmts=yuva420p,\
fade=t=out:st=9:d=1:alpha=1,setpts=PTS-STARTPTS[v0];\
[0:a]\
afade=t=out:st=9:d=1,asetpts=PTS-STARTPTS[a0];\
[1:v]format=pix_fmts=yuva420p,\
fade=t=in:st=0:d=1:alpha=1,setpts=PTS-STARTPTS+9/TB[v1];\
[1:a]\
afade=t=in:st=0:d=1,asetpts=PTS-STARTPTS+9/TB[a1];\
[a0][a1]amix=inputs=2;\ 
[2:v]scale=720x406,trim=duration=19[over];\
[over][v0]overlay[over1];\
[over1][v1]overlay=format=yuv420[outv]" -vcodec libx264 -y -map [outv] final.ts`

2 ответа2

6

Это будет делать как аудио, так и видео:

ffmpeg -i segment1.mp4 -i segment2.mp4 -an \
-filter_complex \
"   [0:v]trim=start=0:end=9,setpts=PTS-STARTPTS[firstclip];
    [1:v]trim=start=1,setpts=PTS-STARTPTS[secondclip];
    [0:v]trim=start=9:end=10,setpts=PTS-STARTPTS[fadeoutsrc];
    [1:v]trim=start=0:end=1,setpts=PTS-STARTPTS[fadeinsrc];
    [fadeinsrc]format=pix_fmts=yuva420p,      
                fade=t=in:st=0:d=1:alpha=1[fadein];
    [fadeoutsrc]format=pix_fmts=yuva420p,
                fade=t=out:st=0:d=1:alpha=1[fadeout];
    [fadein]fifo[fadeinfifo];
    [fadeout]fifo[fadeoutfifo];
    [fadeoutfifo][fadeinfifo]overlay[crossfade];
    [firstclip][crossfade][secondclip]concat=n=3[output];
    [0:a][1:a] acrossfade=d=1 [audio]
" \
-map "[output]" -map "[audio]" result.mp4

Это в основном то же самое, что и этот ответ, который, однако, охватывает только видео. Оформить заказ ответ, потому что он фантастически объяснил.

Надеемся, что в будущем они добавят фильтр vcrossfade ...!

1

Сделайте это: это для перекрестного затухания с двумя видео

ffmpeg -i big_buck.mp4 -i big_buck.mp4 -an -filter_complex "
[0:v]trim=start=0:end=4,setpts=PTS-STARTPTS[firstclip];  
[1:v]trim=start=1,setpts=PTS-STARTPTS[secondclip]; 
[0:v]trim=start=4:end=5,setpts=PTS-STARTPTS[fadeoutsrc]; 
[1:v]trim=start=0:end=1,setpts=PTS-STARTPTS[fadeinsrc]; 
[fadeinsrc]format=pix_fmts=yuva420p, fade=t=in:st=0:d=1:alpha=1[fadein]; 
[fadeoutsrc]format=pix_fmts=yuva420p,fade=t=out:st=0:d=1:alpha=1[fadeout]; 
[fadein]fifo[fadeinfifo]; [fadeout]fifo[fadeoutfifo]; [fadeoutfifo]
[fadeinfifo]overlay[crossfade]; [firstclip][crossfade]
[secondclip]concat=n=3[output]; [0:a][1:a] acrossfade=d=1 [audio]" -map "
[output]" -map "[audio]" result.mp4 -y

это работает только для двух видео

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .