Phần này liệt kê các đề xuất về việc mã hoá VP9 cho nhiều cấu hình phổ biến:

  • Video được tối ưu hoá cao cho web và thiết bị di động (VOD)
  • Phân phối nội dung trả phí (VOD)
  • Thể thao, Ảnh động, Nội dung 10 bit (VOD)
  • Mã hóa trực tiếp
  • WebRTC

Giới thiệu

Khi mã hoá video, bạn cần cân nhắc một số yếu tố sau:

  • Bạn đang tạo một phiên bản duy nhất cho nội dung nghe nhìn hay nhiều phiên bản ở các tốc độ bit và độ phân giải khác nhau?
  • Bạn đang tạo sự kiện phát trực tiếp hay tệp video theo yêu cầu?
  • Bạn đang mã hoá loại nội dung nghe nhìn nào – nội dung đó có nhiều chuyển động không? Chi tiết? Ảnh động?
  • Bạn đang mã hoá để có chất lượng tối đa (ví dụ: nội dung trả phí) hay tốc độ tối đa (ví dụ: hội nghị truyền hình)?

Phần này bắt đầu bằng các chế độ cài đặt cho một tệp video cơ bản theo yêu cầu, sau đó đưa ra các đề xuất cho tất cả những câu hỏi này.

Cài đặt cơ bản

Tốc độ bit mã hoá

Sau đây là tốc độ bit được đề xuất làm cơ sở để phân phối trên web và thiết bị di động. Những đề xuất này giúp giảm thiểu tốc độ bit mà vẫn đạt được chất lượng video phù hợp để phân phối trên web và thiết bị di động cho người tiêu dùng; hãy coi những đề xuất này là đề xuất về tốc độ bit "thấp" mà vẫn có thể đạt được chất lượng hợp lý.

Tốc độ bit mục tiêu được đề xuất

Kích thước/Tốc độ khung hình Tốc độ bit trung bình (VOD, kb/giây) Tốc độ bit trung bình (Trực tiếp, kb/giây)
320x240p ở tốc độ 24,25,30 150 250
640x360p ở tốc độ 24,25,30 khung hình/giây 276 386
640x480p ở tốc độ 24,25,30 khung hình/giây 512 (LQ), 750 (MQ) 720 (LQ), 1024 (MQ)
1280x720p ở tốc độ 24,25,30 hình/giây 1024 1440
1280x720p ở tốc độ 50,60 khung hình/giây 1800 2500
1920x1080p ở tốc độ 24,25,30 khung hình/giây 1800 2500
1920x1080p @ 50,60 3000 4200
2560x1440p ở tốc độ 24,25,30 khung hình/giây 6000 8400
2560x1440p ở tốc độ 50,60 khung hình/giây 9000 12600
3840x2160p ở tốc độ 24,25,30 khung hình/giây 12000 16800
3840x2160p ở tốc độ 50,60 khung hình/giây 18000 25200

Hình 2a: Tốc độ bit mục tiêu

Chế độ cài đặt mã hoá VOD

Chế độ cài đặt cho hầu hết các loại nội dung

Đố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) trong khi phân bổ nhiều bit hơn cho các chuỗi khó.

Bạn cũng nên cho phép tốc độ bit nằm trong khoảng từ 50% đến 150% của mục tiêu, sử dụng các giá trị chất lượng như trong biểu đồ bên dưới. Chế độ này yêu cầu mã hoá hai lượt và bạn nên sử dụng chế độ cài đặt nhanh hơn cho chất lượng HD trở lên như được chỉ ra bên dưới.

Chế độ cài đặt bộ mã hoá cho phương thức mã hoá CQ

Chiều cao khung Chất lượng mục tiêu (CQ) Chế độ mã hoá
240 37 TWO_PASS_MEDIUM
360 36 TWO_PASS_MEDIUM
480 34 (chất lượng thấp) hoặc 33 (chất lượng trung bình) TWO_PASS_MEDIUM
720 32 TWO_PASS_FAST
1080 31 TWO_PASS_FAST
1440 24 TWO_PASS_FAST
2160 15 TWO_PASS_FAST

