问题标签 [rtcp]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
986 浏览

windows - 在windows上接收实时rtp/rtcp视频流

我正在尝试以尽可能低的延迟发送和接收视频流。对于发送,我在 linux 上使用 gstreamer:

此管道将视频发送到端口 2000,并使用端口 2001 和 2005 进行一些“神奇”的 rtcp 同步。

如果我在 linux 上使用 gstreamer 作为接收器,效果很好;我得到低于 400 毫秒的延迟。

但是,在 Windows 上接收时,我很难获得相同的性能。我尝试了什么:

  • VLC。似乎根本不支持 rtcp。
  • 用于 Windows 的 gstreamer。似乎工作起来很奇怪,会产生巨大的延迟,甚至是幻灯片而不是视频;rtcp 似乎不起作用。
  • ffmpeg。打开 rtcp 端口,但它根本不影响任何东西。-nobuffer 选项的延迟约为 1000 毫秒。

我还有什么选择吗?任何类型的库或sdk?

0 投票
2 回答
5463 浏览

javascript - WebRTC:RTCDataChannel 未“打开”

我遵循了关于 WebRTC 的完整教程并实现了一个简单的 p2p 聊天。我的信令服务器在 localhost:9090 上工作。当我尝试发送消息时,我收到:

但是,连接似乎已正确建立:

这是client.js的代码:

我如何确保每个客户端都真正连接到另一个客户端并且答案/SDP 是正确的?任何提示:也许频道创建太早了,应该只在整个“握手”之后完成?非常感谢

__ 在 Jib 的第一个答案之后编辑 __

0 投票
1 回答
577 浏览

rtsp - 为什么 RTT 很大时 RTSP over TCP 不能正常工作

我正在使用 live555 通过 TCP 使用 RTSP 从按需 RTSP 服务器流式传输 H264 视频,如下所示:

当 RTT 小于 30ms 时效果很好。但是,如果我使用 linux 的 tcp 命令将 RTT 增加到 100ms tc,那么我只能获得一半质量的视频。当 RTT 为 100 毫秒时,基于 UDP 的 RTSP 仍然可以正常工作。由于我在本地运行它,因此网络流量无关紧要,因为我可以使用 iperf 确认,即使 rtt 为 100 毫秒,吞吐量也可以达到最大值。所以我想知道这是什么原因造成的?

0 投票
0 回答
738 浏览

rtp - 在 oRTP 库中接收 RTCP 问题

尝试在 oRTP 的 RECVONLY 会话中接收 RTCP 时,我目前遇到了段错误。RTCP 在 SENDRECV 会话中接收时工作正常,但在 RECVONLY 会话中不起作用。

这是我的代码。段错误来自第 42 行的函数:err=rtp_session_recv_with_ts(session,buffer,160,ts,&have_more); 这是在接收文件的 while 循环中。

但是,这只发生在第 32 行

rtp_session_enable_rtcp(会话,真);设置为 TRUE。

如果我通过将 RTCP 设置为 FALSE 来禁用它,那么 RECVONLY 会话将起作用。

使用 gdb 进行调试,我得到了段错误的回溯。

从回溯来看,库文件 str_utils.c 中似乎存在问题,但我不确定我是否只是在设置 RECVONLY 会话时忘记了初始化某些内容。

总体而言,第 42 行的接收器功能在 RECVONLY 会话中似乎不适用于 RTCP。如果禁用 RTCP,则没有问题。

0 投票
1 回答
433 浏览

streaming - MQTT 流式 QoS 控制

可能与 SO 问题MQTT for realtime data streaming相关,MQTT 将如何实现实时多媒体质量?

这与 MQTT 定义的 QoS 0、1 或 2 不同。在使用 RTP 和 RTCP 的实时流式传输中,明确支持这些额外的功能

  • 测序
  • 时间戳和缓冲
  • 速率控制
  • 质量反馈

尽管引用的SO 问题提到 VoIP 是在 MQTT 上实现的,但如何考虑上述因素,或者根本忽略这些因素?

