비디오에 이미지를 오버레이하고 특정 간격 동안 비디오와 오디오를 일시 중지합니다.

비디오에 이미지를 오버레이하고 특정 간격 동안 비디오와 오디오를 일시 중지합니다.

오버레이 기간 동안 오디오 및 비디오를 일시 중지할 수 있습니까? 오디오가 일시 중지되면 해당 간격 동안에만 새 오디오 트랙을 추가할 수 있습니까? 원본 오디오를 재생해야 하는 남은 시간입니다.

예를 들어,

아래 언급된 명령을 사용하여 비디오에 여러 이미지를 오버레이하기 위해 ffmpeg를 사용하고 있습니다.

ffmpeg -i 2.mp4 -i 장갑.png -i 양말.png -filter_complex "[1:v]scale=320:240 [ovrl]; [0:v][ovrl]overlay=y=Hh:enable=' between(t,3,8)'[v1];[2:v]scale=320:240 [ovrl1];[v1][ovrl1]overlay=y=Hh:enable='between(t,15,20) '[v2]" -map "[v2]" -map 0:a -c:a outputVideo.mp4 복사

이제 3~8초 사이에 비디오와 오디오를 일시 중지하고 3~8초 동안만 새 오디오를 재생하고 남은 시간 동안 이전 오디오를 계속해야 합니다.

친절하게 도와주세요.

답변1

오디오 및 비디오를 일시 중지하려면 loop스트림을 사용하거나 PTS를 오프셋하면 됩니다.

루핑 스트림

loop=loop={len_frames}:size=1:start={pos_frames},setpts=N/FRAME_RATE/TB

여기서 는 {len_frames}프레임 단위의 루프 길이이고 는 {pos_frames}프레임 단위의 일시 중지 위치입니다. 비디오의 프레임 속도를 얻고 여기에 선택한 길이 및 타임스탬프(초)를 곱하여 이러한 숫자를 계산할 수 있습니다.

aloop각각 및 를 사용해야 하는 오디오 부분 asetpts과 샘플링 속도(Hz)도 마찬가지입니다. 또한 를 설정하여 오디오를 음소거해야 합니다 volume=0.

반복되는 비디오 및 오디오 스트림은 원본보다 길어지므로 해당 스트림에 오버레이를 표시할 수 있습니다.

이러한 명령은 함께 사용하기가 다소 복잡하므로 다음과 같이 작성했습니다.파이썬 프로그램비디오와 오디오가 일시 정지된 동안 "버퍼링" 표시기를 삽입합니다. 루프 명령이 어떻게 생성되는지 확인할 수 있습니다.여기.

PTS에 대한 오프셋

Gyan을 참조하세요여기에 대답하세요, 기본적으로 다음을 수행합니다.

setpts='PTS+gte(T\,{start_time})*({shift}/TB)'

와 결합됩니다 -vsync vfr. 여기서 {start_time}는 프레임이 오프셋되는 시간이고 {shift}는 적용된 이동입니다.

오디오 이동

특정 시간 간격 동안 오디오를 재생하는 경우 다음을 수행할 수 있습니다.-itsoffset입력 옵션을 사용하세요시작을 상쇄합니다.

또는 필터를 사용하여 고정된 양으로 오디오 스트림의 PTS를 상쇄합니다 asetpts.

관련 정보