Cheat tờ và cài đặt trước - cài đặt thực sự hoạt động với FFmpeg 1.0?


28

Đã thử một số 'tờ cheat' có sẵn ở nơi khác nhưng hầu như tất cả chúng đều đã lỗi thời và đơn giản là KHÔNG hoạt động với phiên bản FFMpeg mới nhất.

Bất cứ ai cũng có thể chỉ cho tôi các cài đặt SILL hoạt động với FFMpeg mới nhất không?

Tôi chủ yếu quan tâm đến các codec sau

H.264, cài đặt trước chất lượng trung bình và thấp

cũng như

ProRes, cài đặt trước chất lượng trung bình và thấp

Câu trả lời:


49

FFmpeg không bao gồm các cài đặt trước và cấu hình tệp văn bản nữa cho libx264, tức là những gì bạn đã sử dụng với -vpretùy chọn. Những đã được khấu hao và loại bỏ ủng hộ việc truy cập các cài đặt trước x264 thực tế, hồ sơ (và giai điệu) với -preset, -profile:v-tunecác tùy chọn. Các tệp văn bản cũ chỉ mô phỏng các cài đặt và cấu hình x264 chính thức và do một số hạn chế không thể cung cấp đầy đủ chức năng mà hệ thống mới cung cấp. Nó cũng dễ dàng hơn nhiều để duy trì.

Ngoài ra, nhiều bộ mã hóa có các tùy chọn riêng; cũng được gọi là "tùy chọn riêng tư". Bạn sẽ phải xem xét các tùy chọn bộ mã hóa âm thanhvideo cho các codec phổ biến trong tài liệu trực tuyến FFmpeg hoặc kiểm tra đầu ra của ffmpeg -h fulldanh sách đầy đủ các tùy chọn được hỗ trợ. Ví dụ, x264 liệt kê các tùy chọn của nó libx264 AVOptionstrong phần đầu ra trợ giúp đầy đủ.

Nếu ffmpeg của bạn hỗ trợ -presetthì không nên sử dụng bất kỳ cài đặt trước tệp văn bản nào và FFmpeg không còn đi kèm với bất kỳ cài đặt nào khác ngoài một số cài đặt trước iPod không chuẩn. Đó là một quan niệm sai lầm phổ biến rằng các cài đặt trước văn bản có thể được sao chép đơn giản từ bất cứ đâu và được sử dụng với bất kỳ ffmpeg. Điều này là không đúng sự thật và sẽ dẫn đến vỡ.


Về cơ bản, các cài đặt trước cho phép bạn làm những việc sau:

Kiểm soát chất lượng

Chất lượng được kiểm soát bằng cách chỉ định bitrate thông qua -b:v(đối với video) hoặc -b:a(đối với âm thanh) hoặc bằng cách chỉ định bất kỳ phương thức mã hóa nào khác mà codec có thể hỗ trợ.

Đối với x264, có nhiều phương thức mã hóa khác nhau, với phương thức Hệ số tỷ lệ không đổi là tinh vi nhất. Nó dẫn đến bitrate thay đổi, nhưng chất lượng tổng thể tốt trong một lần duy nhất. Giá trị CRF nằm trong khoảng từ 0 đến 51, nhưng giá trị lành mạnh nằm ở khoảng từ 19 đến 26, tùy thuộc vào nguồn của bạn và chất lượng bạn muốn. 23 là mặc định, vì vậy, ví dụ bạn có thể chọn 18 cho "chất lượng cao" và 28 cho "chất lượng thấp", bất cứ điều gì có ý nghĩa đối với bạn.

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

x264 cũng có các phương thức mã hóa khác , nhưng điều này nằm ngoài phạm vi ở đây.

Hạn chế cấu hình H.264

Các cấu hình này xác định một bộ tính năng mà bộ mã hóa có thể sử dụng để phù hợp với các khả năng của một bộ giải mã nhất định. Trong FFmpeg gần đây, sử dụng cú pháp sau để chỉ định một cấu hình, nơi tiểu sử có thể baseline, mainhoặc high:

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

Để biết thêm thông tin và khi nào bạn nên sử dụng cấu hình nào, hãy xem: Sự khác biệt giữa Hồ sơ H.264 là gì?

Chọn một mã hóa x264 preset

Những cài đặt trước ảnh hưởng đến tốc độ mã hóa. Sử dụng cài đặt trước chậm hơn giúp bạn nén tốt hơn hoặc chất lượng trên mỗi tệp, trong khi cài đặt trước nhanh hơn sẽ khiến bạn nén kém hơn. Nói chung, bạn chỉ nên sử dụng cài đặt trước mà bạn có thể đủ khả năng để chờ đợi. Presets có thể ultrafast, superfast, veryfast, faster, fast, medium(mặc định), slowveryslow. Đây là một ví dụ:

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

Mã hóa video lossless

Điều này có thể bằng cách chỉ định CRF bằng 0, vì vậy chỉ cần sử dụng -crf 0:

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

Cuối cùng, hãy nói về ProRes một cách nhanh chóng. ProRes chấp nhận bitrate cố định với -b:vhoặc bạn có thể chỉ định cấu hình, giá trị này phải nằm trong khoảng từ 0 đến 3 , trong đó tốc độ bit được chọn theo cấu hình. Cao hơn có nghĩa là tốt hơn:

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

