Получение «Переполнения очереди буфера, отбрасывание» при конкатенации в ffmpeg

#ffmpeg

#ffmpeg

Вопрос:

У меня есть скрипт на python, который генерирует команду FFmpeg для конкатенации видеоклипов. Вот сценарий:

         ffmpeg 
        -i /tmp/media/import-2020-Aug-19-Wednesday-08-08-26/temp_eba59811-bb5c-4e36-aa7d-b1731e70432c.mp4 
        -i /tmp/media/import-2020-Aug-19-Wednesday-08-08-26/temp_2a6d7907-7cad-4f38-ae82-4b475546d3e0.mp4 
        -i /tmp/media/import-2020-Aug-19-Wednesday-08-08-26/temp_d7371ecb-01df-4199-951f-336fa475998f.mp4 
        -i /tmp/media/import-2020-Aug-19-Wednesday-08-08-26/temp_cc5de0f1-84b4-47bc-b390-45b5f8711914.mp4 
        -i /tmp/media/import-2020-Aug-19-Wednesday-08-08-26/temp_bf796e0d-135f-40fd-ab8e-4780da6973fd.mp4  
        -filter_complex 
        "[0:v]trim=start=0:end=8.032,setpts=PTS-STARTPTS[clip0];
        [1:v]trim=start=2:end=13.047,setpts=PTS-STARTPTS[clip1];
        [2:v]trim=start=2:end=13.558,setpts=PTS-STARTPTS[clip2];
        [3:v]trim=start=2:end=13.186,setpts=PTS-STARTPTS[clip3];
        [4:v]trim=start=2,setpts=PTS-STARTPTS[clip4];
        [0:v]trim=start=9.032:end=10.032,setpts=PTS-STARTPTS[out0];
        [1:v]trim=start=14.047:end=15.047,setpts=PTS-STARTPTS[out1];
        [2:v]trim=start=14.558:end=15.558,setpts=PTS-STARTPTS[out2];
        [3:v]trim=start=14.186:end=15.186,setpts=PTS-STARTPTS[out3];
        [1:v]trim=start=0:end=2,setpts=PTS-STARTPTS[in1];
        [2:v]trim=start=0:end=2,setpts=PTS-STARTPTS[in2];
        [3:v]trim=start=0:end=2,setpts=PTS-STARTPTS[in3];
        [4:v]trim=start=0:end=2,setpts=PTS-STARTPTS[in4];
        [in1]format=pix_fmts=yuva420p,fade=t=in:st=0:d=2:alpha=1[fadein1];
        [in2]format=pix_fmts=yuva420p,fade=t=in:st=0:d=2:alpha=1[fadein2];
        [in3]format=pix_fmts=yuva420p,fade=t=in:st=0:d=2:alpha=1[fadein3];
        [in4]format=pix_fmts=yuva420p,fade=t=in:st=0:d=2:alpha=1[fadein4];
        [out0]format=pix_fmts=yuva420p,fade=t=out:st=0:d=2:alpha=1[fadeout0];
        [out1]format=pix_fmts=yuva420p,fade=t=out:st=0:d=2:alpha=1[fadeout1];
        [out2]format=pix_fmts=yuva420p,fade=t=out:st=0:d=2:alpha=1[fadeout2];
        [out3]format=pix_fmts=yuva420p,fade=t=out:st=0:d=2:alpha=1[fadeout3];
        [fadein1]fifo[fadein1fifo];
        [fadein2]fifo[fadein2fifo];
        [fadein3]fifo[fadein3fifo];
        [fadein4]fifo[fadein4fifo];
        [fadeout0]fifo[fadeout0fifo];
        [fadeout1]fifo[fadeout1fifo];
        [fadeout2]fifo[fadeout2fifo];
        [fadeout3]fifo[fadeout3fifo];
        [fadeout0fifo][fadein1fifo]overlay[crossfade0];
        [fadeout1fifo][fadein2fifo]overlay[crossfade1];
        [fadeout2fifo][fadein3fifo]overlay[crossfade2];
        [fadeout3fifo][fadein4fifo]overlay[crossfade3];
        [clip0][crossfade0][clip1][crossfade1][clip2][crossfade2][clip3][crossfade3][clip4]concat=n=9[output];
         [0:a][1:a]acrossfade=d=10:c1=tri:c2=tri[A1];
         [A1][2:a]acrossfade=d=10:c1=tri:c2=tri[A2];
         [A2][3:a]acrossfade=d=10:c1=tri:c2=tri[A3];
         [A3][4:a]acrossfade=d=10:c1=tri:c2=tri " -map "[output]" -map "" /tmp/media/final/some_filename_587463a2-e3ca-436a-874b-a72e295e46ac.mp4
  

Но я получаю следующую ошибку: Buffer queue overflow, dropping .
Я читал, что для решения этой проблемы мне нужно использовать fifo, но я не могу понять, где я должен его разместить. Кроме того, похоже, что fifo работает только с видеопотоками.
Я был бы очень признателен за любую помощь!

Комментарии:

1. Какая версия ffmpeg?

2. @Gyan вот оно: > ffmpeg версии 3.4.8-0ubuntu0.2 Авторские права (c) 2000-2020 разработчики FFmpeg > созданы с использованием gcc 7 (Ubuntu 7.5.0-3ubuntu1 ~ 18.04)

3. Обновите до 4.3 и проверьте.

4. @Gyan сделал, как вы предложили, теперь он застрял с такими сообщениями: дублировано более 1000 кадров, дублировано более 10000 кадров, дублировано более 100000 кадров…

5. Добавить -vsync 0 .