有效发送/流式传输实时视频

时间:2017-11-21 12:09:41

标签: c# video-streaming real-time

我正在开发一款游戏,我希望将相机的输出从服务器(呈现所有内容)传输到多个客户端。为简单起见,我忽略了所有音频数据。

目前,我将相机的渲染记录为400x300分辨率的位图,然后将其转换为JPEG,添加时间戳并通过UDP将其发送到客户端。

使用给定的分辨率,我的有效负载大小从13KB到20KB不等。如何使其更有效?

2 个答案:

答案 0 :(得分:1)

使用视频编解码器,而不是图像编解码器。

JPEG适用于单张图像。 (有MJPEG,这实际上是一个黑客...但它并不是那么好的质量。)

大多数设备都有可用的H.264硬件编解码器。如果没有,您可以在软件中使用H.264,或使用免费开放的编解码器,如VP8或VP9 ......请注意,那些需要更多CPU进行编码。 (并不是说它在如此低的分辨率下会很重要。)

答案 1 :(得分:0)

考虑到你想要保留图像尺寸,我可以想到两件可以减少有效载荷的事情:

这是我刚刚做的计算:

400 x 300 JPEG,质量10/10 = 29.6KB。

400 x 300 JPEG,质量为8/10 = 19.6KB。

400 x 300 JPEG,5/10质量= 8.7KB。

400 x 300 JPEG,2/10质量= 5.6KB。

因此,正如您所看到的,失去0.2质量会导致丢失1/3的图像重量,这很重要。

  • 帧速率 - 今天的大多数相机都可以支持高达200 FPS,这对于流畅的视频来说完全没有必要。您可以使用20 FPS并仍然可以获得高质量的视频。降低FPS将线性降低有效载荷。