我想通过网络使用gstreamer(在Windows中)通过UDP流h264视频。 首先,如果我用这样的管道,一切都似乎是好的,我看到测试模式:使用udpsink流与gstreamer h264(C++)
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的任何方式,比如解析一个字符串或类似的东西?