Bốn nhà sản xuất. Bốn khối silicon chuyên dụng cố định. Một nhiệm vụ — biến một khung hình pixel thành vài kilobyte H.265 hoặc AV1 trong chưa tới năm mili-giây, sáu mươi lần mỗi giây, không rớt khung nào. Đây là cách NVIDIA, AMD, Intel và Apple thực sự so kè cho stream độ trễ thấp, và cách Remio chọn đúng encoder ngay lúc chạy.
Vì sao encoder phần cứng quan trọng với remote desktop
Thử encode một khung hình 1080p bằng libx264 trên một nhân CPU nhanh. Trên Apple M-series đời mới hay Ryzen 7000, bạn có thể đạt khoảng 8 đến 12 mili-giây với preset ultrafast, và lâu hơn với bất cứ thứ gì cố giữ chất lượng. Nghe có vẻ chấp nhận được cho tới khi bạn nhớ ra ngân sách: 16.6 mili-giây mỗi khung hình ở 60 FPS. Giờ cộng thêm capture, đóng gói packet, xếp hàng ở pacer, đẩy ra mạng, decode và render. Encode bằng CPU không chỉ làm bạn chậm đi — nó ngốn sạch ngân sách độ trễ, và ở bất cứ mức nào cao hơn 1080p60 nó sẽ rớt khung.
Encoder phần cứng giải quyết chuyện này bằng cách dành riêng phần silicon chuyên dụng cho đúng công việc đó. NVIDIA gọi khối của họ là NVENC. AMD gọi khối của họ là AMF (chính xác hơn là engine VCN mà AMF điều khiển). Intel gọi khối của họ là QuickSync (Media Engine bên trong iGPU của họ). Apple gọi khối của họ là VideoToolbox (đây là API; phần silicon là Media Engine trên chip M-series và A-series). Cả bốn tồn tại vì cùng một lý do: encode bằng phần mềm không thể đạt được mục tiêu độ trễ và tốc độ khung hình mà màn hình hiện đại, GPU hiện đại và người dùng hiện đại giờ đây kỳ vọng.
Riêng với Remio, mỗi mili-giây tiết kiệm được ở encoder là một mili-giây người dùng lấy lại được ở pacer, ở mạng và ở bộ render. Ngân sách độ trễ được công bố của chúng tôi nhắm mục tiêu 8 đến 20 ms glass-to-glass trên LAN; thời gian encode là biến số lớn nhất. Việc chọn encoder, và cấu hình của encoder đó, quyết định mọi thứ ở phía sau.
Bốn nhà sản xuất, nhìn thoáng qua
Trước khi đi sâu vào từng cái, cần hiểu chúng ta thực sự đang so sánh cái gì. Đây không phải những thư viện có thể thay thế cho nhau — chúng là những khối vật lý trên một con die, mỗi khối có ISA riêng, ngăn xếp driver riêng, những đặc tính riêng và lộ trình phát triển nhiều năm riêng. Chúng khác nhau ở chỗ hỗ trợ những codec nào, cho ra chất lượng ra sao, đạt độ trễ bao nhiêu, ngốn bao nhiêu điện, và tồn tại trên những nền tảng nào.
- NVENC có mặt trên mọi NVIDIA GeForce, Quadro và RTX kể từ 2012 (Kepler). Các thế hệ gắn với các dòng kiến trúc: gen 1 trên Kepler, gen 8 trên Ada Lovelace. Các sản phẩm datacenter Hopper có nhịp phát triển riêng.
- AMF phơi bày engine VCN (Video Core Next) của AMD, vốn thay thế cho VCE cũ. Có mặt trên mọi GPU Vega, RDNA, RDNA2 và RDNA3, cùng các APU đời mới.
- QuickSync đã có trong iGPU của Intel kể từ Sandy Bridge năm 2011 — khiến nó trở thành encoder phần cứng được triển khai rộng rãi nhất hành tinh. GPU rời Arc dùng cùng kiến trúc, nhân rộng lên.
- VideoToolbox là API của Apple; phần silicon bên dưới là Media Engine, được tích hợp vào mọi máy Mac Apple Silicon, mọi iPhone kể từ A6 và mọi iPad. Chip M-series đi kèm một hoặc hai engine tuỳ theo SKU.
NVENC — tám thế hệ tinh chỉnh của NVIDIA
NVENC là encoder mà hầu hết phần mềm streaming lấy làm mốc benchmark, một phần vì NVIDIA có ngân sách marketing và một phần vì phần silicon thực sự đã xuất sắc suốt một thập kỷ. Khối này đã trải qua tám thế hệ:
- Gen 1-3 (Kepler tới Maxwell, 2012-2014) — chỉ H.264, dùng được cho streaming nhưng chất lượng kém libx264 một khoảng rõ rệt.
- Gen 4 (Pascal, dòng GTX 10) — thêm encode H.265. Đây là thế hệ mà chất lượng NVENC đuổi kịp và có thể nói là vượt qua các preset fast của libx264 ở cùng bitrate.
- Gen 6 (Turing, dòng RTX 20, dòng GTX 16) — bước nhảy "Turing NVENC" thường được nhắc tới. Chất lượng ở bitrate thấp cải thiện đủ nhiều để các streamer thôi giả vờ rằng encode bằng CPU tốt hơn đáng kể cho các tình huống dùng trực tiếp.
- Gen 7 (Ampere, dòng RTX 30) — tinh chỉnh, chất lượng trên mỗi watt tương đương Turing về cơ bản.
- Gen 8 (Ada Lovelace, dòng RTX 40) — thế hệ NVIDIA đầu tiên có encode AV1 bằng phần cứng, cùng hai engine encoder trên các SKU cao cấp hơn. Ada NVENC có thể làm AV1 với chất lượng cạnh tranh các preset medium của libaom-av1 mà chỉ tốn một phần rất nhỏ chi phí CPU.
Cho tình huống độ trễ thấp, NVENC phơi bày ba chế độ kiểm soát bitrate liên quan. CBR với tuning low-latency và preset p1 (nhanh nhất) là cấu hình chuẩn: tốc độ đầu ra xác định, lookahead một khung, không B-frame. Remio dùng đúng cấu hình này khi chạy qua hevc_nvenc trên Windows. Thời gian encode trên Ada Lovelace ở 1080p60 H.265 ổn định ở mức 1 đến 3 ms.
Một điểm gây vướng trong quá khứ: NVENC bản tiêu dùng trong nhiều năm bị giới hạn ba phiên encode đồng thời qua driver của NVIDIA. Giới hạn đó được nâng lên tám vào năm 2023, rồi gần như được gỡ bỏ. Nếu bạn đang đọc một topic diễn đàn cũ cảnh báo về chuyện này, lời cảnh báo đó không còn đúng nữa.
AMF — kẻ chiếu dưới của AMD cuối cùng đã đuổi kịp
AMF (Advanced Media Framework) của AMD là API; engine bên dưới đã trải qua hai kiến trúc khác biệt. VCE (Video Coding Engine) cũ hơn có mặt trên các card thời GCN từ 2012 và là điểm yếu kinh niên trong các cuộc so kè encoder trực tiếp — chất lượng kém NVENC thấy rõ ở cùng bitrate, đặc biệt với nội dung nhiều chuyển động. AMD biết điều đó, cộng đồng streaming biết điều đó, và benchmark đã xác nhận điều đó.
Câu chuyện đó thay đổi với VCN (Video Core Next), ra mắt trên Vega và được tinh chỉnh qua mọi thế hệ tiếp theo:
- VCN 1.0-2.0 (Vega, RDNA1) — H.264 và H.265 với chất lượng cuối cùng đã tiến sát trong gang tấc so với NVENC Pascal/Turing.
- VCN 3.0 (RDNA2, dòng RX 6000) — cải thiện chất lượng đáng kể, đặc biệt ở bitrate thấp. Là thế hệ AMD đầu tiên mà tôi thấy thoải mái khi khuyên dùng cho stream game.
- VCN 4.0 (RDNA3, dòng RX 7000) — thêm encode AV1 song song với NVIDIA Ada. Hai encoder trên các SKU cao cấp hơn cho các phiên song song. Chất lượng AV1 cạnh tranh với AV1 của NVIDIA trong các benchmark độc lập.
Cho streaming độ trễ thấp, AMF phơi bày preset usage ultralowlatency, preset chất lượng speed và chế độ kiểm soát bitrate cbr. Remio dùng hevc_amf với cả ba — đúng bộ ba preset được ghi lại trong ghi chú kiến trúc streaming của chúng tôi. Thời gian encode trên RDNA3 ở 1080p60 H.265 thường nằm ở mức 2 đến 4 ms. RDNA2 khoảng 3 đến 5 ms. Các card thời VCN 1.x cũ hơn chạy gần mức 5 đến 7 ms — vẫn trong ngân sách, nhưng ít dư địa hơn cho các đỉnh keyframe.
Suốt năm năm, encoder của AMD là một trò cười. RDNA2 đã sửa được nó. RDNA3 khiến nó cạnh tranh về AV1. Thế lưỡng cực của encoder streaming giờ đã thành thế tam cực, và điều đó tốt cho tất cả mọi người.
QuickSync — nhà vô địch phổ biến thầm lặng
QuickSync là encoder mà gần như chắc chắn bạn đã sở hữu. Nó có trong mọi CPU Intel có đồ hoạ tích hợp kể từ Sandy Bridge năm 2011 — tức là hơn một thập kỷ laptop, NUC và máy bàn văn phòng có sẵn encode video phần cứng nằm không dùng đến vì người dùng tưởng rằng họ cần một GPU rời. Họ không cần.
Kiến trúc này đã tiến triển song song với dòng iGPU của Intel:
- Sandy Bridge-Skylake (2011-2015) — chỉ H.264, chất lượng tầm trung, nhưng độ trễ và điện năng dẫn đầu phân khúc laptop.
- Kaby Lake-Coffee Lake (2016-2018) — thêm H.265, 10-bit, encode 4K.
- Từ Ice Lake trở đi (2019+) — iGPU Xe Gen11/Gen12 cải thiện chất lượng mạnh mẽ. Nhiều benchmark xếp QuickSync Gen12 chỉ cách NVENC Turing vài phần trăm.
- Arc rời (2022+) — dòng GPU rời đầu tiên của Intel. Cùng kiến trúc Xe-HPG nhân rộng lên, có encode AV1. Arc là GPU tiêu dùng đầu tiên có AV1 phần cứng — ra mắt trước cả NVIDIA Ada và AMD RDNA3 — và chất lượng tốt đến bất ngờ. Một chiếc Intel Arc A380 vẫn là món hời phi lý xét về throughput AV1 thuần trên mỗi đô la.
Hồ sơ nhiệt là siêu năng lực thầm lặng của QuickSync. Vì nó nằm bên trong một iGPU vốn đã có sẵn trên SoC, chi phí biên khi dùng nó chỉ là bản thân khối encode — không phải đánh thức một GPU rời, không phải khởi động các bộ điều khiển bộ nhớ GDDR6. Trên một chiếc ThinkPad hay NUC, QuickSync cho chất lượng ngang NVENC ở mức khoảng một phần tư điện năng toàn hệ thống. Với host Windows của Remio, QuickSync là lựa chọn dự phòng thứ ba sau NVENC và AMF — không phải vì nó tệ hơn, mà vì người dùng có GPU rời thường muốn để iGPU rảnh cho các tác vụ khác.
VideoToolbox — Media Engine hợp nhất của Apple Silicon
Apple không tiếp thị một tên thương hiệu cho encoder phần cứng của họ theo cách NVIDIA làm. API là VideoToolbox; phần silicon là Media Engine, một khối do Apple thiết kế nằm bên trong mọi máy Mac M-series và mọi SoC iPhone/iPad kể từ A6.
Media Engine đi kèm với số lượng khác nhau tuỳ theo SKU:
- M1, M2, M3 — một Media Engine.
- M1 Pro/Max, M2 Pro/Max, M3 Pro/Max — hai Media Engine.
- M1 Ultra, M2 Ultra — bốn Media Engine (hai trên mỗi die được ghép).
- M3 Max (CPU 16 nhân) — hai Media Engine.
- Dòng M4 — Media Engine làm mới với throughput H.265 cải thiện.
Mỗi Media Engine xử lý encode/decode H.264, H.265 và ProRes bằng phần cứng. Encode ProRes là tính năng nổi bật cho người dựng video — không con chip tiêu dùng nào khác có — nhưng với streaming thì các khả năng liên quan là hỗ trợ H.265 main10 4:4:4 (chế độ ưa thích của Remio cho công việc đòi hỏi màu chính xác) và độ trễ encode thấp đến kinh ngạc.
Một khoảng trống đáng chú ý: không có encode AV1 trên bất kỳ Apple Silicon nào đang bán. Chip M-series giải mã AV1 kể từ M3, nhưng không thể encode. Khi stream từ một máy Mac, H.265 là mặc định thực tế trong tương lai gần.
Chỗ Apple thực sự thắng là hiệu quả năng lượng. Trên một chiếc M2 Pro encode 4K60 H.265 ở 30 Mbps, toàn bộ Media Engine ngốn khoảng 3 đến 5 watt. Tác vụ NVENC tương đương trên một chiếc RTX 4070 ngốn gần 35 watt điện năng toàn hệ thống — phần lớn trong đó là sàn tiêu thụ khi rảnh của GPU rời, chứ không phải khối encoder. Với một host Mac mini bật 24/7 chờ client, đây là khác biệt giữa "gần như không nhận ra trên hoá đơn điện" và "nhận ra rõ ràng".
So sánh song song
Đây là bốn engine trên cùng các trục. Con số độ trễ là preset ultra-low-latency 1080p60 H.265, tắt B-frame, VBV một khung — cấu hình của Remio. Chất lượng là xếp hạng cảm nhận sơ bộ ở 8 Mbps CBR; khác biệt tuyệt đối là nhỏ.
| Trục | NVENC (Ada) | AMF (RDNA3) | QuickSync (Arc / Gen12+) | VideoToolbox (M3+) |
|---|---|---|---|---|
| H.264 | Có | Có | Có | Có |
| H.265 (HEVC) | Có | Có | Có | Có (main10 4:4:4) |
| Encode AV1 | Có | Có | Có | Không |
| Encode ProRes | Không | Không | Không | Có |
| Độ phân giải tối đa | 8K H.265 | 8K H.265 | 8K (Arc), 4K (iGPU) | 8K H.265 |
| FPS tối đa ở 1080p H.265 | ~480 | ~360 | ~360 | ~600 (M3 Max) |
| Thời gian encode, 1080p60 H.265 | 1-3 ms | 2-4 ms | 2-4 ms | 2-3 ms |
| Điện năng tiêu thụ, 4K60 H.265 | ~35 W toàn hệ thống | ~30 W toàn hệ thống | ~8 W toàn hệ thống (iGPU) | ~5 W |
| Xếp hạng chất lượng @ 8 Mbps CBR | Đồng hạng 1 | Đồng hạng 2 | Đồng hạng 2 | Đồng hạng 1 |
| Nền tảng | Windows, Linux | Windows, Linux | Windows, Linux, macOS (máy Mac Intel) | macOS, iOS, iPadOS, tvOS |
| Phiên đồng thời | Không giới hạn | Không giới hạn | Không giới hạn | Không giới hạn |
Tóm tắt thật lòng: ở các thiết lập mà streaming remote desktop thực sự dùng (CBR, low-latency, không B-frame), cả bốn đều đủ tốt với một khoảng dư thoải mái. Điểm khác biệt là hỗ trợ AV1 (NVIDIA / AMD / Intel — không phải Apple), hiệu quả năng lượng (Apple, rồi iGPU Intel, rồi phần còn lại), và tính sẵn có theo nền tảng (bạn không thể chọn VideoToolbox trên host Windows hay NVENC trên máy Mac).
Remio chọn gì lúc chạy
Remio dò khả năng của host lúc khởi động và chọn encoder theo thứ tự ưu tiên xác định. Việc chọn thực tế nằm trong GpuCapabilities trên host C++/WinRT, được phản chiếu bằng Swift trên host Mac. Cả hai theo cùng một logic.
Trên host Windows:
- NVENC (
hevc_nvenc/h264_nvenc) — được chọn đầu tiên khi có GPU NVIDIA và driver phản hồi. Được ưu tiên vì đây là encoder có độ trễ thấp ổn định nhất trên dải thế hệ phần cứng rộng nhất. - AMF (
hevc_amf/h264_amf) — được chọn thứ hai khi có GPU rời AMD hoặc APU có VCN. Cấu hình vớiusage=ultralowlatency,quality=speed,rc=cbr. - QuickSync (
hevc_qsv/h264_qsv) — được chọn thứ ba khi có iGPU Intel. Tương đương về chức năng trong pipeline của chúng tôi; chúng tôi ưu tiên để iGPU rảnh nếu đã có GPU rời. - libx264 dự phòng bằng CPU — chỉ được chọn khi không encoder phần cứng nào phản hồi. Giới hạn ở 720p60 hoặc 1080p30 để nằm trong ngân sách độ trễ.
Trên host Apple: VideoToolbox là lựa chọn duy nhất, và cũng là lựa chọn duy nhất chúng tôi muốn. Media Engine bên trong mọi máy Mac được hỗ trợ (macOS 15+) xử lý H.265 main10 4:4:4 ngay từ đầu. Không cần đường dự phòng nào.
Thứ tự ưu tiên codec là H.265 trước, H.264 dự phòng, và AV1 chỉ khi cả hai đầu kết nối đều có AV1 phần cứng (encoder Ada / RDNA3 / Arc ở host; bộ giải mã Apple Silicon M3+ / Snapdragon 8 Gen 2+ / dòng RTX 40 ở client). Với các phiên LAN, chúng tôi giữ H.265 ngay cả trên các cặp thiết bị hỗ trợ AV1 — độ trễ encode mới là nút thắt cổ chai, không phải bitrate. AV1 chỉ đáng dùng trên các phiên qua TURN relay hoặc WAN bị giới hạn, nơi băng thông thực sự là giới hạn.
Đánh đổi giữa chất lượng và độ trễ
Mọi encoder phần cứng đều phơi bày cùng vài núm điều chỉnh, và mỗi núm đều đánh đổi chất lượng lấy độ trễ theo cùng một hướng. Cấu hình của Remio nằm ở đầu mút quyết liệt nhất của thang độ trễ, vì remote desktop, theo định nghĩa, là một ứng dụng thời gian thực nơi một khung hình cũ hơn 20 ms còn tệ hơn một khung hình hơi mờ hơn mức lý tưởng.
- CBR vs VBR. Bitrate biến thiên cho chất lượng tốt hơn ở cùng mức trung bình bằng cách chi bit vào nơi chúng có ích. Nhưng VBR cũng tạo ra kích thước từng khung khó lường, nghĩa là việc xếp hàng ở pacer khó lường, nghĩa là độ trễ khó lường. Remio dùng CBR ở mọi nơi. Chi phí chất lượng là nhỏ; sự ổn định về độ trễ thì rất lớn.
- B-frame. B-frame tham chiếu cả khung quá khứ lẫn khung tương lai, nên bộ giải mã phải đợi khung tương lai đến trước khi giải mã B-frame. Điều đó ổn với video-on-demand và chí mạng với thời gian thực. Remio tắt B-frame trên mọi codec, trên mọi nền tảng.
- GOP / khoảng cách keyframe. GOP dài hơn (nhiều khung giữa các keyframe) nén tốt hơn. GOP ngắn hơn phục hồi nhanh hơn khi mất packet. Remio chạy GOP gần như vô hạn và dựa vào Picture Loss Indication (PLI) để yêu cầu một keyframe mới khi bộ giải mã báo mất dữ liệu. Điều này khớp với triết lý streaming của chúng tôi là "bỏ qua khung đã mất, chỉ render khung mới nhất" thay vì truyền lại dữ liệu cũ.
- Lookahead. NVENC, AMF và QuickSync đều hỗ trợ lookahead nhiều khung cho lượng tử hoá thích ứng. Mỗi khung lookahead thêm một khung độ trễ. Remio chạy lookahead bằng không hoặc một khung — mức thấp nhất của mọi encoder.
- Bộ đệm VBV. Cửa sổ Video Buffering Verifier là số bit mà encoder được phép "vay trước" trước khi ổn định lại về mức bitrate mục tiêu. VBV lớn hơn cho chất lượng mượt hơn. VBV nhỏ hơn cho kiểm soát bitrate chặt hơn và độ trễ thấp hơn. Remio dùng VBV 1 khung — bitrate chia cho tốc độ khung hình — là giá trị hợp lệ nhỏ nhất.
Khuôn mẫu này nhất quán trên cả bốn nhà sản xuất. Độ trễ thấp thời gian thực là một bài toán tối ưu có ràng buộc: bạn từ bỏ vài phần trăm chất lượng mà lookahead và B-frame mang lại trong encode offline, để đổi lấy độ trễ một khung có thể dự đoán mà tương tác thời gian thực đòi hỏi. Mọi sản phẩm streaming đang bán — Remio, Parsec, NVIDIA GeForce NOW, Xbox Cloud Gaming — đều thực hiện cùng một đánh đổi theo cùng một hướng.
Điều bạn (người dùng) thực sự cần quan tâm
Nếu bạn nhảy thẳng xuống cuối: encoder phần cứng của bất kỳ GPU đời mới nào cũng ổn cho remote desktop.
Khác biệt ở các cấu hình thời gian thực còn nhỏ hơn sàn nhiễu của bất kỳ benchmark hợp lý nào. Một người dùng Pascal GTX 1060 có trải nghiệm Remio y hệt người dùng RTX 4090 — cả hai đều lấp đầy pipeline 60 FPS ở độ trễ dưới một khung, cả hai đều cho ra kết quả không thể phân biệt ở mức 8 Mbps mà LAN dùng.
Các ngoại lệ, xếp theo mức độ thường xuyên quan trọng:
- Phần cứng hỗ trợ AV1 giúp ích trên mạng chậm. Wi-Fi khách sạn hay điểm phát di động, một host Ada / RDNA3 / Arc với client M3+ hoặc dòng RTX 40 mua thêm ~25 phần trăm dư địa ở cùng chất lượng. Trên LAN, chẳng thêm gì.
- Máy Mac Apple Silicon là những host tốt đến đáng kinh ngạc. Độ trễ thấp của Media Engine, H.265 xuất sắc và mức tiêu thụ 3-5 W khiến một chiếc Mac mini hay Studio trở thành một trong những nguồn streaming luôn-bật tốt nhất bạn có thể mua. Không có encode AV1 là khoảng trống duy nhất, và không đáng kể trên LAN.
- Một chiếc Intel Arc A380 là món hời vô lý cho AV1. ~$120 mua được một khối encoder đánh bại mọi thứ khác dưới $400.
- Đường dự phòng libx264 bằng CPU là có thật. Không có encoder phần cứng — laptop cũ, server không iGPU — Remio vẫn chạy. Chỉ là không ở 4K, không ở 120 FPS, và không tránh khỏi việc đốt một nhân CPU.
Ngoài những trường hợp hiếm đó, câu trả lời đúng là câu đơn giản nhất: hãy dùng chiếc GPU mà đằng nào bạn cũng sẽ mua. Mọi nhà sản xuất đời mới đều đã hội tụ về cùng khả năng, cùng preset độ trễ thấp, cùng vùng chất lượng. Remio chọn đúng cái lúc chạy để bạn khỏi phải bận tâm. Cứ tiếp tục làm bất cứ điều gì bạn đã mở một phiên remote desktop để làm — code, dựng video, sửa server, đẩy một bản vá từ quán cà phê.
Đó chính là toàn bộ ý nghĩa của silicon chuyên dụng cố định. Nó cứ thế hoạt động, và bạn thôi để ý đến nó.