GStreamer视频流性能低

时间:2019-04-01 17:33:19

标签: gstreamer

我正在从树莓派流式传输GStreamer的videotestsrc。该流必须是TCP。

我的服务器管道:

gst-launch-1.0 videotestsrc horizontal-speed=5 ! x264enc tune="zerolatency" threads=1 ! mpegtsmux ! tcpserversink host=10.0.0.7 port=3344

我的客户管道:

gst-launch-1.0 tcpclientsrc port=3344 host=10.0.0.7 ! tsdemux ! h264parse ! avdec_h264 ! autovideosink

它确实起作用,我在OpenGL窗口中的客户端上获得了想要的视频。但是:

1)树莓派需要大量的cpu功能,约占60%。

2)质量很差。我一直在不断出现一些损坏的区域,例如颜色错误的矩形,有时短时间卡住视频。

3)我在客户端遇到这样的错误:解码MB 5 13,字节流2817时出错

我之前使用过github.com/silvanmelchior/RPi_Cam_Web_Interface(当然,使用树莓派pi相机代替videotestsrc)。它具有非常低的延迟,良好的质量并且几乎没有CPU能力。但这是用PHP编写的,我想在c ++应用程序中实现流。对于我来说,GStreamer似乎是一个不错的选择,因为这些工作就是为它创建的。我也可以使用GStreamer进行音频流传输。

我的问题是:

1)为什么GStreamer需要那么多的CPU能力,而RPi_Cam_Web_Interface几乎不需要呢? videotestsrc是否存在问题(因为它是实时创建的)?

2)为什么即使使用环回接口以及与服务器和客户端使用同一台计算机的情况下,我的质量也是如此?

3)我该怎么做才能提高设置效率和质量?

感谢很快的答复。

1 个答案:

答案 0 :(得分:1)

您可以通过使用encodebin而不是avdec_h264来减少cpu负载。 如果有人知道,请尝试帮助我提高性能