Hình 2b: Chế độ cài đặt được đề xuất cho CQ

Cuối cùng, bạn nên dùng 240 khung hình video giữa các khung hình chính (đối với nội dung 30 khung hình/giây, con số này tương đương với 8 giây). Khung hình chính là những khung hình video tự đủ; chúng không phụ thuộc vào bất kỳ khung hình nào khác để kết xuất (xem Cấu trúc GOP để biết giải thích chi tiết hơn). Đối với chế độ phát trên web và thiết bị di động, chúng tôi cho phép khoảng cách rộng giữa các khung hình chính vì điều này cho phép bộ mã hoá chọn vị trí "tốt nhất" cho các khung hình chính để tối đa hoá chất lượng.

Ví dụ về thông số dòng lệnh: Video 640x360

Theo thông tin trên, các đề xuất cho video 360p là:

  1. Mức CQ là 36 (xem Hình 2b)
  2. Tốc độ bit mục tiêu là 276 kb/giây (xem Hình 2a)
  3. Tốc độ bit tối thiểu cho phép là 138 kb/giây (50% mục tiêu)
  4. Tốc độ bit tối đa được phép là 414 kbps (150% tốc độ bit mục tiêu)
  5. Khoảng cách tối đa giữa các khung hình chính là 240 giây
  6. Hai lượt truyền, hồ sơ "Trung bình"

Điều này cung cấp các tham số dòng lệnh sau cho libvpx và FFmpeg:

libvpx

--end-usage=cq --cq-level=36 --target-bitrate=276 --minsection-pct=50 \
  --maxsection-pct=150 --kf-max-dist=240 --passes=2 --good --cpu-used=2

FFmpeg

-crf 36 -b:v 276k -minrate 138k -maxrate 414k -g 240 -good -speed 2

Chế độ cài đặt nội dung trả phí

Trong các ví dụ trên, chúng tôi đã sử dụng chế độ cài đặt mã hoá khá nhanh để tạo các luồng video một cách hiệu quả. Tuy nhiên, đối với một số nội dung (chẳng hạn như phim có tính phí), bạn nên dành nhiều thời gian hơn trong quá trình mã hoá để có được đầu ra chất lượng cao hơn.

Đối với nội dung chất lượng cao, bạn nên dùng các chế độ cài đặt tương tự như trên, nhưng có các chế độ đặt sẵn khác, hướng dẫn bộ mã hoá dành nhiều thời gian hơn để tối ưu hoá chất lượng:

Chế độ mã hoá nội dung cao cấp và tham số dòng lệnh

Chiều cao khung Chế độ mã hoá libvpx FFmpeg
240 TWO_PASS_VERY_SLOW --good --cpu-used 0 -good -speed 0
360 TWO_PASS_VERY_SLOW --good --cpu-used 0 -good -speed 0
480 TWO_PASS_VERY_SLOW --good --cpu-used 0 -good -speed 0
720 TWO_PASS_SLOW --good --cpu-used 1 -good -speed 1
1080 TWO_PASS_MEDIUM --good --cpu-used 2 -good -speed 2
1440 TWO_PASS_MEDIUM --good --cpu-used 2 -good -speed 2
2160 TWO_PASS_MEDIUM --good --cpu-used 2 -good -speed 2

Hình 2c: Các chế độ mã hoá nội dung cao cấp

Chế độ cài đặt nội dung thể thao và nội dung có chuyển động nhanh

Bạn nên sử dụng phương thức mã hoá VBR cho nội dung thể thao. Các môn thể thao thường có mức độ chuyển động nhanh và phức tạp khá nhất quán, đồng thời việc sử dụng VBR sẽ đạt được chất lượng cao hơn trong những khoảng thời gian có chuyển động chậm hơn so với phương pháp mã hoá QP.

Đối với dòng lệnh, sự khác biệt chính giữa chế độ QP và VBR là bạn sẽ không chỉ định cấp độ CQ; nếu không, các chế độ cài đặt được đề xuất sẽ giống nhau.

