실제로 FFmpeg 1.0에서 작동하는 치트 시트 및 사전 설정?


28

다른 곳에서 구할 수있는 많은 '치트 시트'를 시도했지만 거의 모두 구식이며 최신 버전의 FFMpeg에서는 작동하지 않습니다.

누구든지 최신 FFMpeg에서 작동하는 설정을 알려줄 수 있습니까?

나는 주로 다음 코덱에 관심이 있습니다

H.264, 저 중고 품질 사전 설정

만큼 잘

ProRes, 저 중고 품질 사전 설정

답변:


49

FFmpeg는 더 이상 libx264에 대한 텍스트 파일 기반 사전 설정 및 프로파일, 즉 -vpre옵션 과 함께 사용한 것을 포함하지 않습니다 . 이러한 프로파일 (및 곡)를 가진 실제 x264 사전 설정을 액세스 찬성 감가 상각 및 제거 된 -preset, -profile:v-tune옵션을 제공합니다. 이전 텍스트 파일은 공식 x264 사전 설정 및 프로필 만 에뮬레이트했으며 몇 가지 제한 때문에 새 시스템이 제공하는 모든 기능을 제공 할 수 없었습니다. 유지 관리가 훨씬 쉽습니다.

또한 많은 인코더에는 자체 옵션이 있습니다. "개인 옵션"이라고도합니다. FFmpeg 온라인 설명서에서 일반적인 코덱 의 오디오비디오 인코더 옵션 을 살펴 보거나 ffmpeg -h full지원되는 옵션의 전체 목록을 보려면 출력을 확인해야합니다 . 예를 들어, x264는 옵션을 libx264 AVOptions전체 도움말 출력에 나열합니다 .

ffmpeg가 지원하는 -preset경우 텍스트 파일 사전 설정을 사용하지 않아야하며 FFmpeg는 일부 비표준 iPod 사전 설정 이외의 다른 제품과 함께 제공되지 않습니다. 텍스트 사전 설정을 어디서나 간단하게 복사하여 ffmpeg와 함께 사용할 수 있다는 것은 일반적으로 오해입니다. 이것은 사실이 아니며 파손될 수 있습니다.


기본적으로 사전 설정을 통해 다음 작업을 수행 할 수 있습니다.

품질 관리

품질은 -b:v비디오를 통해 또는 -b:a오디오를 위해 비트 전송률을 지정하거나 코덱이 지원할 수있는 다른 인코딩 방법을 지정하여 제어됩니다.

x264에는 다양한 인코딩 방법이 있으며, Constant Rate Factor 방법이 가장 정교합니다. 비트 전송률은 가변적이지만 단일 패스에서 전체적으로 좋은 품질을 제공합니다. CRF 값의 범위는 0-51이지만 소스와 원하는 품질에 따라 제정 된 값은 19와 26 사이입니다. 23이 기본값이므로 예를 들어 "고품질"은 18, "저품질"은 28을 선택할 수 있습니다.

ffmpeg -i input.mp4 -c:v libx264 -crf 23 output.mp4

x264 에는 다른 인코딩 방법 도 있지만 여기에서는 다루지 않습니다.

H.264 프로파일 구속

이러한 프로파일은 인코더가 특정 디코더의 기능을 일치시키기 위해 사용할 수있는 기능 세트를 정의합니다. 최근는 FFmpeg에서 프로파일이 될 수있는 프로파일을 지정하려면 다음 구문을 사용 baseline, main또는 high:

ffmpeg -i input.mp4 -c:v libx264 -profile:v baseline output.mp4

자세한 정보와 언제 어떤 프로파일을 사용해야하는지 : H.264 프로파일의 차이점은 무엇입니까?를 참조하십시오.

x264 인코딩을 선택하십시오 preset

이 사전 설정은 인코딩 속도에 영향을줍니다. 더 느린 사전 설정을 사용하면 더 나은 압축 또는 파일 크기 당 품질을 제공하는 반면, 더 빠른 사전 설정을 사용하면 압축이 악화됩니다. 일반적으로 기다릴 수있는 사전 설정 만 사용해야합니다. 사전 설정 될 수있다 ultrafast, superfast, veryfast, faster, fast, medium(기본), slowveryslow. 예를 들면 다음과 같습니다.