编辑:正如@hardillb 在下面的答案中提到的“考虑因素必须由应用程序实现”,应用程序应该遵循什么协议?MQTT 上的 RTP/RTCP 在这里是一个好的解决方案吗?

0 投票
2 回答
5611 浏览

c++ - WebRTC 'goog-remb' 和 'transport-cc' SDP 线

我想知道这条 SDP 线的含义是什么,因为我试图在 5% 到 10% 的数据包丢失情况下获得最平滑的帧速率。

我不知道的行是: a=rtcp-fb:100 goog-remb a=rtcp-fb:100 transport-cc

我不知道为什么firefox(例如)正在删除“transport-cc”功能,即使我必须解码不完整的视频帧,我是否也想让流帧率平滑?

最好的问候,我希望有人可以帮助我:)

0 投票
1 回答
1966 浏览

ffmpeg - 修复从 mediasoup 发送的 RTP/RTCP 的 A/V 同步问题

一点背景知识:我正在尝试记录通过 mediasoup v2 SFU 进行的 webrtc 调用。我正在使用 mediasoup 的room.createRtpStreamer()方法生成将 RTP/RTCP 镜像到 ffmpeg 的流。两个流媒体在大约 30 毫秒内为音频和视频创建并开始广播。FFmpeg 然后启动并开始接受。很确定 RTCP 正在工作,因为 ffmpeg 总是从关键帧开始,尽管在流媒体开始广播之后启动。

问题是我遇到了看似随机偏移的音频/视频不同步。我目前的理论是,这个偏移量是基于 RTCP 请求启动流的最后一个关键帧的年龄。请参阅下面的 ffmpeg 配置和输出,但我的问题是:我可以使用哪些 ffmpeg 参数来调整视频帧时间戳以匹配音频帧时间戳,反之亦然?我已经搞砸了,-map 0:0,0:1 -map 0:1,0:1但它似乎没有做我正在寻找的东西。

ffmpeg 标志:

SDP 用于输入(模板):

ffmpeg 输出 - 带有一些时间戳的乱码

请注意流#1(视频)的第一帧是如何在多个音频帧之后开始的?具体来说,它从流#0 dts/pts 0.18 开始。在这种情况下,a/v 同步问题几乎不会引起注意,但是通过大量重复,我确定 a/v 同步偏移始终是在第一个视频帧之前发送的长音频帧的持续时间(有时几秒钟)。我一直在仅相隔数十毫秒的时间启动 RTP 流,因此我无法控制输入端的这种差异。

在初始音频帧进入后,第一个视频帧的 dts/pts 约为 0。我将使用什么 ffmpeg 设置来相应地调整时间戳?我不在乎丢失没有视频的起始音频,因此任何可以调整时间戳的解决方案都有效。

0 投票
0 回答
345 浏览

webrtc - 用于 rtp-rtcp 实现的 janus 或 pjsip

我正在评估 webRTC 的简单 SFU 的实现。我粗略地查看了两个源代码,但发现 pjsip 中缺少对 REMB 和 PLI 的支持。那么它如何与 WebRTC 一起工作呢?

我只想要一个简单的网关,这样我就可以在两个方向上转发带有 RTCP 反馈的 RTP 数据包。我正在寻找 C 语言实现。

我看不出 Janus 和 pjsip 之间的比较。任何研究过两者的人都可以指出两者的优缺点,或者可能是第三种选择?

0 投票
1 回答
229 浏览

webrtc - 如何将 WebRTC 的 RTCP 数据包与相应的 RTP 流相关联?

RTP 数据包与 RTCP 有什么关系?

我希望他们与它描述的 RTP 流共享 ssrc(同步源标识符),但它有时匹配(对于发件人报告),有时不匹配。

我应该为此阅读哪个 RFC 或草案?

0 投票
1 回答
965 浏览

rtp - RTP序列号达到最大值后向上取整

RTP 数据包中的序列号是一个 16 位的字段。它以随机值开始。假设我一直发送 RTP 数据包,在某个时间点它将达到最大值 0xFFFF。然后我需要将序列号设置为较小的值。那个时候,我应该将序列号设置为 1 还是再次设置随机值。