Chế độ tốc độ bit VP9 theo chi tiết
Giới thiệu
Mặc dù chúng tôi cung cấp thông tin chi tiết cấp cao về các chế độ tốc độ bit trong trang Mã hoá cơ bản, nhưng các trang này chỉ đề cập đến chế độ CQ (Chất lượng bị hạn chế).
Tài liệu này trình bày chi tiết những cách khác mà bạn có thể điều chỉnh tốc độ bit VP9 để tối ưu hoá cho nhiều tình huống. Các ví dụ dưới đây sử dụng FFmpeg.
Nén
Các công nghệ nén video như VP9 nhằm mục đích giảm lượng dữ liệu cần thiết để truyền tải hình ảnh dễ hiểu và cảm giác chuyển động cho người dùng cuối.
Một trong những kỹ thuật chính được dùng để đạt được điều này là lượng tử hoá. Bộ lượng tử hoá đơn giản hoá về mặt toán học nhiều phần tử được số hoá của hình ảnh. Ví dụ: nó có thể giảm phạm vi màu được sử dụng và hơn nữa có thể thực hiện các hàm toán học trên dữ liệu để "làm mịn" sự thiếu hụt độ phân giải tinh vi trong phạm vi màu giảm. Có rất nhiều hàm như vậy.
Lượng tử hoá (hoặc "Q") được trình bày rõ ràng trong bài viết trên Wikipedia.
Trong VP9, quá trình lượng tử hoá được thực hiện trên các hệ số biến đổi. Điều này giúp giảm tốc độ bit cần thiết để duy trì chất lượng cảm nhận bằng cách thêm vào quá trình mã hoá.
Cuối cùng, khi có nhiều lượng tử hoá hơn (số Q cao hơn), chi tiết sẽ bị mất và chất lượng thấp hơn, nhưng cần ít dữ liệu hơn để lưu trữ khung hình. Trong hầu hết các trường hợp, bộ mã hoá VP9 đạt được mục tiêu tốc độ bit bằng cách thay đổi Q theo thời gian, tuỳ thuộc vào độ phức tạp của từng khung hình.
Tối ưu hoá trường hợp sử dụng
Để cho phép người dùng "điều chỉnh" mức nén VP9 theo nhu cầu cụ thể, bạn có thể điều chỉnh sự cân bằng giữa chất lượng và tốc độ bit tại thời điểm nén ban đầu thông qua một số giao diện lập trình.
Bộ mã hoá có sự đánh đổi linh hoạt giữa tốc độ, chất lượng và tốc độ bit.
Nếu tập trung vào chất lượng, người dùng phải chuẩn bị cho thời gian mã hoá lâu hơn hoặc cung cấp tài nguyên xử lý nhanh hơn và dồi dào hơn.
Nếu người dùng tập trung vào việc đảm bảo tệp đầu ra được mã hoá VP9 có kích thước nhỏ và có thể được phân phối nhanh chóng, thì họ phải chuẩn bị giảm thời gian mà bộ lượng tử hoá có thể xử lý hình ảnh. Điều này sẽ dẫn đến việc giảm độ chi tiết mà bộ lượng tử hoá có thể xử lý.
Nếu người dùng chỉ tập trung vào tốc độ phân phối (ví dụ: trong một buổi phát sóng trực tiếp trên web hoặc một hội nghị truyền hình hai chiều), thì lượng tử hoá hoàn toàn có thể phụ thuộc vào các ràng buộc về tốc độ mà các byte dữ liệu hữu ích có thể được truyền qua mạng (tức là "tốc độ bit").
Lựa chọn phù hợp sẽ rất cụ thể cho từng trường hợp sử dụng. Để đơn giản hoá việc điều chỉnh sự cân bằng này cho trường hợp sử dụng của bạn, VP9 hỗ trợ cấu hình đơn giản trong 4 "chế độ tốc độ bit".
Chế độ tốc độ bit VP9
Hãy bắt đầu bằng cách xem xét các chế độ tốc độ bit chính mà VP9 hỗ trợ:
Chế độ | |
---|---|
Bộ lượng tử hoá hằng số (Q) | Cho phép bạn chỉ định một giá trị cố định cho bộ lượng tử hoá; tốc độ bit sẽ thay đổi |
Chất lượng bị hạn chế (CQ) | Cho phép bạn đặt mức chất lượng tối đa. Chất lượng có thể thay đổi trong các thông số tốc độ bit |
Tốc độ bit biến thiên (VBR) | Cân bằng chất lượng và tốc độ bit theo thời gian trong phạm vi hạn chế về tốc độ bit |
Tốc độ bit không đổi (CBR) | Cố gắng giữ tốc độ bit tương đối ổn định trong khi chất lượng thay đổi |
Hỏi
Chế độ Lượng tử hoá không đổi là lựa chọn phù hợp cho những trường hợp mà mối lo ngại về kích thước tệp và tốc độ bit hoàn toàn phụ thuộc vào chất lượng cuối cùng.
Bạn có thể tìm thấy các trường hợp sử dụng cho chế độ cài đặt Q trong rạp chiếu phim kỹ thuật số, bộ chỉnh sửa kỹ thuật số hoặc các ứng dụng biển báo kỹ thuật số, trong đó nội dung có thể được phân phối trên phương tiện lưu trữ thực tế hoặc trong thời gian không giới hạn – trước khi nội dung thực sự được sử dụng và nơi đầu ra mong muốn phải có chất lượng hình ảnh cao nhất.
Tối ưu hoá tốc độ bit ở chế độ Q của VP9
Chế độ Constant Quantizer (Bộ lượng tử hoá hằng số) chỉ yêu cầu cấu hình tối thiểu. Như tên gọi của nó, chế độ Q tập trung vào việc duy trì bộ lượng tử ở mức "chất lượng" mục tiêu và cho phép bộ lượng tử xác định luồng dữ liệu mà nó muốn xử lý. Tất cả những gì người dùng cần xác định là chất lượng mục tiêu.
Có thêm thông tin về các đặc điểm của chất lượng mục tiêu từ trọng tâm xử lý hình ảnh (không phải trọng tâm tốc độ bit) trong bài viết Mã hoá cơ bản.
Sử dụng các tham số dòng lệnh FFmpeg sau đây để tối ưu hoá tốc độ bit ở chế độ Q:
ffmpeg | |
---|---|
-b:v 0 |
Bằng cách đánh dấu tốc độ bit của video là 0 , chúng ta sẽ đặt rõ ràng chế độ "Q" |
-g <arg> |
Đặt Khoảng thời gian giữa các khung hình chính (mặc định là 240) |
-crf <arg> |
Đặt mức chất lượng tối đa. Các giá trị hợp lệ là từ 0 đến 63. Số càng thấp thì chất lượng càng cao |
-quality good -speed 0 |
Mặc định và được đề xuất cho hầu hết các ứng dụng. best là một công cụ nghiên cứu, có sự cải thiện không đáng kể so với -quality good -speed 0 |
-lossless |
Chế độ không mất dữ liệu |
Tốc độ bit ở chế độ Q : Ví dụ về FFmpeg
Ví dụ đầu tiên là một chế độ cài đặt Q rất khắc nghiệt và chỉ được cung cấp để minh hoạ. (Ngay cả việc xử lý đoạn video dài 120 giây trong các ví dụ này cũng sẽ mất vài giờ và tệp đầu ra được tạo thường lớn hơn nhiều so với nguồn ban đầu.)
ffmpeg -i 120s_tears_of_steel_1080p.webm -c:v libvpx-vp9 -g 1 -b:v 0 -crf 0 -quality good \
-speed 0 -lossless 1 -c:a libvorbis Q_g_1_crf_0_120s_tears_of_steel_1080p.webm.webm
Để so sánh hiệu ứng của -crf
, các ví dụ sau đây chỉ thay đổi -crf
. Xin lưu ý rằng -g
không được xác định, nên sẽ mặc định là 240
và trên thực tế, -crf
mặc định là 10
, nên chúng ta sẽ có cùng kết quả mà không cần đưa tham số nào vào ví dụ thứ hai trong số 3 ví dụ:
ffmpeg -i 120s_tears_of_steel_1080p.webm -c:v libvpx-vp9 -b:v 0 -crf 0 -quality good \
-speed 0 -c:a libvorbis Q_crf_0_120s_tears_of_steel_1080p.webm
ffmpeg -i 120s_tears_of_steel_1080p.webm -c:v libvpx-vp9 -b:v 0 -crf 10 -quality good \
-speed 0 -c:a libvorbis Q_crf_10_120s_tears_of_steel_1080p.webm
ffmpeg -i 120s_tears_of_steel_1080p.webm -c:v libvpx-vp9 -b:v 0 -crf 63 -quality good \
-speed 0 -c:a libvorbis Q_crf_63_120s_tears_of_steel_1080p.webm
Đầu ra của những ví dụ này có kích thước khác nhau trên đĩa. Khi đặt -crf
thành 0
, tệp có kích thước 711,8 MB, khi đặt -crf
thành 10
, kích thước tệp là 125,3 MB và khi đặt -crf
thành 63
, tệp có kích thước 4,5 MB. Nói một cách đơn giản, điều này cho thấy chúng ta đã giảm chất lượng của tệp được mã hoá VP9 thu được bằng cách tăng giá trị của đối số -crf
. Bảng Kết quả bên dưới có bản tóm tắt đầy đủ về tất cả các tệp đầu ra.
Bây giờ, hãy so sánh hiệu ứng của việc thay đổi chế độ cài đặt -g
.
ffmpeg -i 120s_tears_of_steel_1080p.webm -c:v libvpx-vp9 -g 1 -b:v 0 -quality good \
-speed 0 -c:a libvorbis Q_g_1_120s_tears_of_steel_1080p.webm
ffmpeg -i 120s_tears_of_steel_1080p.webm -c:v libvpx-vp9 -g 240 -b:v 0 -quality good \
-speed 0 -c:a libvorbis Q_g_240_120s_tears_of_steel_1080p.webm
ffmpeg -i 120s_tears_of_steel_1080p.webm -c:v libvpx-vp9 -g 480 -b:v 0 -quality good \
-speed 0 -c:a libvorbis Q_g_480_120s_tears_of_steel_1080p.webm
Chúng tôi nhận thấy chế độ cài đặt -g 1
tạo ra một tệp rất lớn, có kích thước 25,9 MB.
Hãy so sánh điều này với việc thay đổi -g 240
(đặt giá trị này giống như giá trị mặc định một cách rõ ràng), trong đó chúng ta có một tệp 4,5 MB và -g 480
, trong đó chúng ta có một tệp 4,4 MB.
CQ
CQ là chế độ nên dùng cho video dựa trên tệp.
Đối với hầu hết các loại nội dung, bạn nên sử dụng chế độ chất lượng bị hạn chế (CQ) với giới hạn tốc độ bit. Hầu hết các video đều có cả cảnh chuyển động nhanh (ví dụ: cảnh hành động) và cảnh có ít chi tiết (ví dụ: cuộc trò chuyện). Chế độ CQ cho phép bộ mã hoá duy trì mức chất lượng hợp lý trong các cảnh dài hơn, dễ dàng hơn (mà không lãng phí bit), đồng thời phân bổ nhiều bit hơn cho các chuỗi khó.
Tuy nhiên, chúng ta vẫn phải giới hạn quy trình bằng cách cung cấp một phạm vi trên – nếu không, có thể sẽ không có quá trình nén nào cả! Chúng ta cũng có thể đặt một phạm vi thấp hơn, trong đó ngay cả khi hình ảnh có màu đen và quá trình mã hoá hầu như không liên quan gì thì chúng ta vẫn sẽ truyền dữ liệu đó, có thể không hiệu quả bằng cách chúng ta có thể, nhưng kết quả cuối cùng là ngay cả màu đen cũng không bị nén đáng kể và trông "rất đen".
Ngoài ra, chúng ta cũng phải đặt ngưỡng bộ lượng tử hoá. Trong VP9, ngưỡng bộ lượng tử có thể thay đổi từ 0
xuống 63
.
Các tham số dòng lệnh FFmpeg sau đây được dùng cho chế độ CQ:
ffmpeg | |
---|---|
-b:v <arg> |
Đặt tốc độ bit mục tiêu (ví dụ: 500k) |
-minrate <arg> -maxrate <arg> |
Đặt tốc độ bit tối thiểu và tối đa. |
-crf <arg> |
Đặt mức chất lượng tối đa. Giá trị hợp lệ là từ 0 đến 63 , số càng thấp thì chất lượng càng cao. |
Chế độ tốc độ bit CQ: Ví dụ về FFmpeg
Ví dụ đầu tiên cung cấp một ràng buộc có chiều rộng hợp lý. Tuy nhiên, so với các ví dụ được đưa ra ở trên cho Q, chúng tôi nhận thấy điều này buộc tốc độ bit phải nằm trong phạm vi cao hơn và chất lượng đầu ra cao hơn đáng kể. Kích thước tệp lớn hơn đáng kể.
ffmpeg -i 120s_tears_of_steel_1080p.webm -c:v libvpx-vp9 -b:v 2000k \
-minrate 1000k -maxrate 4000k -crf 10 -c:a libvorbis \
CQ_4000_1000_crf_10_120s_tears_of_steel_1080p.webm
Trong trường hợp này, tệp đầu ra có kích thước 20,2 MB trên ổ đĩa – nhỏ hơn đáng kể so với chế độ mã hoá Q trong các ví dụ ở trên.
Ngược lại, trong ví dụ tiếp theo, chúng ta đã giới hạn tốc độ bit trong một phạm vi được xác định chặt chẽ hơn nhiều.
ffmpeg -i 120s_tears_of_steel_1080p.webm -c:v libvpx-vp9 -b:v 2000k \
-minrate 1500k -maxrate 2500k -crf 10 -c:a libvorbis \
CQ_2500_1500_crf_10_120s_tears_of_steel_1080p.webm
Trong trường hợp này, kích thước tệp đầu ra là 24,1 MB và vào những thời điểm có độ phức tạp và chuyển động cao, chất lượng video sẽ giảm rõ rệt so với ví dụ trước.
ffmpeg -i 120s_tears_of_steel_1080p.webm -c:v libvpx-vp9 -b:v 1000k \
-minrate 750k -maxrate 1400k -crf 10 -c:a libvorbis \
CQ_1400_750_crf_10_120s_tears_of_steel_1080p.webm
Trong ví dụ cuối cùng này, kích thước đầu ra đã giảm đáng kể, xuống còn 13,2 MB trên ổ đĩa.
VBR
Bạn nên dùng chế độ tốc độ bit thay đổi (VBR) để phát trực tuyến các tệp video theo yêu cầu có nội dung chuyển động nhanh (ví dụ: thể thao). Nó rất phù hợp với việc phân phối dựa trên HTTP.
Trong mô hình VBR, các cảnh hành động có thể được mã hoá với tốc độ bit cao hơn so với các cảnh "dễ" hơn, nhất quán với khung hình chính.
Đối với các mô hình phân phối nội dung phát trực tuyến quy mô lớn, lợi ích của VBR có thể tăng lên đáng kể về cả điều khoản phân phối và cơ sở hạ tầng. Khi nhiều luồng VBR được phân phối bằng cùng một cơ sở hạ tầng, điều này có thể mang lại lợi ích cho tất cả người xem sử dụng hệ thống.
Bạn cũng nên dùng VP9 VBR để mã hoá nội dung thể thao và nội dung khác có chuyển động nhanh. Đối với nội dung có độ phức tạp cao như vậy, VBR đạt được chất lượng cao hơn trong thời gian có ít chuyển động.
Các tham số dòng lệnh FFmpeg sau đây được dùng cho chế độ VBR:
ffmpeg | |
---|---|
-quality good |
Chất lượng good phù hợp với video theo yêu cầu |
-speed <arg> |
Đối với VIDEO_ON_DEMAND, các giá trị hợp lệ là 0-5, trong đó 0 là chất lượng cao nhất và 5 là chất lượng thấp nhất. (Đối với tính năng phát trực tiếp, phạm vi là 5 – 9 – Xem phần CBR bên dưới) |
Chế độ tốc độ bit VBR: Ví dụ về FFmpeg
ffmpeg -i 120s_tears_of_steel_1080p.webm -c:v libvpx-vp9 -b:v 2000k \
-minrate 1500k -maxrate 2500k -quality good -speed 0 -c:a libvorbis \
VBR_good_0_120s_tears_of_steel_1080p.webm
ffmpeg -i 120s_tears_of_steel_1080p.webm -c:v libvpx-vp9 -b:v 2000k \
-minrate 1500k -maxrate 2500k -quality good -speed 5 -c:a libvorbis \
VBR_good_5_120s_tears_of_steel_1080p.webm
CBR
Bạn nên sử dụng chế độ Tốc độ bit không đổi (CBR) khi phát trực tiếp bằng VP9.
Về cơ bản, CBR đặt tốc độ bit tối đa làm "giới hạn cứng". Điều này có nghĩa là quá trình mã hoá không thể tạo ra dữ liệu ở tốc độ mà mạng không thể truyền tải.
Ví dụ: đối với các luồng giao tiếp theo thời gian thực (hội nghị truyền hình), điều quan trọng là ứng dụng mã hoá không làm tràn mạng bằng nhiều dữ liệu hơn mức có thể truyền tải. Nếu có, vấn đề đồng bộ hoá âm thanh/video hoặc khung hình bị treo sẽ ảnh hưởng đáng kể đến trải nghiệm người dùng, thậm chí còn ảnh hưởng nhiều hơn so với việc giảm hiệu quả nén. Bằng cách đảm bảo trần cứng được xác định, VP9 sẽ giảm chất lượng khi đạt đến trần đó.
Các tham số dòng lệnh FFmpeg sau đây được dùng cho chế độ CBR:
ffmpeg | |
---|---|
-quality realtime |
Chất lượng realtime phù hợp để phát trực tiếp |
-speed <arg> |
Đối với tính năng phát trực tiếp, các giá trị hợp lệ là từ 5 đến 9, trong đó 5 là chất lượng cao nhất và 9 là chất lượng thấp nhất. (Đối với Video theo yêu cầu, các giá trị này là từ 0 đến 5. Xem VBR ở trên.) |
-minrate <arg> -maxrate <arg> |
Đặt tốc độ bit tối thiểu và tối đa ** Bạn phải đặt các giá trị này thành cùng một giá trị tốc độ bit -b:v cho chế độ CBR** . |
Nói một cách đơn giản, chúng ta sẽ cố định tốc độ bit mục tiêu, tối thiểu và tối đa ở cùng một giá trị, đồng thời cho bộ lượng tử biết rằng các thao tác này có tính chất nhạy cảm về thời gian.
Chế độ tốc độ bit CBR: Ví dụ về FFmpeg
Các ví dụ dưới đây khám phá việc đặt tốc độ bit thành mục tiêu 2 Mbps và 500 kbps:
ffmpeg -i 120s_tears_of_steel_1080p.webm -c:v libvpx-vp9 -b:v 2000k \
-minrate 2000k -maxrate 2000k -quality realtime -speed 5 -c:a libvorbis \
CBR_2000_realtime_speed_5_120s_tears_of_steel_1080p.webm
ffmpeg -i 120s_tears_of_steel_1080p.webm -c:v libvpx-vp9 -b:v 2000k \
-minrate 2000k -maxrate 2000k -quality realtime -speed 8 -c:a libvorbis \
CBR_2000_realtime__8_120s_tears_of_steel_1080p.webm
ffmpeg -i 120s_tears_of_steel_1080p.webm -c:v libvpx-vp9 -b:v 500k \
-minrate 500k -maxrate 500k -quality realtime -speed 5 -c:a libvorbis \
CBR_500_realtime_speed_5_120s_tears_of_steel_1080p.webm
ffmpeg -i 120s_tears_of_steel_1080p.webm -c:v libvpx-vp9 -b:v 500k \
-minrate 500k -maxrate 500k -quality realtime -speed 8 -c:a libvorbis \
CBR_500_realtime_speed_8_120s_tears_of_steel_1080p.webm
Kết quả
Mỗi lần mã hoá ở trên đều được thực hiện trên hệ thống Ubuntu Linux với các thông số kỹ thuật sau:
- Bộ xử lý: 4x Intel(R) Core(TM) i5-6500 CPU @ 3,20 GHz
- Bộ nhớ (RAM): 8060 MB (đã dùng 1492 MB)
- Đồ hoạ: Intel HD Graphics 530 (Skylake GT2)
- Hệ điều hành: Ubuntu 16.04 LTS
Trong mọi trường hợp, tệp nguồn đều là một đoạn video dài 1 phút 20 giây được trích từ phim Tears Of Steel.
Tệp | Số phút mã hoá | Kích thước tệp trên đĩa |
---|---|---|
Q_g_1_crf_0_120s_tears_of_steel_1080p.webm | 81 | 1,06 GB |
Q_crf_0_120s_tears_of_steel_1080p.webm | 131 | 711,8 MB |
Q_crf_10_120s_tears_of_steel_1080p.webm | 118 | 125,3 MB |
Q_crf_63_120s_tears_of_steel_1080p.webm | 27 | 4,5 MB |
Q_g_1_120s_tears_of_steel_1080p.webm | 51 | 25,9 MB |
Q_g_240_120s_tears_of_steel_1080p.webm | 28 | 4,5 MB |
Q_g_480_120s_tears_of_steel_1080p.webm | 10 | 4,4 MB |
CQ_4000_1000_crf_10_120s_tears_of_steel_1080p.webm | 11 | 20,2 MB |
CQ_2500_1500_crf_10_120s_tears_of_steel_1080p.webm | 9 | 24,1 MB |
CQ_1400_750_crf_10_120s_tears_of_steel_1080p.webm | 50 | 13,2 MB |
VBR_good_0_120s_tears_of_steel_1080p.webm | 3 | 23,4 MB |
VBR_good_5_120s_tears_of_steel_1080p.webm | 4 | 23,9 MB |
CBR_2000_realtime_speed_5_120s_tears_of_steel_1080p.webm | 2 | 24,8 MB |
CBR_2000_realtime_speed_8_120s_tears_of_steel_1080p.webm | 1 | 21MB |
CBR_500_realtime_speed_5_120s_tears_of_steel_1080p.webm | 1 | 8,5 MB |
CBR_500_realtime_speed_8_120s_tears_of_steel_1080p.webm | 1 | 7,1 MB |
Có thể nhận thấy rằng việc đặt giá trị -speed
cao hơn 5
sẽ làm thay đổi tốc độ xử lý VP9. Mặc dù có sự gia tăng đáng kể về lượng tử hoá (thể hiện qua hiệu ứng "dithered" mạnh mẽ ở tốc độ bit nhanh có chất lượng rất thấp), VP9 vẫn có thể tạo ra đầu ra 1080p có tốc độ bit thấp rất tốt, mặc dù phù hợp hơn với các thiết bị di động nhỏ hơn so với màn hình lớn hơn.
Những điều cần cân nhắc đối với các trường hợp sử dụng có tính năng điều chỉnh tỷ lệ (thay đổi kích thước)
Các chế độ tốc độ bit của VP9 rõ ràng không tách biệt và có thể kết hợp với nhiều đối số và tham số khác để nhắm đến các trường hợp sử dụng cụ thể. Một trường hợp sử dụng điển hình có thể là điều chỉnh lại kích thước của video đầu ra để nhắm đến một thiết bị cụ thể.
Một ví dụ điển hình về trường hợp này là thay đổi luồng HD thành đầu ra SD. Một lần nữa, điều này sẽ có ảnh hưởng đáng kể đến thời gian xử lý và tốc độ bit đầu ra. Trong trường hợp hai lệnh FFmpeg giống hệt nhau, việc điều chỉnh kích thước của video đầu ra sẽ làm thay đổi kích thước của tệp kết quả và thực tế là tốc độ bit của tệp đó trong mô hình phát trực tuyến.
Để minh hoạ điều này, chúng tôi đã lấy một ví dụ ở giữa của từng chế độ tốc độ bit và chỉ cần thêm các tham số điều chỉnh tỷ lệ.
Chế độ Q
ffmpeg -i 120s_tears_of_steel_1080p.webm -c:v libvpx-vp9 -b:v 0 -crf 10 -quality good \
-speed 0 -vf scale=640x480 -c:a libvorbis 640x480_Q_crf_10_120s_tears_of_steel_1080p.webm
Chế độ CQ
ffmpeg -i 120s_tears_of_steel_1080p.webm -c:v libvpx-vp9 -b:v 2000k \
-minrate 1500k -maxrate 2500k -crf 10 -vf scale=640x480 -c:a libvorbis \
640x480_CQ_crf_0_120s_tears_of_steel_1080p.webm
Chế độ VBR
ffmpeg -i 120s_tears_of_steel_1080p.webm -c:v libvpx-vp9 -b:v 2000k \
-minrate 1500k -maxrate 2500k -quality good -speed 5 -vf scale=640x480 \
-c:a libvorbis 640x480_VBR_good_5_120s_tears_of_steel_1080p.webm
Chế độ CBR
ffmpeg -i 120s_tears_of_steel_1080p.webm -c:v libvpx-vp9 -b:v 2000k \
-minrate 2000k -maxrate 2000k -quality realtime -speed 5 -vf scale=640x480 \
-c:a libvorbis 640x480_CBR_2000_realtime_5_120s_tears_of_steel_1080p.webm
Bảng kết quả cho việc điều chỉnh tỷ lệ
Tệp | Số phút mã hoá | Kích thước tệp trên đĩa |
---|---|---|
640x480_Q_crf_10_120s_tears_of_steel_1080p.webm | 5 | 3,4 MB |
640x480_CQ_crf_0_120s_tears_of_steel_1080p.webm | 2 | 22,4 MB |
640x480_VBR_good_5_120s_tears_of_steel_1080p.webm | 1 | 22,6 MB |
640x480_CBR_2000_realtime_5_120s_tears_of_steel_1080p.webm | 4 | 23MB |
Để dễ so sánh, đây là các lệnh FFmpeg giống nhau trong các ví dụ trước của chúng tôi nhưng không có tính năng điều chỉnh tỷ lệ:
Tệp | Số phút mã hoá | Kích thước tệp trên đĩa |
---|---|---|
Q_crf_10_120s_tears_of_steel_1080p.webm | 56 | 126MB |
CQ_2500_1500_crf_10_120s_tears_of_steel_1080p.webm | 9 | 24,1 MB |
VBR_good_5_120s_tears_of_steel_1080p.webm | 4 | 23,9 MB |
CBR_2000_realtime_speed_5_120s_tears_of_steel_1080p.webm | 1 | 24,8 MB |
Như bạn sẽ thấy, kích thước tệp đầu ra của mỗi tệp đều giảm đáng kể và mặc dù thời gian mã hoá giảm trong hầu hết các ví dụ, nhưng ở chế độ Q, thời gian mã hoá thực sự tăng lên. Việc nén video "nhiều hơn" đòi hỏi nhiều công sức hơn, vì vậy, ngay cả khi tệp đầu ra dự kiến sẽ nhỏ hơn nếu chất lượng không bị hạn chế (như trong chế độ Q), thì điều này có thể làm tăng thời gian cần thiết để tạo tệp đầu ra. Đừng cho rằng một tệp nhỏ hơn luôn có thể được phân phối nhanh hơn bằng quy trình mã hoá.
Kết hợp việc điều chỉnh tỷ lệ và giảm tốc độ bit
Để so sánh lần cuối, các ví dụ sau đây sẽ chạy lại các ví dụ về CQ, VBR và CBR của việc điều chỉnh tỷ lệ, nhưng lần này chúng ta sẽ giới hạn tốc độ bit mục tiêu ở mức 500 kbps – khoảng 1/4 (phù hợp với việc giảm kích thước hình ảnh).
Chế độ CQ
ffmpeg -i 120s_tears_of_steel_1080p.webm -c:v libvpx-vp9 -b:v 500k \
-minrate 350k -maxrate 550k -crf 10 -vf scale=640x480 -c:a libvorbis \
640x480_CQ_crf_0_120s_tears_of_steel_1080p.webm
Chế độ VBR
ffmpeg -i "120s_tears_of_steel_1080p.webm" -c:v libvpx-vp9 -b:v 500k \
-minrate 350k -maxrate 500k -quality good -speed 5 -vf scale=640x480 -c:a libvorbis \
640x480_VBR_good_5_120s_tears_of_steel_1080p.webm
Chế độ CBR
ffmpeg -i 120s_tears_of_steel_1080p.webm -c:v libvpx-vp9 -b:v 500k \
-minrate 500k -maxrate 500k -quality realtime -speed 5 -vf scale=640x480 -c:a libvorbis \
640x480_CBR_2000_realtime_5_120s_tears_of_steel_1080p.webm
Bảng kết quả cho việc điều chỉnh tỷ lệ và giảm tốc độ bit mục tiêu
Tệp | Số phút mã hoá | Kích thước tệp trên đĩa |
---|---|---|
640x480_CQ_500_crf_0_120s_tears_of_steel_1080p.webm | 1 | 7MB |
640x480_VBR_500_good_5_120s_tears_of_steel_1080p.webm | 1 | 7MB |
640x480_CBR_500_realtime_5_120s_tears_of_steel_1080p.webm | 1 | 7,6 MB |
Như bạn thấy, thời gian mã hoá đã được rút ngắn hơn nữa.