
다른 비디오 overlay.mp4를 배경 비디오 위에 작은 직사각형으로 오버레이하면서 background.mp4 비디오를 재생하려고 합니다. 오버레이 비디오가 지연되어야 합니다.
ffmpeg를 찾아 다음 명령을 빌드했습니다.
ffmpeg -i background.mp4
-i overlay.mp4
-filter_complex "[1]setpts=PTS-STARTPTS+162/TB, scale=512:288 [over];
[0][over] overlay=748:412 [outv];
[1:a]adelay=162000|162000 [audio];
[0:a][audio] amix [outa]"
-map "[outv]"
-map "[outa]"
-codec:v libx264
-crf 21
-bf 2
-flags +cgop
-pix_fmt yuv420p
output.mp4
이렇게 하면 내가 원하는 방식으로 비디오가 성공적으로 병합됩니다. 그런데 오버레이된 영상이 끊깁니다.많이(최대 30초 정지) 배경 비디오는 정상적으로 재생됩니다.
콘솔에는 "버퍼 큐 오버플로, 삭제 중"이라는 메시지가 많이 표시됩니다.
나는 이것을 온라인으로 검색한 결과 fifo 버퍼를 추가해야 한다는 것을 알았습니다. 그래서 나는 다음을 시도했습니다.
ffmpeg -i background.mp4
-i overlay.mp4
-filter_complex "[1]fifo, setpts=PTS-STARTPTS+162/TB, scale=512:288 [over];
[0][over] overlay=748:412 [outv];
[1:a]adelay=162000|162000 [audio];
[0:a][audio] amix [outa]"
-map "[outv]"
-map "[outa]"
-codec:v libx264
-crf 21
-bf 2
-flags +cgop
-pix_fmt yuv420p
output.mp4
그러나 이 명령은 성공적으로 완료되지 않습니다. 약 60초의 비디오 시간이 지나면 "Killed"라는 메시지와 함께 중단됩니다.
나는 이것이 기억력 부족 때문이라고 생각하지만 확실하지 않습니다. 이제 어떻게 해야 하나요? 오버레이된 비디오가 배경 비디오와 (적어도 대략) 동일한 프레임 속도를 갖도록 비디오를 성공적으로 오버레이하는 방법에 대한 아이디어가 있습니까?