Chế độ tốc độ bit VP9 trong 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ề chế độ tốc độ bit trong trang Mã hóa cơ bản, nhưng chúng chỉ giải quyết chế độ CQ (Chất lượng bắt buộc).

Tài liệu này trình bày chi tiết các cách thực tế khác để bạn có thể điều chỉnh tốc độ bit VP9 cho việc tối ưu hóa cho nhiều tình huống. Các ví dụ bên dưới sử dụng FFmpeg.

Nén

Các công nghệ nén video như VP9 có mục đích giảm lượng dữ liệu cần thiết để truyền đạt một 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 dùng để đạt được mục tiêu này là lượng hóa. Bộ định lượng đơn giản hóa nhiều thành phần của hình ảnh một cách đơn giản. Ví dụ: dữ liệu này có thể làm giảm dải màu được sử dụng và còn có thể thực hiện các hàm toán học trên dữ liệu để "làm mượt" và hạn chế; cảm giác thiếu độ phân giải tốt trong phạm vi màu giảm. Có nhiều chức năng như vậy.

Định lượng (hoặc "Q") được nêu rõ trong bài viết trên Wikipedia của họ.

Trong VP9, định lượng được thực hiện trên hệ số biến đổi. Việc này giúp giảm tốc độ bit cần thiết để duy trì chất lượng cảm nhận được bằng cách thêm vào mã hóa.

Cuối cùng, khi có nhiều số lượng 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. Trong hầu hết các trường hợp, bộ mã hóa VP9 đạt được mục tiêu tốc độ bit bằng cách thay đổi Q theo thời gian, tùy thuộc vào độ phức tạp của từng khung.

Sử dụng tính năng tối ưu hóa trường hợp