Các ffmbc Wiki gợi ý rằng tên của hồ sơ có thể được sử dụng - tuy nhiên điều này không thành công trong FFmpeg 1.0.


Tôi nên làm gì để giảm khả năng Lỗi chuyển đổi, điều đó xảy ra ngẫu nhiên, đôi khi điều đó không xảy ra
FlyingAtom

@FellingAtom Tôi chưa nghe nói về "Lỗi chuyển đổi". Nếu bạn có một câu hỏi cụ thể với một vấn đề có thể lặp lại, vui lòng đặt một câu hỏi mới: superuser.com/questions/ask
slhck

Vì vậy, những gì bạn sẽ kết thúc một cách hiệu quả nếu tất cả những gì bạn cung cấp là ffmpeg -i input.mp4 -c:v libx264 output.mp4? crf: 23 và cài sẵn: trung bình?
Drazen Bjelovuk

1
@Drazen Vâng, đúng vậy.
slhck

Chúc mừng! -------
Drazen Bjelovuk

20

Tôi đã thực hiện một thử nghiệm trong đó tôi đã mã hóa (sử dụng mã hóa libx264 sang .mp4) một video chất lượng cao từ máy quay Sony bằng cách sử dụng đầy đủ các giá trị đặt trước (trừ giả dược) trên một loạt các giá trị CRF (18, 21, 24 và 27 ). Tôi muốn biết những gì sẽ cho tôi sự kết hợp tốt nhất của tốc độ mã hóa, chất lượng đầu ra và kích thước tệp.

Đối với mỗi giá trị CRF, tôi đã cho mỗi hoạt động chuyển mã một điểm cho thời gian mã hóa của nó (ví dụ: với CRF = 18, giá trị đặt trước thời gian cực nhanh là 5,7 giây có điểm là 1,0, thời gian rất chậm là 162 giây có 0, với tất cả điểm số khác ở giữa). Tôi đã tính điểm kích thước tệp đầu ra tương tự, tất nhiên là cho tệp nhỏ nhất có điểm cao nhất. Sau đó tôi đã thêm hai điểm cho điểm tốc độ / kích thước "kết hợp".

Đối với mỗi trong bốn giá trị CRF, cài đặt trước "rất nhanh" là người chiến thắng thực sự, với điểm số gần như hoàn hảo là 1,94 (đối với CRF 18 và 21), 1,96 (CRF 24) và 1,97 (CRF 27). Tôi thấy rất tò mò rằng "rất nhanh" tạo ra gần như kích thước tệp nhỏ nhất mỗi lần , chỉ thua "rất chậm" và không bao giờ nhiều.

Một điểm khác biệt tôi nhận thấy giữa các giá trị đặt trước khác nhau là hệ điều hành (Windows 7) sẽ cung cấp cho tôi các hình thu nhỏ khác nhau. Các cài đặt trước nhanh hơn sẽ hiển thị hình thu nhỏ vài giây vào video, trong đó hình thu nhỏ cho các cài đặt trước chậm hơn sẽ phản ánh (các) khung mở của video. Điều đó không quan trọng đối với tôi; những gì tôi học được là "-preset rất nhanh" dường như là một lựa chọn dễ dàng.

Đây là kết quả của tôi (dưới dạng hình ảnh chụp nhanh của bảng tính Excel):
ảnh chụp nhanh

Đây là bảng tính Excel dưới dạng văn bản csv:

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
Tôi biết các tùy chọn định dạng của Super User rất tầm thường, nhưng có thể hữu ích nếu bạn đăng dữ liệu dưới dạng văn bản - có thể sử dụng định dạng mã.
Scott

1
Hấp dẫn. Nó cũng nhanh hơn trên máy của tôi. Cảm ơn!
joeytwiddle

1
Tôi phải thừa nhận rằng tôi đã xem xét kết quả của bạn với sự nghi ngờ, nhưng tôi đã lặp lại thử nghiệm và nhận được kết quả tương tự, sử dụng phiên bản ffmpeg 3.3.2-1 trên đoạn phim 2 phút 1080p. Trong thực tế, Veryfast đã tạo ra kích thước tệp nhỏ nhất 60% thời gian và đến lần thứ 2 sẽ rất chậm 40% thời gian (nhưng không nhiều). Từ giờ trở đi tôi sẽ sử dụng rất nhanh cho tất cả các mã hóa của mình cùng với giá trị CRF khá thấp (18, 19, 20) vì rất nhanh chỉ chậm hơn một chút với các giá trị CRF thấp hơn so với các giá trị CRF thấp hơn. Cảm ơn bạn đã tiết kiệm cho tôi rất nhiều thời gian. Dữ liệu thô và kịch bản trong bình luận dưới đây.
mattst

1
Tiếp tục từ nhận xét ở trên ... Đây là dữ liệu thô của tôi - CRF từ 18 đến 27tập lệnh bash Linux / UNIX mà tôi đã viết để chạy mã hóa (trong trường hợp bất kỳ ai cũng muốn chạy thử nghiệm tương tự).
mattst

1
Dưới đây là một số bài đăng blog tuyệt vời về các chủ đề, với các bài kiểm tra được thực hiện cho x264x265 (kết quả dự đoán là rất khác nhau cho mỗi bài)
forresthopkinsa
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.