FFMPEG / libx264 (-r / -framerate)에 고정 프레임 속도를 제공하는 대신 MAXIMUM 값으로 가변 프레임 속도를 지정하고 libx264가 적합하다고 판단되는 프레임 속도를 낮추도록 허용하고 싶습니다. 여기의 아이디어는 확장 된 스틸 프레임과 같은 것이있을 때 추가 압축을 얻는 것입니다 ( 제 소스 비디오에서 많이 발생 ).
예측 또는 양방향 MPEG 프레임이 정말 잘 압축된다는 것을 알고 있지만 소스 프레임 속도가 트랜스 코딩하려는 프레임 속도보다 작을 수도 있습니다 (아마도 스트림이 더 커질 수 있습니다!).
당신은 내가 적어도 대답에 VFR (안 V 사용하도록 설정하는 방법에 대한 다른 사람들의 질문에가는 어느 답을 찾을 수 없음했다고 좌절 B FFMPEG에서 R) 출력을.
이에 대한 답은 이상한 이름의 -vsync
옵션입니다. 몇 가지 다른 옵션으로 설정할 수 있지만 원하는 옵션은 '2'또는 vfr
. man 페이지에서 :
-vsync 매개 변수
비디오 동기화 방법. 호환성을 위해 이전 값을 숫자로 지정할 수 있습니다. 새로 추가 된 값은 항상 문자열로 지정해야합니다.
0, 통과
- 각 프레임은 demuxer에서 muxer로 타임 스탬프와 함께 전달됩니다.
1, 참조.
- 요청 된 고정 프레임 속도를 정확히 달성하기 위해 프레임이 복제 및 삭제됩니다.
2, vfr
- 프레임은 2 개의 프레임이 동일한 타임 스탬프를 가지지 않도록 타임 스탬프와 함께 전달되거나 삭제됩니다.
하락
- 패스 스루로 모든 타임 스탬프를 파괴하므로 muxer가 프레임 속도에 따라 새로운 타임 스탬프를 생성합니다.
-1, 자동
- muxer 기능에 따라 1과 2 중에서 선택합니다. 이것이 기본 방법입니다.
타임 스탬프는 이후 muxer에 의해 추가로 수정 될 수 있습니다. 예를 들어, 형식 옵션 avoid_negative_ts 가 활성화 된 경우입니다.
-map을 사용하면 타임 스탬프를 가져올 스트림을 선택할 수 있습니다. 비디오 또는 오디오를 변경하지 않고 그대로두고 나머지 스트림을 변경되지 않은 스트림에 동기화 할 수 있습니다.
그러나 나는 모두가 가지고있는 것 같은 '하위 질문'에 답하기 위해 댓글을 올릴만큼 평판이 충분하지 않다. 하지만 솔직히 낙관적이지 않은 몇 가지 아이디어가있었습니다.하지만 제가 시도한 첫 번째 아이디어는 실제로 효과가 있었습니다. 그래서.
물론 원하는 최대 프레임 속도로 대체 하는 -vsync 2
옵션과 옵션 을 결합하기 만하면됩니다 ! 그리고 작동합니다! 소스 파일에서 프레임을 복제하지는 않지만 파일이 최대 프레임 속도를 초과하는 프레임을 드롭합니다!-r $maxfps
$maxfps
기본적 -r $maxfps
으로 자체적으로 프레임을 복제 / 드롭하여 일정한 프레임 속도를 달성하고 -vsync 2
그 자체로 PTS 값에 실제로 영향을주지 않고 프레임을 직접 끌어 당기는 것처럼 보입니다 .
나는 이미 -r $maxfps
그것이 일정한 프레임 속도를 유지 한다는 것을 알고 있었기 때문에 이것에 대해 낙관적이지 않았습니다 . 나는 정직하게 오류가 있거나 그것이 처음이든 마지막이든 또는 무엇이든간에 순종하기를 기대했습니다. 내가 원하는 것을 정확히 수행한다는 사실은 FFMPEG 개발자들에게 매우 만족스러워합니다.
이 정보가 더 이상 알 필요가 없다면 나중에 다른 사람에게 도움이되기를 바랍니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다