标签: turn

通过 libnice 和 gstreamer 进行视频流传输

我想将视频从 IP 摄像机流式传输到 NAT 后面的远程 PC。为此,我使用 libnice 和 gstreamer。

一方面,我实现了以下管道。

rtspsrc <-> Nicesink

远程客户端管道

Nicesrc <-> rtph264depay <-> h264parse <-> ffdec_h264 <-> autovideosink

但是,我无法在远程客户端上获取视频流。我在远程客户端上的 Nicesrc 元素上获取视频数据包,但通过上面的管道,我无法看到视频。

我如何知道数据包正在远程客户端上的 Nicesrc 元素上:

我在 libnice 的接收回调中获取缓冲区长度打印。从那里,我还可以以 h264 格式录制视频并播放。但远程客户端上的上述管道并未发生实时流传输。

我还尝试将 capfilters 包含在 gstreamer 管道中,但没有成功。任何帮助都是appriced。谢谢

video-streaming gstreamer stun turn libnice

5
推荐指数
0
解决办法
1051
查看次数

带有TLS的RFC5766-turn-server

我正在尝试启用TLS启动我的TURN服务器.我使用以下行来启动服务器:

daemon --user=$USER $TURN $OPTIONS --tls-listening-port 3478 --cert /root/cert_2014_11/my_domain_nl.crt --pkey /root/cert_2014_11/my_domain_nl.key --CA-file /root/cert_2014_11/PositiveSSLCA2.crt
Run Code Online (Sandbox Code Playgroud)

其中的环境变量在配置文件中设置.服务器在没有TLS的情况下使用相同的启动行正常工作,但是如果我添加三个与SSL相关的参数,则仍然无法通过TLS访问服务器.我尝试为SLL设置一个不同的端口而不是标准端口,但它仍然无效.无论我做什么,我都可以在没有SLL的情况下到达服务器,但是通过TLS我无法达到它.我使用的证书链如果没问题,我也将它用于我们的网站.

ssl webrtc rfc5766turnserver turn

5
推荐指数
1
解决办法
852
查看次数

使用REST API身份验证为WebRTC TURN服务器

我正在尝试从这里为webRTC设置rfc5766-turn-server TURN服务器.我能够使用turnuserdb.conf我的用户名和密码(my_user_name:my_password)通过此TURN服务器成功中继我的视频.在Web客户端,我用过:

"iceServers":{[
    "url": "turn:my_user_name,@turn_server_ip",
    "credential":"my_password"
}]
Run Code Online (Sandbox Code Playgroud)

我正在尝试使用TURN服务器附带的REST API功能,以避免通过网络发送密码或将其存储在客户端.我在Rest API下 遵循了这个规范这个解释

但不幸的是,我得到了401,我无法进行身份验证.

这就是我所做的:

  1. 我创建了一个秘密"my_secret",我像这样运行转弯服务器:

    turnserver -v --syslog -a -L xx.xxx.xx.xx -X yy.yyy.yyy.yy -E zz.zzz.zz.zzz --max-bps=3000000 -f -m 3 --min-port=32355 --max-port=65535 --use-auth-secret --static-auth-secret=my_secret --realm=north.gov --cert=turn_server_cert.pem --pkey=turn_server_pkey.pem --log-file=stdout -q 100 -Q 300 --cipher-list=ALL
    
    Run Code Online (Sandbox Code Playgroud)

    (我刚刚更换了IP地址xx.xxx.xx.xx yy.yyy.yyy.yy zz.zzz.zz.zzz)

  2. 后来我生成了一个时间戳,现在是+ 1小时,所以我在nodejs上运行:

    Date.now()+1000*60*60;      // output 1433895918506.
    
    Run Code Online (Sandbox Code Playgroud)

    我在这个网站上生成了临时密码,使用我的秘密,并得到了一个结果0ca57806bdc696b3129d4cad83746945b00af77b

  3. 我将密码编码为base64.

  4. 现在我尝试使用临时用户名:1433895918506:my_user_name和密码:MGNhNTc4MDZiZGM2OTZiMzEyOWQ0Y2FkODM3NDY5NDViMDBhZjc3Yg==在Web客户端上记录与转弯服务器的通信, 现在我使用的是Web客户端

    "iceServers":"url":"turn:1433895918506:my_user_name@turn_server_ip","credential":"MGNhNTc4MDZiZGM2OTZiMzEyOWQ0Y2FkODM3NDY5NDViMDBhZjc3Yg=="}]
    
    Run Code Online (Sandbox Code Playgroud)

