0

我正在尝试通过 UDP 使用 gstreamer(在 windows 中)通过网络流式传输 h264 视频。首先,如果我使用这样的管道,一切似乎都很好,我看到了测试模式:

videotestsrc, ffmpegcolorspace, x264enc, rtph264pay, rtph264depay, ffdec_h264, ffmpegcolorspace, autovideosink

现在我决定将此管道分为客户端和服务器部分,使用 udpsink 和 udpsrc 通过 udp 传输流。

Server: videotestsrc, ffmpegcolorspace, x264enc, rtph264pay, udpsink
Client: udpsrc, rtph264depay, ffdec_h264, ffmpegcolorspace, autovideosink

在服务器上,我使用类似的东西:

source = gst_element_factory_make ("videotestsrc", "source");
ffmpegcolortoYUV = gst_element_factory_make ("ffmpegcolorspace", "ffmpegcolortoYUV");
encoder = gst_element_factory_make ("x264enc", "encoder");
rtppay = gst_element_factory_make ("rtph264pay", "rtppay");
udpsink = gst_element_factory_make ("udpsink", "sink");

g_object_set (source, "pattern", 0, NULL);
g_object_set( udpsink, "host", "127.0.0.1", NULL );
g_object_set( udpsink, "port", 5555, NULL );

然后我将元素添加到管道并运行,任何地方都没有错误。现在,如果我查找 UDP 端口 5555,它没有在监听!!!!

客户端部分也可以运行,但如果服务器端没有侦听 UDP 端口,它将无法工作。

编辑:事实上我非常接近解决方案......如果我启动客户端它可以工作,但是在可视化方面存在一些问题......我认为问题在于 x264enc 配置。任何人都知道如何更改 x264enc 参数,如速度预设或调整???我试图实例化 GstX264EncPreset 或 GstX264EncTune 但我没有这些结构的声明。任何人都知道以其他方式设置 x264enc 的任何方法,例如解析字符串或类似的东西?

4

2 回答 2

3

我知道这是一篇较旧的帖子,但您可以使用与预设值相对应的简单整数来设置 GstX264EncPreset 值。

g_object_set(encoder, "speed-preset", 2, NULL);为我工作。可以使用gst-inspect-1.0 x264enc和 找到这些值,如下所示:

  speed-preset        : Preset name for speed/quality tradeoff options (can affect decode compatibility - impose restrictions separately for your target decoder)
                        flags: readable, writable
                        Enum "GstX264EncPreset" Default: 6, "medium"
                           (0): None             - No preset
                           (1): ultrafast        - ultrafast
                           (2): superfast        - superfast
                           (3): veryfast         - veryfast
                           (4): faster           - faster
                           (5): fast             - fast
                           (6): medium           - medium
                           (7): slow             - slow
                           (8): slower           - slower
                           (9): veryslow         - veryslow
                           (10): placebo          - placebo
于 2014-07-15T20:45:21.863 回答
0

尝试将 udpsrc 元素的上限设置为“application/x-rtp”。

于 2013-07-15T18:35:11.407 回答