ffmpeg -i input.mp4 -c:v libx264 -preset slow output.mp4

무손실 비디오 인코딩

CRF를 0으로 지정하면 가능합니다 -crf 0.

ffmpeg -i input.mp4 -c:v libx264 -crf 0 output.mp4

마지막으로 ProRes에 대해 빠르게 이야기 해 봅시다. ProRes는로 고정 비트 전송률을 허용하거나 -b:v프로파일을 지정할 수 있습니다.이 프로파일 은 0에서 3 사이의 값 이어야합니다 . 여기서 비트 전송률은 프로파일에 따라 선택됩니다. 높을수록 좋습니다.

ffmpeg -i input.mp4 -c:v prores -profile:v 0 output.mov

ffmbc는 위키 프로파일의 이름이 사용될 수 있음을 시사한다 - 그러나 이것은 FFmpeg은 1.0 실패합니다.


전환 실패의 가능성을 줄이기 위해 어떻게해야합니까? 무작위로 발생하는 경우도 있고 때로는 발생하지 않는 경우도 있습니다.
FlyingAtom

@FlyingAtom 아직 "전환 실패"에 대해 들어 보지 못했습니다. 당신이 재현 문제와 특정 질문이있는 경우, 새로운 질문을하십시오 superuser.com/questions/ask
slhck

만약 당신이 공급 한 모든 것이 있다면 무엇을 효과적으로 끝내 ffmpeg -i input.mp4 -c:v libx264 output.mp4겠습니까? crf : 23 및 프리셋 : 중간?
Drazen Bjelovuk

1
@Drazen 네, 맞습니다.
slhck

건배! -------
Drazen Bjelovuk

20

.mp4CRF 값 범위 (18, 21, 24 및 27)에서 모든 사전 설정 값 (위약 제외)을 사용하여 소니 캠코더의 고품질 비디오 를 (libx264 인코딩을 사용하여 ) 고품질 비디오로 트랜스 코딩 했습니다. ). 인코딩 속도, 출력 품질 및 파일 크기의 최상의 조합을 제공하는 것이 무엇인지 알고 싶었습니다.

각 CRF 값에 대해 각 트랜스 코드 작업에 해당 인코딩 시간에 대한 점수를 부여했습니다 (예 : CRF = 18의 경우 사전 설정 값 5.7 초의 초고속 시간은 5.7 초, 1.0은 매우 느림, 162 초는 0, 매우 높음) 다른 점수는 사이에 확장됩니다). 출력 파일 크기 점수도 비슷하게 계산했으며 물론 가장 작은 파일에 최고 점수를주었습니다. 그런 다음 "결합 된"속도 / 크기 점수에 대해 두 개의 점수를 추가했습니다.

4 가지 CRF 값 각각에 대해 "매우 빠른"사전 설정은 1.94 (CRF 18 및 21의 경우), 1.96 (CRF 24) 및 1.97 (CRF 27)의 거의 완벽한 점수를 가진 핸드 다운 승자였습니다. "매우 빠름"이 매번 가장 작은 파일 크기를 생성 하여 "매우 느림"으로 만 잃어버린 적이 없다는 점이 매우 궁금합니다 .

다양한 사전 설정 값 중 하나의 차이점은 운영 체제 (Windows 7)가 다른 축소판을 제공한다는 것입니다. 빠른 사전 설정은 비디오에 몇 초 동안 썸네일을 표시하며, 느린 사전 설정의 썸네일은 비디오의 오프닝 프레임을 반영합니다. 저에게는 중요하지 않습니다. 내가 배운 것은 "프리셋 초고속"이 쉬운 선택 인 것 같습니다.

내 결과는 다음과 같습니다 (Excel 스프레드 시트의 스냅 샷 이미지).
엑셀 스냅 샷

다음은 csv 텍스트 인 Excel 스프레드 시트입니다.

