指定问题
我想通过 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)。较高的值(接近未压缩比特率)会启用无损压缩模式。