HandbrakeCLI 옵션을 FFmpeg 옵션으로 어떻게 변환합니까?


13

핸드 브레이크에 사용할 수있는 많은 명령 줄 설정이 있지만 때로는 일부 비디오에서 (왜 그런지 모르겠습니다) 핸드 브레이크에 "메모리 부족 예외"가 발생합니다. 동일한 옵션 키를 찾아 FFmpeg로 할 수 있는지 궁금하지만 그렇게 쉬운 일이 아닌 것 같습니다.

FFmpeg는 때때로 이러한 옵션이 없거나 기본적으로 작동합니다. 예를 들어 FFmpeg로 사용자 지정 아나모픽을 수행하는 방법을 모르겠습니다. 나에게 매우 중요한 것은 결과적인 비디오가 마치 수동 브레이크로 끝나는 것처럼 좋을 것입니다. 핸드 브레이크 라인은 다음과 같습니다.

HandBrakeCLI.exe --input "d:\input.mpg" --output "d:\output.mp4" --rate 29.97 --cfr --arate 44.1 --format mp4 --width 1920 --height 1080 --custom-anamorphic --display-width 1920 --keep-display-aspect --modulus 8 --crop 0:0:0:0 --encoder x264 --vb 5200 --aencoder faac --ab 128 --mixdown stereo -x bitrate=5200:vbv-bufsize=5200:vbv-maxrate=5200:level=42:bframes=2:min-keyint=60:keyint=60:ref=4:me=umh:merange=64:subme=7:8x8dct:cabac=1  -v3 -2 -a none

이것을 FFmpeg 명령으로 바꾸려면 어떻게해야합니까?

답변:


20

핸드 브레이크는 비디오 변환에 x264 인코더를 사용합니다. 모든 x264 옵션 및 FFmpeg 대응에 대한 개요가있는 사이트가 있습니다 . 그러나 이것들은 조금 더 이상 사용되지 않으며 이러한 옵션 중 일부는 더 이상 작동하지 않거나 이름이 변경되었을 수 있습니다. 대부분의 세부 옵션에는 x264 프로파일을 사용해야합니다.

많은 기본 핸드 브레이크 옵션 (예 : 프레임 속도)은 x264에만 국한되지 않으며 FFmpeg 온라인 설명서에 흩어져 있습니다 .

시작하기 전에 최신 FFmpeg 버전을 사용하고 있는지 확인하십시오. 그들의 다운로드 사이트는 모든 주요 운영 시스템 구축 정적이있다.

가자:

  • --input "d:\input.mpg" --output "d:\output.mp4"

    FFmpeg 구문은 ffmpeg -i input.mpg … d:\output.mp4입니다.

  • --rate 29.97

    로 비디오 프레임 속도를 지정하십시오 -r 29.97. (Handbrake는 --cfr단지 일정한 프레임 속도를 설정합니다. 여기서는 필요하지 않습니다).

  • --arate 44.1

    -ar 44100(Hz 단위)로 오디오 샘플 속도를 설정하십시오 .

  • --format mp4

    FFmpeg는 MP4를 원하기 때문에 필요하지 않습니다.

  • --width 1920 --height 1080 --custom-anamorphic --display-width 1920 --keep-display-aspect --modulus 8 --crop 0:0:0:0

    이것은 크기를 1920 × 1080으로 설정하는 것 외에는 아무 것도하지 않습니다. FFmpeg에서을 -s:v 1920x1080사용하거나 필터를 사용하려면 -filter:v "scale=1920:1080".

  • --encoder x264 --vb 5200

    로 인코더와 -c:v libx264비트 전송률을로 일정하게 설정하십시오 -b:v 5200K. 품질 설정에 관해서는 아직 없습니다.

  • --aencoder faac --ab 128 --mixdown stereo

    위와 유사합니다 -c:a libfaac -b:a 128K -ac 2. FAAC는 더 이상 FFmpeg에서 지원되지 않습니다. 대신 내장 FFmpeg 인코더를 -c:a aac -b:a 128K대신 사용하십시오.

  • -x bitrate=5200:vbv-bufsize=5200:vbv-maxrate=5200

    인코딩 모드를 VBV로 설정하면 일정한 비트 전송률이나 일정한 품질 대신 스트리밍 시나리오를 대상으로합니다. 일정한 품질은 x264의 기본값 인 CRF 라고도하며 핸드 브레이크에서는“Rate Factor”라고합니다. CRF는 일반적으로 최고 품질의 인코딩을 제공하지만 VBV 모드는 온라인 스트리밍 또는 기능이 제한된 특정 장치에 더 적합한 파일을 제공합니다.

    VBV를 설정하려면 ffmpeg 의 -maxrate 5200K-bufsize 5200K옵션을 사용하십시오 .

    CRF를 설정하려면 -crf 23ffmpeg 에서 사용하십시오 .

  • level=42

    사용하십시오 -level 42. 이것이 H.264 레벨 입니다.

  • bframes=2:min-keyint=60:keyint=60:ref=4

    로 B- 프레임 수를 설정하십시오 -bf 2. 최소 키 프레임 간격은로 설정되고 -keyint_min 60최대 간격 은로 설정 됩니다 -g 60. 참조 사진 수는로 설정됩니다 -refs 4.

  • me=umh:merange=64:subme=7:8x8dct:cabac=1

    -x264-params me=umh:merange=64:subme=7:8x8dct:cabac=1ffmpeg 옵션에 직접 매핑되지 않은 다른 x264 인코더 설정과 마찬가지로 ffmpeg에서 추가로 설정할 수있는 옵션입니다.

    게 으르거나 세부 사항에 신경 쓰지 않거나 작동하지 않는 경우 "TL; DR"버전입니다. 사용 -preset:v medium(또는 중간 사전 설정이 기본값이므로 그대로 두십시오). x264 사전 설정은 압축 효율을 위해 인코딩 속도를 바꾸는 옵션 세트를 선택합니다. 그들은 편리에서 이름있는 ultrafast, superfast, veryfast, faster, fast, mediumslow, slowerveryslow. 편안하다고 느끼는 것을 선택하십시오.

요약하면 긴 버전은 다음과 같습니다.

ffmpeg -i input.mpg -c:v libx264 -r 29.97 -s:v 1920x1080 -b:v 5200K -maxrate 5200K -bufsize 5200K -level 42 -bf 2 -keyint_min 60 -g 60 -refs 4 -x264-params me=umh:merange=64:subme=7:8x8dct:cabac=1 -c:a aac -b:a 128K -ar 44100 d:\output.mp4

또는 내가 사용하는 짧은 것 (VBV 인코딩 및 몇 가지 세부 옵션이 제거 된 상태) :

ffmpeg -i input.mpg -c:v libx264 -r 29.97 -s:v 1920x1080 -b:v 5200K -maxrate 5200K -bufsize 5200K -c:a aac -b:a 128K -ar 44100 d:\output.mp4

다목적 변환을 위해 일정한 품질의 인코딩으로 변경하려면 이것을 사용하고 -crf매개 변수를 18에서 28로 변경하십시오 .

ffmpeg -i input.mpg -c:v libx264 -r 29.97 -s:v 1920x1080 -crf 23 -c:a aac -b:a 128K -ar 44100 d:\output.mp4

Haha @slhck, 내가 대답을 마무리 짓는 것처럼 당신은 가서 더 나은 것을 줄 것입니다.
evilsoup 2013
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.