슬로우 모션 적용 후 비디오 지속 시간 찾기

슬로우 모션 적용 후 비디오 지속 시간 찾기

일련의 비디오에 슬로우 모션 효과를 적용하려고 합니다. 또한 해당 비디오의 크기가 조정되고, 패딩되고, 크로스페이드됩니다. 다음은 슬로우 모션을 적용하는 데 사용하는 명령입니다.

ffmpeg -i 1.mp4 -filter_complex "
[0:v]trim=0:5,setpts=PTS-STARTPTS[tv1];
[0:v]trim=5:7,setpts=PTS-STARTPTS[tv2];
[0:v]trim=start=7,setpts=PTS-STARTPTS[tv3];
[tv2]setpts=PTS*2[slow];
[tv1][slow][tv3]concat=n=3:v=1:a=0[out]" -map [out] -c:v libx264 test.mp4

두 가지 질문이 있습니다.

  1. [tv2]트림을 해서 5초부터 슬로우모션 효과를 적용했는데 실제로는 4초부터 효과가 적용되는 것을 볼 수 있습니다 . 그 이유는 무엇입니까?

다음은 위 명령어를 연결한 후 바로 다른 처리를 위해 사용하고 있는 명령어입니다.

[concat0]scale=iw*min(1280/iw\,720/ih):ih*min(1280/iw\,720/ih),pad=1280:720:(1280-iw*min(1280/iw\,720/ih))/2:(720-ih*min(1280/iw\,720/ih))/2,format=pix_fmts=yuva420p,fade=t=out:st=16:d=2:alpha=1,setpts=expr=PTS-STARTPTS+10/TB[va0];

거기에서 를 지정해야 하며 setpts현재 비디오 이전의 비디오의 누적 지속 시간을 사용하고 있습니다.여기내가 사용하는 완전한 명령입니다.

  1. 슬로우 모션 효과를 적용한 후 비디오의 지속 시간을 어떻게 계산합니까? 예를 들어 여기서 언급한 첫 번째 명령의 비디오 결과 지속 시간은 몇 초 또는 마이크로초 단위로 증가합니까?

답변1

질문 1- 명령을 고려하지 않았기 때문에 명령이 불완전합니다.오디오트랙에서만 PTS를 변경했습니다.동영상길. 차이점을 확인하려면 다음을 시도해 보세요.

# no-good, starts from 4th second audio with a frozen video frame
ffmpeg -i in.mp4 -vf trim=5:7 out.mp4
#
# works as expected, both audio and video start at 5th second
ffmpeg -i in.mp4 -vf trim=5:7 -af atrim=5:7 out.mp4

질문 2- 이 역시 같은 이유로 예상대로 작동하지 않습니다. 하지만 이전 문제를 수정한 후에는 "이전"과 "이후" 시간을 연관시키는 그다지 우아하지는 않지만 효과적인 트릭이 있습니다.

# overlay the input video with a timer, pulled to the right 200 pixels
ffmpeg -i in.mp4 -f lavfi -i testsrc=n=3 -vf overlay=x=200 in-with-time.mp4
#
# do all your manipulation, and finaly overlay with another timer at x=0
ffmpeg -i in-with-time.mp4 -f lavfi -i testsrc=n=3 -filter_complex "..stuff...,overlay[out]" out.mp4

이는 프레임당 원본 시간과 결과 시간을 1밀리초의 정확도로 제공합니다.

관련 정보