Để cho phép người dùng "tune" VP9 nén theo nhu cầu cụ thể, có thể điều chỉnh cân bằng về 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ã hóa có sự đánh đổi giữa tốc độ, chất lượng và tốc độ bit.

  • Nếu người dùng tập trung vào chất lượng, thì họ phải được chuẩn bị cho thời gian mã hóa lâu hơn hoặc cung cấp tài nguyên xử lý nhanh hơn và phong phú hơn.

  • Nếu người dùng tập trung vào việc đảm bảo tệp mã hóa VP9 đầu ra có kích thước nhỏ và có thể phân phối nhanh chóng, thì họ phải sẵn sàng để giảm lượng thời gian mà bộ định lượng có thể xử lý và điều này sẽ giúp giảm bớt chi tiết mà bộ định lượng có thể hoạt động.

  • Nếu người dùng chỉ tập trung vào tốc độ phân phối (ví dụ: trong video phát trực tiếp trên web hoặc hội nghị truyền hình hai chiều), thì việc định lượng có thể hoàn toàn phụ thuộc vào các hạn chế về tốc độ mà dữ liệu có thể sử dụng được có thể được chuyển qua mạng (tức là "bitrate&quot);).

Lựa chọn đúng sẽ rất cụ thể cho từng trường hợp sử dụng. Để giúp bạn điều chỉnh số dư này theo trường hợp sử dụng một cách đơn giản hơn, VP9 hỗ trợ cấu hình đơn giản ở bốn &chế độ bit;"

Chế độ bit VP9

Chúng ta hãy bắt đầu bằng cách xem các chế độ bit chính mà VP9 hỗ trợ:

Chế độ
Bộ định lượng không đổi (Q) Cho phép bạn chỉ định giá trị định lượng cố định; tốc độ bit sẽ thay đổi
Chất lượng ràng buộc (CQ) Cho phép bạn đặt một mức chất lượng tối đa. Chất lượng video có thể thay đổi trong tham 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 giới hạn về tốc độ bit
Tốc độ bit không đổi (CBR) Cố gắng giữ tốc độ bit không thay đổi trong khi chất lượng thay đổi

Hỏi

Biểu đồ cho chế độ Q

Chế độ Hằng số lượng không đổi là lựa chọn tốt cho các tình huống có vấn đề về kích thước tệp và tốc độ bit là 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 Q

Tối ưu hóa tốc độ bit của chế độ Q9 Q

Chế độ Bộ định lượng không đổi yêu cầu cấu hình ở mức tối thiểu. Đúng như tên gọi, chế độ Q tập trung vào việc duy trì bộ định lượng ở mức mục tiêu "chất lượng" và cho phép bộ định lượng xác định luồng dữ liệu mà trình 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.

Bạn có thể xem thêm thông tin cụ thể về chất lượng mục tiêu từ tập trung xử lý hình ảnh (không phải tập trung vào tốc độ bit) trong bài viết Mã hóa cơ bản.

Dùng các thông số dòng lệnh FFmpeg sau đây để tối ưu hóa tốc độ bit của 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 chế độ "Q"
-g <arg> Đặt khoảng thời gian khung hình chính trong khung (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à 0-63. Số thấp hơn có chất lượng cao hơn
-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 khác, có cải thiện nhẹ so với -quality good -speed 0
-lossless Chế độ không mất dữ liệu

Tốc độ bit của chế độ Q : ví dụ về FFmpeg

Ví dụ đầu tiên là tùy chọn cài đặt chế độ Q quá mức và chỉ cung cấp để minh họa. (Ngay cả khi xử lý đoạn video dài 120 giây trong những ví dụ này cũng sẽ mất vài giờ và tệp đầu ra thường được tạo lớn hơn nhiều so với nguồn ban đầu.)

ffmpeg -i 120s_tears_of_steel_1080p.webm -c:v 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 quả của -crf, các ví dụ sau chỉ thay đổi -crf. Lưu ý rằng -g chưa được xác định, vì vậy sẽ mặc định là 240 và trên thực tế, -crf mặc định là 10, vì vậy, chúng tôi sẽ có kết quả tương tự mà không bao gồm thông số trong hai ví dụ thứ hai:

ffmpeg -i 120s_tears_of_steel_1080p.webm -c:v 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 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 vp9 -b:v 0 -crf 63 -quality good \
  -speed 0 -c:a libvorbis Q_crf_63_120s_tears_of_steel_1080p.webm

Kết quả của các ví dụ này có kích thước khác nhau trên đĩa. Với -crf được đặt thành 0, tệp có kích thước là 711,8MB, trong đó -crf được đặt thành 10, kích thước tệp là 125,3MB và tệp -crf được đặt thành 63 là tệp có kích thước 4,5MB. Nói một cách đơn giản, điều này làm nổi bật rằng chúng tôi đã giảm chất lượng của tệp mã hóa VP9 bằng cách tăng giá trị của đối số -crf. Bản tóm tắt đầy đủ của tất cả tệp đầu ra nằm trong Bảng kết quả bên dưới.

Giờ hãy so sánh hiệu quả của các chế độ cài đặt -g.

ffmpeg -i 120s_tears_of_steel_1080p.webm -c:v 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 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 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 rằng tùy chọn cài đặt -g 1 tạo ra một tệp rất lớn, có kích thước 25,9 MB. So sánh thay đổi này với -g 240 (thay đổi tùy chọn cài đặt một cách rõ ràng giống như mặc định) khi chúng tôi kết thúc bằng tệp 4,5MB và -g 480, nơi chúng tôi kết thúc bằng tệp 4,4MB.

Giám đốc sản phẩm

CQ là chế độ đề xuất cho video dựa trên tệp.

Biểu đồ chế độ CQ

Đối với hầu hết các loại nội dung, bạn nên sử dụng chế độ hạn chế chất lượng (CQ) với giới hạn tốc độ bit. Hầu hết các video đều kết hợp các cảnh có chuyển động cao (ví dụ: trình tự hành động) và các cảnh có ít chi tiết hơn (ví dụ: các cuộc trò chuyện). Chế độ CQ cho phép bộ mã hóa duy trì mức chất lượng hợp lý trong các cảnh dài và dễ dàng hơn (mà không lãng phí bit), trong khi phân bổ nhiều bit hơn cho các chuỗi khó.

Tuy nhiên, chúng tôi vẫn phải hạn chế quy trình bằng cách cung cấp phạm vi trên – nếu không, cũng có thể không nén được! Chúng ta cũng có thể đặt một phạm vi thấp hơn, ngay cả khi hình ảnh là màu đen và quá trình mã hóa gần như không làm được gì, thì chúng tôi vẫn sẽ xử lý dữ liệu đó, có thể là kém hiệu quả hơn nhưng, với kết quả cuối cùng là ngay cả màu đen không bị nén đáng kể và trông

Ngoài ra, chúng ta cũng phải đặt ngưỡng số lượng. Trong VP9, ngưỡng định lượng có thể thay đổi từ 0 xuống 63.

Các thông số dòng lệnh FFmpeg sau đây được sử dụng cho chế độ CQ:
ffmpeg
-b:v <arg> Đặt tốc độ bit mục tiêu (ví dụ: 500 nghìn)
-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. Các giá trị hợp lệ là 0 đến 63, các số thấp hơn có chất lượng cao hơn.
Chế độ bit CQ: ví dụ về FFmpeg

Ví dụ đầu tiên có một phạm vi rộng và hợp lý. Tuy nhiên, so với các ví dụ nêu trên cho Q, chúng tôi thấy rằng điều này buộc tốc độ bit thành 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 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 là 20,2MB trên đĩa – nhỏ hơn đáng kể so với mã hóa chế độ Q trong các ví dụ ở trên.

Ngược lại trong ví dụ tiếp theo, chúng ta đã ràng buộc tốc độ bit ở một phạm vi gần hơn xác định.

ffmpeg -i 120s_tears_of_steel_1080p.webm -c:v 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,1MB và tại những thời điểm có độ phức tạp và chuyển động cao, chất lượng video giảm rõ ràng khi so sánh với ví dụ trước.

ffmpeg -i 120s_tears_of_steel_1080p.webm -c:v vp9  -b:v 1000k \
  -minrate 750k -maxrate 1400k -crf 10  -c:a libvorbis \
  CQ_1400_750_crf_10_120s_tears_of_steel_1080pp.webm

Trong ví dụ cuối cùng này, kết quả đã giảm đáng kể kích thước, xuống còn 13,2MB trên đĩa.

Máy ghi âm VBR

Bạn nên sử dụng chế độ tốc độ bit biến thiên (VBR) để phát trực tuyến các tệp video theo yêu cầu có nội dung chuyển động cao (ví dụ: thể thao). Tính năng này rất phù hợp với hoạt động phân phối dựa trên HTTP.

Biểu đồ chế độ VBR

Trong mô hình VBR, cảnh hành động có thể được mã hóa bằng tốc độ bit cao hơn so với "easier" các cảnh này nhất quán với khung hình chính.

Đối với các mô hình phân phối phát trực tuyến lớn, lợi ích VBR có thể bổ sung đáng kể trong 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ởi 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.

VP9 VBR cũng được đề xuất để mã hóa thể thao và nội dung khác với chuyển động cao. Đố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 khoảng thời gian chuyển động thấp hơn.

Các thông số dòng lệnh FFmpeg sau đây được sử dụng cho chế độ VBR:
ffmpeg
-quality good Nếu có thông tin này, thì FFmpeg sẽ tính đến chế độ cài đặt -speed tiếp theo
-speed <arg> Đối với VIDEO ON DEMAND Các giá trị hợp lệ là 0-4, trong đó 0 là chất lượng cao nhất và 4 là thấp nhất. (Đối với Phát trực tiếp, phạm vi là 5-8 - Xem CBR bên dưới)
Chế độ bit VBR: ví dụ về FFmpeg
ffmpeg -i 120s_tears_of_steel_1080p.webm -c:v 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 vp9  -b:v 2000k \
  -minrate 1500k -maxrate 2500k -quality good -speed 5  -c:a libvorbis \
  VBR_good_5_120s_tears_of_steel_1080p.webm
ffmpeg -i 120s_tears_of_steel_1080p.webm -c:v vp9  -b:v 2000k \
  -minrate 1500k -maxrate 2500k -quality good -speed 8  -c:a libvorbis \
  VBR_good_8_120s_tears_of_steel_1080pp.webm

CBR

Bạn nên dùng chế độ Tốc độ bit không đổi (CBR) để phát trực tiếp với VP9.

Biểu đồ cho chế độ CBR

Về cơ bản, CBR đặt tốc độ bit trên dưới dạng " trần cứng" Điều này có nghĩa là quá trình mã hóa không thể tạo dữ liệu theo tốc độ mạng không thể mang lại.

Ví dụ: đối với 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ã hóa không làm cho mạng có quá nhiều dữ liệu mà ứng dụng có thể mang. Nếu có, vấn đề đồng bộ hóa â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, thay vì làm giảm hiệu quả nén. Bằng cách đảm bảo trần nhà xác định, VP9 sẽ giảm chất lượng khi đạt đến trần đó.

Các thông số dòng lệnh FFmpeg sau đây được sử dụng cho chế độ CBR:
ffmpeg
-quality realtime Nếu có thông tin này, thì FFmpeg sẽ tính đến chế độ cài đặt -speed tiếp theo
-speed <arg> Đối với tính năng phát trực tiếp, các giá trị hợp lệ là 5 đến 8, trong đó 5 là chất lượng cao nhất và 8 là chất lượng thấp nhất. (Đối với Video theo yêu cầu, 0 đến 4). Xem VBR ở trên.)
-minrate <arg>
-maxrate <arg>
Đặt tốc độ bit tối thiểu và tối đa ** Các giá trị này phải được đặt 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 tôi sửa các tốc độ bit mục tiêu, tốc độ bit tối thiểu và tối đa cho cùng một giá trị và cho bộ định lượng biết rằng các hoạt động này có giới hạn thời gian.

Chế độ bit CBR: Ví dụ về FFmpeg

Trong các ví dụ dưới đây, hãy tìm hiểu cách đặt tốc độ bit thành mục tiêu 2 Mb/giây và 500 kb/giây:

ffmpeg -i 120s_tears_of_steel_1080p.webm -c:v vp9  -b:v 2000k \
  -minrate 2000k -maxrate 2000k -quality realtime -speed 0 -c:a libvorbis \
  CBR_2000_realtime_0_120s_tears_of_steel_1080p.webm
ffmpeg -i 120s_tears_of_steel_1080p.webm -c:v vp9  -b:v 2000k \
  -minrate 2000k -maxrate 2000k -quality realtime -speed 5 -c:a libvorbis \
  CBR_2000_realtime_5_120s_tears_of_steel_1080p.webm
ffmpeg -i 120s_tears_of_steel_1080p.webm -c:v 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 vp9  -b:v 500k \
  -minrate 500k -maxrate 500k -quality realtime -speed 0 -c:a libvorbis \
  CBR_500_realtime__0_120s_tears_of_steel_1080p.webm
ffmpeg -i 120s_tears_of_steel_1080p.webm -c:v vp9  -b:v 500k \
  -minrate 500k -maxrate 500k -quality realtime -speed 5 -c:a libvorbis \
  CBR_500_realtime_5_120s_tears_of_steel_1080p.webm
ffmpeg -i 120s_tears_of_steel_1080p.webm -c:v vp9  -b:v 500k \
  -minrate 500k -maxrate 500k -quality realtime -speed 8 -c:a libvorbis \
  CBR_500_realtime_8_120s_tears_of_steel_1080p.webm

Kết quả

Mỗi lần mã hóa ở 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ý: CPU 4x Intel(R) Core(TM) i5-6500 @ 3,20 GHz
  • Bộ nhớ (RAM): 8060 MB (đã sử dụng 1492MB)
  • Đồ họa: 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 là một đoạn video dài 20 giây (1:20) được chọn từ Tearear Of Steel.

Tệp Mã hóa phút 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,8MB
Q_crf_10_120s_tears_of_steel_1080p.webm 118 125,3MB
Q_crf_63_120s_tears_of_steel_1080p.webm 27 4,5MB
Q_g_1_120s_tears_of_steel_1080p.webm 51 25,9 MB
Q_g_240_120s_tears_of_steel_1080p.webm 28 4,5MB
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,1MB
CQ_1400_750_crf_10_120s_tears_of_steel_1080p.webm 50 13,2MB
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
VBR_good_8_120s_tears_of_steel_1080p.webm 1 23,9 MB
CBR_2000_realtime_speed_0_120s_tears_of_steel_1080p.webm 98 21MB
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_0_120s_tears_of_steel_1080p.webm 73 6,2 MB
CBR_500_realtime_speed_5_120s_tears_of_steel_1080p.webm 1 8,5MB
CBR_500_realtime_speed_8_120s_tears_of_steel_1080p.webm 1 7,1MB

Có thể nhận thấy rằng việc đặt giá trị -speed trên 5 sẽ làm biến đổi tốc độ xử lý VP9. Mặc dù đây là sự gia tăng đáng kể về số lượng (được xem qua &

Lưu ý đối với các trường hợp sử dụng tính năng mở rộng quy mô (tăng kích thước lại)

rõ ràng chế độ tốc độ bit của VP9 không bị tách biệt và có thể được kết hợp với nhiều đối số và tham số khác để nhắm mục tiêu đến những trường hợp sử dụng cụ thể. Một trường hợp sử dụng điển hình là có thể điều chỉnh lại kích thước của video đầu ra để nhắm mục tiêu đến một thiết bị cụ thể.

Ví dụ điển hình là việc thay đổi luồng HD thành đầu ra SD. Xin nhắc lại, điều này sẽ ảnh hưởng đáng kể đến thời gian xử lý và tốc độ bit của đầu ra. Trong trường hợp hai lệnh FFmpeg giống hệt nhau, bạn chỉ cần điều chỉnh kích thước của video đầu ra sẽ thay đổi kích thước của tệp và kết quả là tốc độ bit của tệp đó trong mô hình truyền trực tuyến.

Để minh chứng cho điều này, chúng tôi đã lấy một ví dụ về điểm giữa từ mỗi chế độ tốc độ bit và đơn giản hơn là thêm các thông số tính toán lại.

Chế độ Q
ffmpeg -i 120s_tears_of_steel_1080p.webm -c:v 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 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 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 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ả mở rộng

Tệp Mã hóa phút 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 như lệnh trong các ví dụ trước đó của chúng tôi nhưng không có tỷ lệ:

Tệp Mã hóa phút 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,1MB
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, có kích thước tệp đầu ra cho mỗi lần giảm đáng kể, và trong hầu hết các ví dụ, thời gian mã hóa giảm thời gian mã hóa, nhưng ở chế độ Q, thời gian mã hóa thực sự tăng lên. Nén video "more" đòi hỏi nhiều nỗ lự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ư ở chế độ Q), điều này thực sự có thể làm tăng thời gian sản xuất tệp đầu ra. Đừng cho rằng tệp nhỏ hơn có thể luôn được phân phối nhanh hơn bằng quy trình mã hóa.

Tăng cường kết hợp giảm tốc độ bit kết hợp

So sánh cuối cùng, các ví dụ sau chạy lại các ví dụ về CQ, VBR và CBR về tính năng giảm giá thầu, nhưng lần này chúng tôi hạn chế tốc độ bit mục tiêu ở mức 500 kb/giây – khoảng một phần tư (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 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 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 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ả để tăng tỷ lệ và giảm tốc độ bit mục tiêu

Tệp Mã hóa phút 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,6MB

Như bạn có thể thấy, thời gian mã hóa đã được rút ngắn hơn nữa.