Ví dụ về các thông số dòng lệnh VBR: Video 640x360

libvpx

--end-usage=vbr --target-bitrate=276 --minsection-pct=50 --maxsection-pct=150 \
  --kf-max-dist=240 --passes=2 --good --cpu-used=2

FFmpeg

-b:v 276k -minrate 138k -maxrate 414k -g 240 -good -speed 2

Cài đặt ảnh động và trò chơi

Chế độ cài đặt nội dung gây phiền toái / chất lượng thấp

Đối với nội dung có nhiều nhiễu, bạn nên tăng số lượng và độ mạnh của các khung alt-ref. Khung hình tham chiếu thay thế là những khung hình "vô hình", không bao giờ xuất hiện với người dùng, nhưng được dùng làm khung hình tham chiếu khi tạo khung hình cuối cùng (bạn có thể đọc thêm thông tin tại đây).

Bạn nên dùng các thông số sau để hướng dẫn VP9 sử dụng nhiều khung hình alt-ref hơn:

libvpx

--auto-alt-ref=1 --lag-in-frames-16 --arnr-maxframes=5 --arnr-strength=3

FFmpeg

Mã hoá 10 bit/HDR

Đối với chế độ mã hoá 10 bit, bạn nên sử dụng VP9 Profile 2. Mã hoá ở 10 bit không yêu cầu thêm bit nào, vì vậy các tham số còn lại vẫn giữ nguyên:

libvpx

--profile=2

FFmpeg

-profile 2

Chế độ cài đặt mã hoá trực tiếp

Phát trực tiếp

Quá trình mã hoá trực tiếp thường được thực hiện dưới dạng CBR, điều này hạn chế khả năng tối đa hoá chất lượng của bộ mã hoá. Vì lý do này, chúng tôi sẽ sử dụng tốc độ bit cao hơn như minh hoạ trong Hình 2a.

Đối với việc mã hoá trực tiếp, chúng ta cũng muốn tối đa hoá số luồng. Bạn có thể thực hiện việc này bằng cách:

  1. Cho phép VP9 chia video thành các cột (có chiều rộng tối thiểu là 256 pixel và phải là luỹ thừa của 2);
  2. Chỉ báo cho VP9 sử dụng nhiều sức mạnh CPU hơn. Bảng sau đây liệt kê các đề xuất cho từng độ phân giải.

Đề xuất về việc phân chia thành phần và tạo luồng

Chế độ cài đặt bộ mã hoá cho phương thức mã hoá CQ
Kích thước khung Số lượng cột ô Số lượng luồng
320x240 1 2
640x360 2 4
640x480 2 4
1280x720 4 8
1920x1080 4 8
2560x1440 8 16
3840x2160 8 16

Hình 2d. Đề xuất về việc phân chia và phân luồng để mã hoá trực tiếp

Tính năng mã hoá trực tiếp cũng sẽ đặt thời hạn thành "theo thời gian thực" để đảm bảo hiệu suất và sẽ hướng dẫn các khung hình alt-ref không xem xét tương lai (điều này sẽ làm tăng độ trễ):

Từ đó, các đề xuất cho video trực tiếp 360p như sau:

  1. CBR, tốc độ bit mục tiêu là 386 kb/giây (xem Hình 2a)
  2. 2 cột ô (xem Hình 2d)
  3. 4 luồng (xem Hình 2d)
  4. Hiệu suất theo thời gian thực
  5. Không có độ trễ do khung hình thay thế (không có độ trễ khung hình)

Điều này cung cấp các tham số dòng lệnh sau cho libvpx và FFmpeg:

libvpx

--end-usage=cbr --target-bitrate=386 --cpu-used=4 --tile-columns=2 --rt --lag-in-frames=0

FFmpeg

ffmpeg -i tears_of_steel_1080p.webm -vf scale=640x480 -r 29.97 -b:v 386k \
  -minrate 386k -maxrate 386k -c:v libvpx-vp9 -c:a libopus output.webm

Mã hoá VP9 trực tiếp cho DASH/YouTube

Mã hoá WebRTC