iT邦幫忙

2025 iThome 鐵人賽

DAY 11
0
Cloud Native

K8s上的機器人沙盒系列 第 12

Day 12|影像編碼調校:H.264 / VP9 / AV1、NVENC、解析度與 FPS 的平衡

  • 分享至 

  • xImage
  •  

承接 Day 11(Sidecar 模式),今天深入探討 影像編碼調校。不同編解碼器(H.264 / VP9 / AV1)、硬體加速(NVENC)、解析度與 FPS 的選擇,會直接影響 WebRTC 串流的 延遲、畫質與頻寬使用。這是使用者體驗能否流暢的關鍵。

A. 編解碼器比較

1) H.264

  • 優勢

    • NVENC 支援最成熟(NVIDIA GPU 原生硬體加速)。
    • 瀏覽器相容性最好(Chrome/Firefox/Safari/Edge 全支援)。
    • 延遲低,適合即時互動(Isaac Sim 控制)。
  • 缺點:壓縮效率較差 → 需要較高位元率維持畫質。

2) VP9

  • 優勢:壓縮率比 H.264 高 30% 左右,同等畫質下所需位元率更低。

  • 缺點

    • 硬體編碼支援度不佳,多數情況下用 CPU 軟體編碼 → 延遲增加。
    • 低階設備解碼可能吃力。

3) AV1

  • 優勢

    • 新一代編碼,壓縮效率最佳,比 H.264 省 50% 以上頻寬。
    • 越來越多新 GPU(RTX 40 系列、Ada/Blackwell)支援 AV1 NVENC。
  • 缺點

    • 舊 GPU 缺乏硬體支援 → 軟體編碼超高延遲。
    • 瀏覽器支援正在普及中,但相容性不如 H.264。

B. NVENC(硬體加速)

  • NVIDIA NVENC:GPU 內建硬體編碼器,專門處理 H.264 / H.265 / AV1。

  • 延遲:單幀編碼延遲 < 10ms,遠低於軟體編碼。

  • 並行度:一張 GPU 可同時支援多串流(依卡型號而異)。

  • 建議

    • Isaac Sim / Isaac Lab → 優先使用 H.264 NVENC
    • 若 GPU 支援 AV1 NVENC,可做高畫質實驗,但需確認瀏覽器端支援。

C. 解析度與 FPS 的取捨

場景 推薦解析度 推薦 FPS 位元率區間
遠端互動(低延遲控制) 1280×720 30~60 2~4 Mbps
高畫質展示(研究報告/錄影) 1920×1080 30~60 4~8 Mbps
4K 場景(僅展示,不交互) 3840×2160 30 12~20 Mbps
  • FPS 與延遲:

    • 30 FPS 已足夠大部分互動。
    • 60 FPS 更流暢,但需 GPU 編碼效能與網路頻寬配合。
  • Bitrate 建議:可設 target/max,例如 target=4Mbps, max=8Mbps,WebRTC 自適應調整。

D. 實作:Selkies GStreamer Pipeline 調校

在 Selkies Sidecar 中,可以透過環境變數或 Helm values.yaml 控制 pipeline:

# values-encoding.yaml
selkies:
  webrtc:
    codec: h264
    video:
      width: 1280
      height: 720
      framerate: 30
      bitrate: 4000k   # 4 Mbps
    encoder: nvh264enc  # NVIDIA H.264 NVENC

如果要測試 VP9/AV1,可改 codec: vp9codec: av1,但需確認 GPU/瀏覽器支援。

E. 常見問題

  • 黑畫面:瀏覽器端不支援該 codec(尤其是 AV1)。
  • 延遲過高:可能是軟體編碼 → 確認是否啟用 NVENC。
  • 畫質差:bitrate 太低;可提高 target bitrate 或降低解析度。
  • 卡頓:FPS 設定過高,GPU 編碼能力不足。

感想

やっべ、帰りが遅すぎ......


上一篇
Day 11|Sidecar 模式:把 Selkies 掛到目標 App 旁
系列文
K8s上的機器人沙盒12
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言