Chế độ cài đặt nên dùng
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à:
- Mức CQ là 36 (xem Hình 2b)
- Tốc độ bit mục tiêu là 276 kb/giây (xem Hình 2a)
- Tốc độ bit tối thiểu cho phép là 138 kb/giây (50% mục tiêu)
- Tốc độ bit tối đa được phép là 414 kbps (150% tốc độ bit mục tiêu)
- Khoảng cách tối đa giữa các khung hình chính là 240 giây
- 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:
- 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);
- 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:
- CBR, tốc độ bit mục tiêu là 386 kb/giây (xem Hình 2a)
- 2 cột ô (xem Hình 2d)
- 4 luồng (xem Hình 2d)
- Hiệu suất theo thời gian thực
- 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