首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么我不能在本地主机上通过UDP发送数据呢?

为什么我不能在本地主机上通过UDP发送数据呢?
EN

Stack Overflow用户
提问于 2016-08-08 15:56:06
回答 1查看 2.9K关注 0票数 0

我试图在本地主机上测试udp流,但它没有显示任何内容:

视频测试(或audiotestsrc) -> udpsink (端口: 5078,主机: 127.0.0.1)

以下是代码:

代码语言:javascript
复制
console_out_inf("TESTING", "Starting work with test elements");
gint port = 5078;
// TEST PIPELINE OUT
gst_bin_add_many(GST_BIN(GSD->pipetest_out), GSD->testsrc, GSD->udpsink, NULL);
gchar* host = "127.0.0.1";
g_object_set(GSD->udpsink, "port", port, NULL);
g_object_set(GSD->udpsink, "host", host, NULL);
if (!gst_element_link(GSD->testsrc, GSD->udpsink))
    console_out_bad("STREAMING", "Error linking test udp elements -- SEND");
else
    console_out_yes("STREAMING", "Correctly linked test udp elements -- SEND");

// TEST PIPELINE IN
gst_bin_add_many(GST_BIN(GSD->pipetest_in), GSD->udpsrc, GSD->autovideosink, NULL);

gst_element_set_state(GSD->udpsrc, GST_STATE_NULL);
g_object_set(GSD->udpsrc, "port", port, NULL);

if (!gst_element_link(GSD->udpsrc, GSD->autovideosink))
    console_out_bad("STREAMING", "Error linking test udp elements -- RECEIVE");
else
    console_out_yes("STREAMING", "Correctly linked test udp elements -- RECEIVE");
// PLAY TEST PIPELINE OUT
GstStateChangeReturn ret1;
ret1 = gst_element_set_state(GSD->pipetest_out, GST_STATE_PLAYING);
if (ret1 == GST_STATE_CHANGE_FAILURE)
    console_out_bad("TESTING", "Failed playing pipetest out");
else
    console_out_yes("TESTING", "Correctly played pipetest out");

// PLAY TEST PIPELINE IN
GstStateChangeReturn ret2;
ret2 = gst_element_set_state(GSD->pipetest_in, GST_STATE_PLAYING);
if (ret2 == GST_STATE_CHANGE_FAILURE)
    console_out_bad("TESTING", "Failed playing pipetest in");
else
    console_out_yes("TESTING", "Correctly played pipetest in");

// PRINT PIPELINES
GST_DEBUG_BIN_TO_DOT_FILE(GST_BIN(GSD->pipetest_out), GST_DEBUG_GRAPH_SHOW_ALL, "pipetest_out");
GST_DEBUG_BIN_TO_DOT_FILE(GST_BIN(GSD->pipetest_in), GST_DEBUG_GRAPH_SHOW_ALL, "pipetest_in");

这是“我自己的控制台输出”:

编辑:不再相关了!一切都很好,管道的构建是正确的,但是

管道输出: videotestsrc -> udpsink (主机:127.0.0.1,端口: 5078)

管道IN: udpsrc (端口: 5078) ->自动视频链路

自动录像链接不显示任何东西!通过检查netstat -a,该端口上没有显示连接。

附加信息:

  1. 当然,使用"gstreamer调试“生成的图形只包含连接到udpsink的视频/音频testsrc元素。
  2. 当我第一次运行这段代码时,出现了"Windows防火墙窗口“,所以我猜有些东西正在发送/接收。
  3. 这在Visual 2013/Qt5外接程序项目中,但这不应该是一个问题。

有人知道我做错了什么吗?

EN

回答 1

Stack Overflow用户

发布于 2016-08-08 16:15:20

这段代码看起来不错,但与您发布的控制台输出无关。

试着用命令行gst- testing一段一段地测试您的管道:

代码语言:javascript
复制
gst-launch-1.0 -e -v videotestsrc ! udpsink host="127.0.01"

首先连接到fakesink,然后在udp接收器中交换,一旦在命令行中让它在代码中镜像命令。

尝试使用host="localhost“或host="192.168.0.1”--我不记得了,但我认为udpsink可能无法发送回环

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38833677

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档