FFMPEG / libx264 : 가변 프레임 속도를 지정하지만 최대 값을 지정하는 방법은 무엇입니까?


16

FFMPEG / libx264 (-r / -framerate)에 고정 된 프레임 속도를 제공하는 대신 MAXIMUM 값으로 가변 프레임 속도를 지정하고 libx264가 프레임 속도를 적절하게 낮추도록합니다. 여기서의 아이디어는 확장 스틸 프레임과 같은 것이있을 때 추가 압축을 얻는 것입니다 ( 소스 비디오에서 많이 발생 합니다).

나는 예측 또는 양방향 MPEG 프레임이 실제로 잘 압축된다는 것을 알고 있지만, 소스 프레임 속도가 내가 트랜스 코딩하려는 것보다 낮을 수도 있습니다 (아마도 BIGGER 스트림을 초래할 수 있습니다!).


1
실제로 V264를 사용하도록 x264 자체에 어디에 (또는 어떻게) 말합니까?
slhck

그게 내 질문입니다.
Mark Gerolimatos

2
귀하의 질문은 VFR 을 최대 로 지정하는 방법이었습니다 . x264를 사용하여 VFR 인코딩을 지정하는 방법조차 모릅니다. (이 시점에서는 소스와 x264 사이의 다른 계층이기 때문에 ffmpeg에 대해서도 이야기하지 않습니다.)
slhck

@MarkGerolimatos 답을 찾았습니까?!
Dr.jacky

아니요
Mark Gerolimatos

답변:


19

답을 찾지 못했다는 것에 실망한 나는 적어도 FFMPEG에서 VFR (V B R 아님) 출력 을 활성화하는 방법에 대한 다른 사람들의 질문에 대답하려고했습니다 .

이에 대한 답은 이상한 이름의 -vsync옵션입니다. 몇 가지 다른 옵션으로 설정할 수 있지만 원하는 옵션은 '2'또는 vfr입니다. 매뉴얼 페이지에서 :

-vsync 매개 변수
비디오 동기화 방법. 호환성을 위해 이전 값을 숫자로 지정할 수 있습니다. 새로 추가 된 값은 항상 문자열로 지정해야합니다.

  • 0, 통과

    • 각 프레임은 타임 스탬프와 함께 디 먹서에서 멀티플렉서로 전달됩니다.
  • 1, CFR

    • 요청 된 일정한 프레임 속도를 정확하게 달성하기 위해 프레임이 복제 및 삭제됩니다.
  • 2, vfr

    • 두 프레임이 동일한 타임 스탬프를 갖지 않도록 프레임은 타임 스탬프와 함께 통과되거나 삭제됩니다.
  • 하락

    • 패스 스루이지만 모든 타임 스탬프를 파괴하므로 muxer는 프레임 속도에 따라 새로운 타임 스탬프를 생성합니다.
  • -1, 자동

    • muxer 기능에 따라 1과 2 중에서 선택합니다. 이것이 기본 방법입니다.

타임 스탬프는 이후에 muxer에 의해 추가로 수정 될 수 있습니다. 예를 들어, 형식 옵션 avoid_negative_ts 가 사용되는 경우.

-map을 사용하면 타임 스탬프를 찍을 스트림을 선택할 수 있습니다. 비디오 또는 오디오를 변경하지 않은 채로두고 나머지 스트림을 변경되지 않은 스트림과 동기화 할 수 있습니다.

그러나 나는 모든 사람들이 가지고있는 '하위 질문'에 대답하기 위해 의견을 게시 할만 큼 평판이 충분하지 않습니다. 그러나 나는 솔직히 매우 낙관적이지 않은 몇 가지 아이디어를 가지고 있었다. 그러나 내가 시도한 첫 번째 아이디어는 실제로 효과가 있었다 . 그래서.

물론 원하는 최대 프레임 속도로 대체 할 수 있는 -vsync 2옵션과 옵션 을 결합하면됩니다 . 그리고 작동합니다! 소스 파일에서 프레임을 복제하지 않지만 파일이 최대 프레임 속도를 초과하게하는 프레임을 삭제합니다!-r $maxfps$maxfps

기본적으로 -r $maxfps프레임 속도를 일정하게 유지하기 위해 프레임을 복제 / 삭제하는 것만 -vsync 2으로도 실제로 PTS 값에 영향을 미치지 않고 프레임을 직접 가져옵니다.

나는 이것이 -r $maxfps일정한 프레임 레이트에 있다는 것을 이미 알고 있기 때문에 이것에 대해 낙관적이지 않았습니다 . 나는 솔직히 오류가 있거나 첫 번째 또는 마지막 또는 어떤 것이 든 순종 할 것을 기대했습니다. 내가 원하는 것을 정확하게 수행한다는 사실은 FFMPEG 개발자들에게 매우 만족합니다.

더 이상 알 필요가 없으면 나중에 도움이 되길 바랍니다.


3
-copyts도움이 될 수도 있습니다
rogerdpack

1

MAXIMUM 값으로 가변 프레임 속도를 지정하고 libx264가 프레임 속도를 적절하게 줄 이도록 허용하고 싶습니다. 확장 스틸 프레임과 같은 것이있을 때 추가 압축을 얻는 것이 여기에 있습니다.

