使用udpsink使用gstreamer(c ++)流式传输h264

时间:2013-02-18 11:21:31

标签: udp streaming h.264 gstreamer

我正在尝试通过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但我没有这些strcutures的声明。 有人知道用其他方式设置x264enc的方法,比如解析一个字符串或类似的东西吗?

2 个答案:

答案 0 :(得分:2)

我知道这是一篇较旧的帖子,但您可以使用与预设值对应的简单整数设置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

答案 1 :(得分:0)

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