FFmpeg의 “-vb”및 “minrate”/ “maxrate”설정을 사용한 가변 비트 전송률 시간 소요 무엇

렌더링에 걸리는 시간은 매우 다릅니다.

  • -b 3500K -minrate 0K -maxrate 8000K 1 시간 17 분 소요
  • vb=3000k 2.5 시간 소요

무엇 vb 3000k이며 어떻게 -b 3500K -minrate 0K -maxrate 8000K다릅니 까? 이 가변 비트 전송률 설정입니까?

로 변경하면 -b 3500K -minrate 3500K -maxrate 3500K고정 비트 전송률입니까?



답변

제발 문서 읽기 는 FFmpeg를 들어, 실행 ffmpeg -h full옵션의 목록. 또한 x264 및 x265와 같은 인코더의 속도 제어 모드 간의 차이점 을 보여주는이 기사를 살펴 보십시오.

일반적으로 옵션의 의미는 다음과 같습니다.

  • -b:v(또는 -vb동일) 인코더가 사용할 대상 평균 비트 전송률을 지정합니다.

    -b <int> E..VA. 비트 전송률 설정 (비트 / 초) (0에서 INT_MAX까지)

  • -minrate 사용할 최소 공차를 지정합니다.

    -minrate <int> E..VA. 최소 비트 전송률 허용 (비트 / 초)을 설정하십시오. CBR 인코딩을 설정하는 데 가장 유용합니다. 그렇지 않으면 거의 쓸모가 없습니다. (INT_MIN에서 INT_MAX까지)

  • -maxrate최대 공차를 지정합니다. 그러나 설명서에서 알 수 있듯이 이것은 다음과 함께 사용됩니다 bufsize.

    -maxrate <int> E..VA. 최대 비트 레이트 허용 오차를 설정하십시오 (비트 / 초). bufsize설정 해야합니다 . (INT_MIN에서 INT_MAX까지)

    -bufsize <int> E..VA. ratecontrol 버퍼 크기 설정 (비트) (INT_MIN에서 INT_MAX까지)

    이는 고정 비트 레이트 또는 고정 품질 모델을 사용하는 대신 인코더에서 가상 버퍼로 전송을 시뮬레이션하는 가변 비트 레이트 인코딩에만 적합합니다. -minrate/ -maxrate/ -bufsize옵션은 버퍼 크기를 제어한다. 이 기술은 디코더 버퍼가 오버플로 또는 언더 플로되는 특정 값을 초과하지 않도록 비트 전송률을 제한하므로 일반적으로이 모드 만 스트리밍에 사용합니다.

요약하면 비트 전송률을 제한하는 몇 가지 옵션이 있습니다.

  1. CBR 프로세스를 설정하려면 인코더가 제공하는 것을 확인해야합니다. 일반적으로 인코더는 비트를 낭비하지 않기 때문에 “완벽한”고정 비트 전송률을 달성 할 수 없습니다. 설정 -b:v, -minrate-maxratelibx264 예를 들어, 그것을 달성 동일한 수준 :

    ffmpeg -i input.mp4 -c:v libx264 -x264-params "nal-hrd=cbr" -b:v 1M -minrate 1M -maxrate 1M -bufsize 2M output.ts
    

    경고 : 인코딩하기 어려운 비디오의 품질이 떨어질 수 있으며 비트가 낭비 될 수 있습니다. 일정한 속도로 출력해야하는 경우가 아니면이 옵션을 사용하지 마십시오.

  2. 스트리밍을 위해 제한된 / 가변 비트 레이트 프로세스를 설정하십시오. -b:v 3500K -maxrate 3500K -bufsize 1000K예를 들어을 사용하십시오 . 속도와 버퍼 크기를 컨텍스트에 맞게 조정해야합니다. 버퍼 크기가 클수록 허용되는 비트 전송률 변화가 더 큽니다.

  3. 일정한 품질의 대상을 사용하고 스파이크 만 포착하도록 비트 전송률을 제한하십시오. 예를 들어 -c:v libx264 -crf 23 -maxrate 4M -bufsize 4M대상 CRF가 23 인 가변 비트 전송률로 인코딩하는 데 사용 하지만 출력을 최대 4MBit / s로 제한합니다.