但它没有用,我得到:

401 user <1433895918506:my_user_name>  incoming …
Run Code Online (Sandbox Code Playgroud)

javascript authentication rest webrtc turn

5
推荐指数
1
解决办法
3877
查看次数

Webrtc眩晕并打开服务器C#

我今天的问题是如何为c#中的webrtc对等应用程序开发眩晕和翻转服务器,是否有任何库支持此功能,我找不到任何示例或资源来获取此功能。

请帮我解决这个问题,因为我花了太多时间在没有运气的情况下进行搜索,我尝试了OfficeSip,但没有工作,我也尝试了转用cygwin,但没有工作

谢谢

c# webrtc turn

5
推荐指数
1
解决办法
1259
查看次数

为什么turn服务器不支持tcp连接?

我是 WebRTC 新手。

我需要为我的 webrtc 应用程序配置我自己的 Turn 服务器。

我使用以下命令安装了我的转弯服务器。

apt-get install coturn
Run Code Online (Sandbox Code Playgroud)

我只需要通过 tcp 运行转变服务器。它不必使用 UDP 进行任何媒体传输,也只需使用 TCP。

因此,我使用以下命令运行转弯服务器。

turnserver -n -a -v --no-udp --min-port 9002 --max-port 9008 --no-dtls -r "bksystems.org" --listening-port 9001 -X 13.126.11.252 -u sureshkumar:sureshkumar
Run Code Online (Sandbox Code Playgroud)

在此,我设置了冰候选选择的最小端口和最大端口范围。

在 webrtc 应用程序中,我配置了我的转弯服务器地址,如下所示。

var configuration = {
                iceServers: [
                        {
                                url: "turn:13.126.11.252:9001?transport=tcp",
                                credential: 'sureshkumar',
                                username: 'sureshkumar'
                        }
                ]
        };
Run Code Online (Sandbox Code Playgroud)

我遇到的问题是轮流服务器只接受一个连接。例如,客户端 1 和客户端 2 位于对称 NAT 之后,它必须使用 WebRTC 进行视频聊天。为此,我使用了转弯服务器。

Turn 服务器一次仅接受一个连接。我不知道为什么它不接受第二个连接。一旦它接受两个连接,那么只有它们才能使用轮流服务器相互通信。

对我来说,提供的端口范围仅为 9000 到 9008。其中,我在端口号 9000 中运行信令服务器,在 9001 中运行转向服务器以进行 TCP 侦听。所有端口仅针对 TCP 开放。它不支持 …

tcp webrtc turn server

5
推荐指数
0
解决办法
4788
查看次数

如何使用替代侦听端口配置 coturn?

我们尝试coturn使用替代侦听端口进行配置,但它不起作用。我想澄清一下我们是否在做正确的事情,以及它是否因为/me stupid服务器或服务器而无法正常工作。

我们正在使用turns(安全)。我希望服务器侦听端口 5349 和 443,如果 443 具有阻止流量的 Web 代理,则默认端口和 443 以防其他一切都被阻止。我打算给客户端 2 个冗余服务器,每个端口一个。

  • 这是个好主意还是您认为没有必要?

当我配置coturn

tls-listening-port=5349
alt-tls-listening-port=443
Run Code Online (Sandbox Code Playgroud)

只有 5349 件作品。当我更改规格顺序时,443 有效。

好像alt-tls-listening-port一点效果都没有。

我知道在使用 UDP 时,端口默认是连续的,但评论说

# Alternative listening port for TLS and DTLS protocols.
# Default (or zero) value means "TLS listening port plus one".
Run Code Online (Sandbox Code Playgroud)

和非 TLS 部分

# This is needed for RFC 5780 support
# (STUN extension specs, NAT behavior discovery). The TURN Server 
# supports RFC …
Run Code Online (Sandbox Code Playgroud)

stun webrtc turn coturn

