ffmpeg: 프레임을 추출하고 정확한 타임스탬프를 얻습니다.

ffmpeg: 프레임을 추출하고 정확한 타임스탬프를 얻습니다.

프레임을 추출하려고 합니다.가변 프레임 속도5초마다 비디오를 전송하고 추출된 각 프레임의 정확한 타임스탬프를 가져옵니다. 이것이 내가 지금까지 가지고 있는 것입니다:

-i inputfile -vstats_file vstats.log  -vsync 2 -vcodec png -r 0.2 -f image2pipe -

그리고 이것이 내가 얻는 것입니다:

frame=     1 q= 0.0 f_size= 136261 s_size=      133kB **time= 5.000** br=   218.0kbits/s avg_br=   218.0kbits/s type= I
frame=     2 q= 0.0 f_size= 139382 s_size=      269kB **time= 10.000** br=   223.0kbits/s avg_br=   220.5kbits/s type= I
frame=     3 q= 0.0 f_size= 141631 s_size=      407kB **time= 15.000** br=   226.6kbits/s avg_br=   222.5kbits/s type= I

추출에 사용된 프레임의 정확한 타임스탬프가 필요하므로 나중에 생성된 썸네일을 기반으로 비디오를 정확하게 잘라낼 수 있습니다.

또한 vstats를 파일이 아닌 stdout으로 인쇄하는 방법이 있습니까?

답변1

당신이 무엇을 하려고 했는지는 잘 모르겠지만, 효과가 있었다면 괜찮습니다...

어쨌든, 프레임을 건너뛰는 데 사용했을 것입니다선택하다비디오 필터(libavfilter가 활성화되어 있는지 확인). 프레임 정보를 위해 나는 사용했을 것입니다쇼윈포비디오 필터.

명령은 다음과 같아야 합니다.

ffmpeg -i inputfile -vf '[in]select=not(mod(n\,150))[s1];[s1]showinfo[out]' -vcodec mpeg2video outputfile

(여기서 150프레임은 5초 * 30fps입니다)

관련 정보