내 이해에 따르면, 이것은 아마도 어색한 방법 일 수 있지만 복잡하고 반 직관적 인 이유로 바람직하지 않습니다.

x264 스트림에는 프레임 속도가 있지만 프레임 속도는 코덱보다 컨테이너 수준 문제입니다.

패스 스루 VFR 인코딩에는 기본적으로 프레임 속도가 어떤 프레임 / 시간에 대한 것인지를 설명하는 텍스트 파일이 있으며 소스를 인코딩 할 때 tcfile-in 또는 tcfile-out과 같은 함수는 타임 스탬프를 인코딩으로 전달합니다. , 요율 위치를 매핑하고 소스와 동영상의 주관적인 일관성을 유지합니다.

낮은 프레임 속도 아이디어는 논리적 아이디어이지만 여러 가지 이유로 해결되지 않습니다. x264는 일부 기능을 가진 VFR을 인식하지만 파일 크기를 줄이기 위해 (많은 비트 레이트 컨트롤과 유사한 방식으로) 모션과 관련하여 프레임 레이트를 변경하는 분석 기능은 없다고 생각합니다.

VFR 소스는 기본적으로 프레임 가변성을 유지하지만 가변 비트 전송률로 CFR 파일을 인코딩하는 것 (텔레시네가 필요할 때 좋은 아이디어)은 단순히 동일한 CFR을 생성합니다.

즉, 손으로 비트 전송률을 다시 쓰거나 (예 : 파일에 느린 장면의 타임 스탬프) dup, dedup 및 avisynth와 같은 프레임 데시 메이션 알고리즘을 사용해야 합니다. 비디오의 움직임이 매우 낮은 경우 일부 프레임 (반쪽이라도)이 발생합니다. 문제는 이러한 알고리즘이 고급이 아니며 "실제"푸티지를 사용하여 최상의 인코딩에 기여할 항목을 선택하지 않는다는 것입니다.

또한 I 및 B 프레임과 같은 것을 포함하는 프레임을 제거하면 시간이 지남에 따라 사용 가능한 세부 정보의 양이 줄어들어 모션이 "단계적으로"보이고 다른 기본 비디오 매개 변수를 방해하고 앨리어싱과 같은 아티팩트가 발생할 수 있습니다.

그리고 양자화 기가 작동하는 방식으로 인해 x264는 이러한 저 모션 장면에서 실제로 비트 전송률을 불균형 적으로 더 줄입니다. 동일한 이미지의 슬라이드 쇼가 없으면 모션 (그레인 및 기타 아티팩트 만있는 경우)이 발생하며 비트 전송률을 크게 변경하지 않으면 품질이 떨어집니다.

마지막으로, 원하는 것을 수행하는 옵션이 많지 않은 이유는 x264가 시간 압축을 사용하여 비트 전송률을 관리하는 데 실제로 우수하기 때문입니다 (부분 프레임에 변경 내용 기록). 1/2 프레임 속도로 이동해도 파일 크기가 반으로 줄어드는 것은 아닙니다. 10 %는 아마도 모션이 낮거나 애니메이션에서 기대할 수있는 현실적인 이득 일 것입니다.

간단히 말해서 정적 장면의 비트 전송률을 낮추면 파일 크기에 거의 영향을 미치지 않지만 비디오 편집 소프트웨어와의 비 호환성에는 말할 것도없고 많은 품질 및 동기화 문제가 추가됩니다.

데시 메이터를 사용하려면 레벨 옵션 을 사용하여 최대 새 프레임 속도를 제한 할 수 있습니다 . 각 옵션 은 최대 해상도 및 프레임 속도입니다. 불행히도 프로파일을 사용하여 원하는 프레임 속도를 얻으려면 매우 낮은 해상도에서 작업해야 할 것입니다. 전체적으로 또는 너무 높은 프레임 속도를 수정하기 위해 수동으로 속도를 편집 할 수 있습니다. 어느 쪽이든, tcfile이 보존 될 때 인코딩 프로세스 후에 변경이 발생하면 사운드가 새로운 프레임 속도와 동기화되도록 저글링해야합니다.

많은 비트 전송률 설정을 최적화하는 데 시간을 소비하면 파일 크기 관리 방식이 훨씬 향상되고 작은 이득을 위해 합병증을 유발하지 않고 비디오 품질이 향상됩니다. 방송 또는 미디어 표준을 목표로하지 않는 한 원래 FPS를 유지하는 것이 가장 좋습니다. 플레이어는 다양한 비트 전송률 (편집기와 달리)을 재생할 수 있으며 비디오의 프레임 수가 많을수록 프레임 간 움직임의 변화가 작기 때문에 재생이 매끄럽고 파일 크기가 작아집니다.

다음은 인코딩의 혼란스러운 측면에 도움이되는 표준 정보 및 포럼 토론에 대한 링크 모음입니다.

- 아비 신스 데시 메이션 도구

- FPS와 -r 스위치
- x264 일반 (tcfile, FPS)
- 타임 코드 파일 표준
- 레벨 및 프로파일
- 짧은 분명 CFR / VFR 설정 요약 ( "프레임 속도"섹션)

doom9, videohelp, & c 이론 토론
1 2 3 4 5 6 7

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.