用于实时 1080p 60 FPS 流式传输的轻量级编解码器

用于实时 1080p 60 FPS 流式传输的轻量级编解码器

指定问题

我想通过 1Gbps 以太网将我的桌面传输到另一台计算机,要求如下:

  • 分辨率:1920 x 1080
  • 每秒帧数:60
  • 输入数据:原始 24 位真彩色 (3Gbps)
  • 最大输出比特率:800Mbps
  • 延迟:<50ms(网络延迟小于1ms)
  • CPU:使用率低于 20%英特尔酷睿2 四核 Q9300
  • 不依赖于特定的硬件加速

假设我正在通过流玩游戏(但我没有),因此帧速率和延迟是最关键的问题。

问题

我正在寻找一种解决方案,可以以 10 倍到 20 倍的速度实时压缩原始视频数据。我不关心比特率。

经过测试的软件

  • 远程桌面协议:最高质量下使用速度低于 40Mbps,并且没有将帧速率设置为 60FPS 的选项。
  • TightVNC:允许指定质量和编码算法。使用AVB"raw tight"作为encoding参数,在 4GHz 上达到 80Mbps 60FPS英特尔酷睿 i7-6700K但在低端机器上,一些严重的延迟开始出现。使用raw编码器,延迟消失,但所需带宽超过 3Gbps,因此 fps 受到限制,一些帧被撕裂
  • 游戏随处:该软件使用 H264 编码原始数据并通过网络发送,但编码器阻止其达到 60FPS(使用的带宽 < 60Mbps)

经过测试的编码器

在原始数据输入上测试-单线程:

  • H264:以 1.33 倍运行(1 倍平均 60FPS)

    ffmpeg -i raw.avi -vcodec libx264 -crf 0 -preset ultrafast -threads 1 out.mp4

  • MJPEG:以 0.33 倍速运行

  • PNG:PNG 是计算更复杂比 MJPEG 更好,所以我没有测试它。

答案1

答案是专为以太网和流式传输 1080p 60FPS 视频而设计的 VC2。来自 ffmpeg 网站上的编解码器页面

SMPTE VC-2(以前称为 BBC Dirac Pro)。该编解码器主要用于专业广播,但由于它支持 8 位(有限范围或全范围)、10 位或 12 位的 yuv420、yuv422 和 yuv444,因此它适用于需要低开销和低压缩的其他任务(例如屏幕录制)。

目标视频比特率通常约为未压缩视频比特率的 1:6(例如,1920x1080 50fps yuv422p10 约为 400Mbps)。较高的值(接近未压缩比特率)会启用无损压缩模式。

相关内容