5
推荐指数
1
解决办法
1897
查看次数

我需要 TURN 服务器吗?

在哪些情况下我应该使用 TURN 服务器?

现在我有一个完美运行的 WebRTC 应用程序。该应用程序即将发布。

我是否需要设置自己的 TURN 服务器,或者这可能仅适用于主要应用程序?

webrtc turn

5
推荐指数
2
解决办法
1964
查看次数

WebRTC:如果一个对等方始终使用全锥或地址限制(但不是端口限制)NAT,我们是否需要 TURN 服务器?

我一直在阅读一些有关 WebRTC 的内容,但我不明白为什么如果只有 1 个对等方使用对称 NAT,而另一个既不使用对称也不使用端口限制 NAT,那么为什么我们需要 Turn 服务器,所以让 \xe2\x80\x99s假设 A 使用 Full Cone NAT,B 使用对称 NAT:

\n
    \n
  1. STUN SERVER会将B的正确IP地址发送给A,将A的正确IP+端口地址发送给B。

    \n
  2. \n
  3. A 尝试连接到 B(现在 A 将能够接受来自 B 的消息,因为它位于目标地址列中的\xe2\x80\x99)。

    \n
  4. \n
  5. B 尝试连接到 A,这将允许从 A 发送到 B 的请求(ofc A 需要将端口更新为从 B 而不是 Sdp 接收到的端口)。

    \n
  6. \n
\n

我是否遗漏了一些东西,或者这是正确的(并已实现),还是这太复杂而无法实现?

\n

如果这是正确的,那么理论上,如果我\xe2\x80\x99m对等体A并且我使用Full Cone NAT,任何对等体B都可以连接到我(只要我先发送连接请求),而不需要转动服务器。

\n

谢谢

\n

nat stun webrtc turn

5
推荐指数
1
解决办法
1052
查看次数

将TURN服务器添加到android webRtc本机

我正在研究WebRtc本机android应用程序。我还编译io.pristine lib。仅当两个设备都连接到wifi时,才能在两个设备之间建立呼叫。如果其中一个设备连接到蜂窝网络,则无法建立呼叫。我在那里阅读了所有可能的论坛,看起来我需要TURN服务器。我已经运行了自己的TURN服务器,但是知道如何强制应用程序使用此服务器。欢迎任何帮助。谢谢!!

android webrtc turn

4
推荐指数
2
解决办法
1994
查看次数

两个对称 NAT 后面的对等点之间的 ICE 协商是否会导致需要两个 TURN 服务器?

我阅读了RFC6577RFC8445 ,但我觉得 TURN 的使用方式与 ICE实际使用relay candidates.

TURN RFC 描述了使用单个 TURN 服务器在客户端和对等点之间传输数据。TURN 服务器上的transport addressTURN 服务器通过 TURN 消息接受来自客户端的数据流,而 TURN 服务器relayed transport address通过 UDP 接受来自对等方的数据流。这听起来很棒——一台 TURN 服务器和双向数据流。

然而,在阅读有关 ICE 的文章时,我觉得这种情况从未发生过。调用者和被调用者都独立地在可能的两个 TURN 服务器上进行分配,然后将各自的信息发送relayed transport addresses给对方。更像是一种I can be reached via this relayed transport address东西。然后进行连接检查,因此,这里最终使用两个 TURN 服务器,其中数据仅沿一个方向流经分配给relayed transport address每个参与者的 TURN 服务器。

这是真的?

TURN RFC 中的内容如下:

客户端可以安排服务器将数据包转发到某些其他主机(称为对等点),并可以控制转发方式的各个方面。客户端通过获取服务器上的 IP 地址和端口(称为中继传输地址)来完成此操作。当对等方将数据包发送到中继传输地址时,服务器会将数据包中继到客户端。当客户端向服务器发送数据包时,服务器使用中继的传输地址作为源将其中继到适当的对等点。

然而,我看不到通过 ICE 协商,数据会通过传输地址从客户端流向对等点的情况。呼叫者和被呼叫者都在 TURN 服务器上独立分配并发送给relayed transport addresses对方以进行联系。 …

ice stun webrtc turn

4
推荐指数
1
解决办法
589
查看次数