coturn中turnutils_peer和turnutils_uclient使用说明

coturn的作用有两个:寻找反射地址以及流转发,本人写过webrtc janus服务器部署在公网,coturn转发媒体流

coturn下面的工具turnutils_stunclient用于查找反射地址。
而turnutils_peer和turnutils_uclient用于测试转发功能,再次给以说明:
首先启动turnutils_peer,读者可以使用下面方法启动:

./turnutils_peer -p 34800

这个相当于在当前服务器下,启动了一个本地udp端口34800,这个端口用于接收数据。

然后本人在内网上,启动了下列命令。

./turnutils_uclient -v -e xxx.xxx.251.92 -r 34800 -u li -w li123 -p 19302 xxx.xxx.251.92

其中xxx.xxx.251.92是coturn服务所在地址。由于本人是在xxx.xxx.251.92启动的turnutils_peer,故-e后面也是这个地址。

敲这个命令后,会向turnserver申请转发端口,如下所示,22947就是其中分配成功的一个转发端口。
在这里插入图片描述

后面抓回路地址的包,可以看到流由coturn转发至此34800端口。

在这里插入图片描述
抓包地址中的10.0.0.143是公网ip:xxx.xxx.251.92的本地地址。
说下,turnserver.conf中,relay-ip=10.0.0.143,这个需要配置,否则loss率是100%。

最后,本文的turnutils_peer和coturn服务地址在一个主机上,并且都是在公网上,若分开放,效果会更好。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
`gst_pad_peer_query_caps` 函数的使用需要以下步骤: 1. 引入 GStreamer 库头文件: ```c #include <gst/gst.h> ``` 2. 获取需要查询能力信息的 pad: ```c GstPad *pad = gst_element_get_static_pad(element, "sink"); ``` 这里以获取一个 element 的“汇” pad 为例,如果需要获取“源” pad,只需将“sink”替换为“src”。 3. 创建一个 `query` 消息,并设置消息类型为 `GST_QUERY_CAPS`: ```c GstQuery *query = gst_query_new_caps(GST_PAD_PEER(pad)->caps); ``` 这里使用 `GST_PAD_PEER(pad)->caps` 获取对等元素的能力信息,也可以使用其他能力信息。 4. 发送 `query` 消息给对等元素: ```c gboolean ret = gst_pad_peer_query(pad, query); ``` 这里使用 `gst_pad_peer_query` 函数发送消息,如果返回值为 `TRUE`,表示查询成功,否则表示查询失败。 5. 获取对等元素返回的能力信息: ```c GstCaps *caps = NULL; gst_query_parse_caps_result(query, &caps); ``` 这里使用 `gst_query_parse_caps_result` 函数解析对等元素返回的能力信息,并将其保存在 `caps` 变量。 6. 释放 `query` 消息和 pad: ```c gst_query_unref(query); gst_object_unref(pad); ``` 这里使用 `gst_query_unref` 函数释放 `query` 消息,使用 `gst_object_unref` 函数释放 pad。 完整的示例代码如下: ```c #include <gst/gst.h> int main(int argc, char *argv[]) { GstPad *pad = NULL; GstQuery *query = NULL; GstCaps *caps = NULL; gboolean ret = FALSE; /* Initialize GStreamer */ gst_init(&argc, &argv); /* Create element and get sink pad */ GstElement *element = gst_element_factory_make("fakesrc", NULL); pad = gst_element_get_static_pad(element, "sink"); /* Create query message */ query = gst_query_new_caps(GST_PAD_PEER(pad)->caps); /* Send query to peer element */ ret = gst_pad_peer_query(pad, query); if (ret) { /* Parse caps result */ gst_query_parse_caps_result(query, &caps); /* Do something with caps */ } /* Free resources */ gst_query_unref(query); gst_object_unref(pad); gst_object_unref(element); return 0; } ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值