CRF,Preset,Seconds,score,MB,score,totalscore
18,1_ultrafast,5.7,1.00,59.5,0.09,1.09
18,2_superfast,8.4,0.98,62.3,0.00,0.98
18,3_veryfast,10.8,0.97,30.9,0.98,1.94
18,4_faster,16.0,0.93,33.5,0.89,1.83
18,5_fast,24.0,0.88,36.8,0.79,1.68
18,6_medium,29.1,0.85,34.9,0.85,1.70
18,7_slow,48.1,0.73,33.9,0.88,1.61
18,8_slower,84.9,0.49,33.0,0.91,1.40
18,9_veryslow,162.0,0.00,30.1,1.00,1.00
21,1_ultrafast,5.7,1.00,38.0,0.00,1.00
21,2_superfast,7.9,0.98,35.0,0.15,1.14
21,3_veryfast,10.0,0.97,19.0,0.97,1.94
21,4_faster,14.2,0.94,21.0,0.87,1.80
21,5_fast,19.9,0.89,23.0,0.77,1.66
21,6_medium,24.6,0.86,22.0,0.82,1.67
21,7_slow,43.1,0.72,21.0,0.87,1.58
21,8_slower,69.8,0.51,20.5,0.89,1.41
21,9_veryslow,137.3,0.00,18.4,1.00,1.00
24,1_ultrafast,5.5,1.00,24.9,0.00,1.00
24,2_superfast,7.5,0.98,21.4,0.27,1.25
24,3_veryfast,9.3,0.97,12.0,0.99,1.96
24,4_faster,13.2,0.93,14.0,0.84,1.77
24,5_fast,17.4,0.90,15.0,0.76,1.66
24,6_medium,21.0,0.87,14.4,0.81,1.67
24,7_slow,37.3,0.72,14.0,0.84,1.56
24,8_slower,62.2,0.51,13.0,0.92,1.42
24,9_veryslow,121.1,0.00,11.9,1.00,1.00
27,1_ultrafast,5.5,1.00,16.8,0.00,1.00
27,2_superfast,7.4,0.98,13.6,0.38,1.36
27,3_veryfast,9.0,0.97,8.4,1.00,1.97
27,4_faster,12.6,0.93,10.1,0.80,1.73
27,5_fast,15.8,0.90,10.4,0.76,1.66
27,6_medium,18.8,0.87,10.0,0.81,1.68
27,7_slow,34.1,0.73,9.8,0.83,1.56
27,8_slower,59.6,0.48,9.0,0.93,1.41
27,9_veryslow,109.7,0.00,8.4,1.00,1.00

3
수퍼 유저의 서식 옵션이 평범하다는 것을 알고 있지만 코드 형식을 사용하여 데이터를 텍스트로 게시하면 도움이 될 수 있습니다.
Scott

1
매혹적인. 내 컴퓨터에서도 더 빠릅니다. 감사!
joeytwiddle

1
의심스러운 결과를 보았 음을 인정해야하지만 2 분 1080p 영화 클립에서 ffmpeg 버전 3.3.2-1을 사용하여 테스트를 반복하고 유사한 결과를 얻었습니다. 실제로 매우 빠르면 파일 크기가 60 %로 가장 작고, 시간이 40 %로 매우 느리게 발생합니다. 이제부터는 매우 낮은 CRF 값 (18, 19, 20)과 함께 모든 인코딩에 대해 매우 빠른 속도를 사용합니다. 매우 빠름은 높은 값보다 낮은 CRF 값으로 조금 느리기 때문입니다. 시간을 많이 절약 해주셔서 감사합니다. 아래의 주석에서 원시 데이터 및 스크립트.
mattst

1
위의 주석에서 계속 ... 여기 내 원시 데이터-CRF 18 ~ 27 및 인코딩을 실행하기 위해 작성한 Linux / UNIX bash 스크립트 가 있습니다 (누군가 비슷한 테스트를 원할 경우).
mattst

1
다음은 x264x265에 대한 테스트를 수행 한 주제에 대한 훌륭한 블로그 게시물입니다 (결과는 각각 매우 다름)
forresthopkinsa
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.