한 번만 더 해보자

[ffmpeg] 시간 정확히 자르기 본문

Linux

[ffmpeg] 시간 정확히 자르기

정 하임 2024. 1. 11. 21:49

ffmpeg을 사용하다 보면 1분을 자르라고 했는데 정확히 잘리지 않는 경우가 있다

-force_key_frames expr:gte(t,n_forced*1) 옵션을 사용하면 시간을 정확히 자를 수 있다

-force_key_frames expr:gte(t,n_forced*1) 옵션은 강제로 I-프레임을 설정하는데 사용한다

ffmpeg -y -ss 0:11:00 -i [input_path] -force_key_frames 'expr:gte(t,n_forced*1)' -t 00:01:00 -c:v copy -c:a copy [output_path]

 

 

 

추가설명

영상 압축에서 프레임은 비디오의 각 정지 이미지를 나타낸다. 두 가지 주요 유형의 프레임이 있다: I-프레임(Intra-frame)과 P-프레임(Predictive-frame).

  1. I-프레임 (Intra-frame):
    • I-프레임은 다른 프레임에 의존하지 않고 독립적으로 인코딩된 프레임이다
    • I-프레임은 비디오의 키 프레임으로, 디코딩하는 데 필요한 정보가 담겨 있다.
    • I-프레임은 화면의 특정 순간의 정지 이미지를 나타낸다.
  2. P-프레임 (Predictive-frame):
    • P-프레임은 이전 프레임과의 차이를 나타내는데, 주로 이전 I-프레임이나 P-프레임에 기초하여 예측된 내용을 포함한다.
    • P-프레임은 압축을 위해 실제 픽셀 데이터를 저장하지 않고 차이 정보를 저장함으로써 데이터를 줄인다.

I-프레임은 다른 프레임에 비해 상대적으로 더 많은 데이터를 가지고 있기 때문에, 영상을 자를 때 I-프레임을 기준으로 자르면 정확한 길이를 얻을 수 있다. 앞서 언급한 -force_key_frames 옵션을 사용하면 특정 시간에 I-프레임을 강제로 생성하여 자를 때 정확한 길이를 유지할 수 있다.

반응형