при объединении сегментов видео ffmpeg показывает ошибку: несоответствие типа мультимедиа между parsed_overlay_20

773/5000 Я пытаюсь применить масштабирование и эффект хромакея к разным сегментам видео, а затем снова объединить эти сегменты в один.

Чтобы улучшить время и производительность, я разработал программу, которая создает все фильтры одной командой.

План простой, у меня видео *.mov записано с зеленым экраном и фоном *.jpg,

  1. Сначала я готовлю пару фонов с эффектом размытия из изображения JPG.
  2. Затем я применяю хромакей, чтобы сделать зеленую часть видео прозрачной.
  3. Я обрезаю видео, к которому применил хромакей, в несколько временных отрезков и к каждому отрезку применяю масштаб и обрезку и накладываю на один из фонов, подготовленных на шаге 1
  4. Объедините все уже обработанные сегменты.

Когда я выполняю полученную команду, она дает мне ошибку

команда такова:

ffmpeg -i "C:\ffmpeg\pruebas\FFBlue_ProjectsFiles\chroma\green1.mov" -i C:\ffmpeg\pruebas\FFBlue_ProjectsFiles\fondos\sc.jpg -filter_complex " [1:v]scale=iw*3:-1,crop=w=iw/3:h=ih/3:y=(ih-oh)/3:x=((iw-ow)/2)+(ow/2-ow/3),boxblur=7:2[fondo_3IZQ] ; [1:v]scale=iw*4:-1,crop=w=iw/4:h=ih/4:y=(ih-oh)/3:x=(in_w-out_w)/2,boxblur=6:2[fondo_4CEN] ; [1:v]scale=iw*5:-1,crop=w=iw/5:h=ih/5:y=(ih-oh)/3:x=((iw-ow)/2)+(ow/2-ow/3),boxblur=5:2[fondo_5IZQ]  ; [0]chromakey=color=#83BD46:similarity = 0.1 : blend = 0.05,selectivecolor=reds=0 0 0 -1:yellows=0 0.1 0 -0.5:greens=0 0 -1 0:whites=0 0 0 -0.7 [vid]  ;  [vid] trim=start=0:duration=0,setpts=PTS-STARTPTS,scale=iw*4:-1,crop=w=iw/4:h=ih/4:y=(ih-oh)/3:x=((iw-ow)/2)+(ow/2-ow/3)[vid_0] ; [fondo_4CEN][vid_0]overlay[toma_0] ; [vid] trim=start=0:duration=3.41933,setpts=PTS-STARTPTS,scale=iw*3:-1,crop=w=iw/3:h=ih/3:y=(ih-oh)/3:x=(in_w-out_w)/2[vid_1] ; [fondo_3IZQ][vid_1]overlay[toma_1] ; [vid] trim=start=3.41932988166809:duration=2.85067,setpts=PTS-STARTPTS,scale=iw*5:-1,crop=w=iw/5:h=ih/5:y=(ih-oh)/3:x=(in_w-out_w)/2[vid_2] ; [fondo_5IZQ][vid_2]overlay[toma_2]  ; [toma_0] [toma_1] [toma_2] concat=n=3:v=1:a=1:unsafe=1 [v_concatenado][a_concatenado]" -map [v_concatenado]  -map [a_concatenado] "C:\ffmpeg\pruebas\FFBlue_ProjectsFiles\chroma\green1_FINAL.mov"

когда я его выполняю, ffmpeg говорит:

[Parsed_overlay_20 @ 0000000000404100] Media type mismatch between the 'Parsed_o
verlay_20' filter output pad 0 (video) and the 'Parsed_concat_26' filter input p
ad 1 (audio)
[AVFilterGraph @ 0000000003527a00] Cannot create the link overlay:0 -> concat:1
Error initializing complex filters.
Invalid argument

person Igorcb    schedule 27.01.2018    source источник
comment
Я хотел бы сохранить звук каждого раздела, который я предположил, что использование обрезки для создания видеосегментов также приведет к разделению звука. Но, по-видимому, я не знаю, как сказать ffmpeg, что он должен использовать звук в видео, пожалуйста, помогите мне   -  person Igorcb    schedule 28.01.2018


Ответы (1)


Вы сообщаете фильтру concat о выводе аудиопотока, но не предоставили никаких аудиовходов.

1. Добавьте атрим-фильтры:

[0:a]trim=start=1:duration=3,asetpts=PTS-STARTPTS[a0];[1:a]trim=start=10:duration=2,asetpts=PTS-STARTPTS[a1];[2:a]trim=start=100:duration=6,asetpts=PTS-STARTPTS[a2];

Настройте значения start и duration в соответствии с вашими потребностями.

2. Затем укажите их в фильтре concat:

[toma_0][a0][toma_1][a1][toma_2][a2]concat=n=3:v=1:a=1:unsafe=1 [v_concatenado][a_concatenado]
person llogan    schedule 27.01.2018
comment
Я попытался следовать вашим инструкциям, и это была результирующая команда: - person Igorcb; 28.01.2018
comment
[0:a]trim=start=0:duration=3.41933,asetpts=PTS-STARTPTS[a1];[0:a]trim=3.41932988166809:duration=2.85067,asetpts=PTS-STARTPTS[a2] ... toma_1] [a1][toma_2][a2] concat=n=2:v=1:a=1:unsafe=1 [v_concatenado][a_concatenado] - person Igorcb; 28.01.2018
comment
@user2642511 user2642511 Покажи свою полную команду. Вы можете отредактировать свой вопрос, чтобы показать новую команду. - person llogan; 28.01.2018