问题标签 [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.
video-streaming - Live555 流媒体服务器 RTP 丢包重传
live555流媒体服务器是否会重传丢失的RTP数据包?
当我搜索“live555 retransmit”时,它会出现一些结果:
- 2011 年,Francesco Tonelli 描述了一种实现丢失数据包重传的机制。这意味着当时没有这样的机制。
- 2013 年,Zvika Meiseles 尝试实现一个队列来确定何时重新传输丢失的数据包。讨论是关于使用成帧器报告的帧持续时间:“MPEG2TransportStreamFramer”类应该扫描传入 MPEG 传输流数据包中的“PTS”(时间戳),并使用它来计算每个估计的“持续时间”。这再次意味着重传没有内置到 live555 中。
- 2016 年,Mathijs Vos 询问是否应该在客户端检测到丢失的数据包后发送 RR。答案是基于 RTCP 的重传机制,即 RFC 4585 和 RFC 4588 中的 RTP/AVPF,当时并没有实现。
有人知道现在是否由live555自己实现吗?或者那里有任何其他实现?
webrtc - RFC 8285 中解释的有关 RTP 扩展标头结构的问题
在处理 RTP 标头扩展的RFC 8285中,1 字节标头扩展的结构如下所示(第 4.2 节):
我了解 RFC 中解释的 OxBEDE。然后是“length=3”位,后面是实际的扩展。每个扩展都由 ID 和长度组成。为两字节报头扩展定义了类似的结构。
在这两种类型的标题中,我都不理解“length=3”位部分。它只是用于 32 位边界的填充吗?如果是这样,这样做的目的是什么?易于解析?为什么不在 xBEDE 之后立即启动扩展元素。当然会节省空间。可能是我缺少一些基本的东西。
c++ - 使用 GStreamer 发送和接收自定义 RTCP 数据包/事件
我正在寻找构建一个 MCPTT(一键通)类型的应用程序,其中通过发送 RTCP 数据包来处理楼层控制
MCPTT 楼层类型上下文中的 RTCP 数据包在https://www.wireshark.org/docs/dfref/r/rtcp.html中定义(搜索关键字“楼层”)
我正在使用 GStreamer 媒体库进行音频视频流传输。例如,如果我有如下管道,
发件人 1:
发件人 2:
接收者:
我实际上会用 C 代码在上面写,上面仅用于管道表示
在上面的上下文中,基于从pay1/pay2发送并在depay1/depay2接收到的RTCP floor 事件,我将控制输入选择器的活动 sink-pad
我想知道如何在 GStreamer 中创建自定义 RTCP 事件并在接收端发送和接收/解析它们
另外请建议这种方法是否适用于这种用例或任何其他方法/库适合这里
sip - Freeswitch 在接收 RTCP 的同时发送空 RTP
FreeSWITCH 版本:1.10.3
我希望有人能帮助我。
在来自我们的 sip 提供商的入站呼叫中,我们会间歇性地向提供商发送一个空 RTP 数据包。经过一番调查,当 FreeSWITCH 从另一个 FreeSWITCH 实例接收 RTCP 时,就会发生这种情况。
FreeSWITCH 1 接收来自外部呼叫者的呼入呼叫,并在 FreeSWITCH 2 前充当 B2BUA。一旦呼叫被 FreeSWITCH 2 应答,RTP 流就会建立并双向工作。
FreeSWITCH 2 将所有 RTP 数据包发送到 FreeSWITCH 1,但 FreeSWITCH 1 正在向 SIP 提供商发送一个带有空负载的 RTP 数据包,在这个空 RTP 数据包的两侧都有设置了 MARKER 位的 RTP。
在 FreeSWITCH 2 上调整以下 RTCP 计时器会影响 FreeSWITCH 1 上问题的频率。
老实说,我很难弄清楚为什么会发生这种情况,并且只针对来电,我不确定这是错误还是设置不正确。
如果有人能够帮助或指出我正确的方向,那将是惊人的?
ip-camera - 使用 libVLCsharp 流式传输受密码保护的 IP 摄像机视频,但视频不播放
我正在尝试为 Onvif 投诉设备构建 UI。一段时间以来,我一直在用头撞墙。我相信我已经正确构建了自定义 URI。根据 ONVIF 程序员指南,我们需要 Get Profiles、GetStreamURI、Request Streaming。http://www.openipcam.com/files/ONVIF/ONVIF_WG-APG-Application_Programmer's_Guide.pdf
使用 Wireshark,我相信我看到了正在发送的 HTTP 数据包(显示适当的请求),以及我认为是适当的响应。最终的 GetStreamURI 会从摄像头获得成功的响应。然后,当我尝试调用 _mp.Play 时,我看到一些通过 HTTP 的数据包和一些从相机返回的 TCP 数据包。在此通信停止后。
更新:我相信我的问题是我构建的 URI 需要验证。当我将此 URI 放入 Web 浏览器时,我收到 401 错误。我不确定为什么我在wire-shark 上看不到这个错误。我将用户名和密码分配给 URI 对象,但是当我检查“IsWellFormedURIString”时,我得到一个“无效端口错误”。
javascript - webRTC 如何强制从 javascript Web 应用程序客户端发送 PLI 数据包?
https://jsfiddle.net/z7ms3u5r/
我需要 javascript 客户端发送 Picture Loss Indicator (PLI) 数据包,以通知服务器形成关键帧(i-frame)。有没有办法强制 javascript webRTC 客户端向服务器发送 PLI?
rtp - 对RTP/RTCP协议的质疑
关于RTP / RTCP协议的 RFC 教程对我来说似乎很困惑。我找不到像这样的这个协议的任何状态转换图。它并不清楚 NTP 和 RTP 时间戳之间的区别。它说它对于计算往返时间很有用。不能单独用RTP时间戳计算吗?
当且仅当它最近发送 RTP 数据包时,源才会发送 SR 报告,否则它是 RR 数据包。确定发送方最近是否发送过数据包实际上需要多少时间间隔?
混音器到底是做什么的?它是否需要来自多个来源的所有 RTP 数据包,然后在应用层读取它并将它们重新打包成多个 RTP 数据包,现在只更改 SSRC?如果数据包类型不同怎么办。
java - 远程连接在 efflux 中不起作用(基于 rtp/rtcp java 的库)
我不得不在一个项目中使用,经过一番搜索,我在 github 上rtp/rtcp
遇到了https://github.com/jonbo372/efflux java 项目。这个项目没有一个完整的工作示例,所以在尝试了很多之后,我制作了一些测试文件并让它们运行。在我的设置中,有一个 python 服务器,它打开两个端口,一个用于rtp
,另一个用于rtcp
,并接受其上的数据和一个使用 efflux 库通过rtp/rtcp
procol 发送数据的客户端。
服务器代码:
服务器将打印udp
与客户端通信所需的两个端口。
客户端代码:
如果客户端和服务器位于同一主机上,则上述代码有效,但在不同主机上运行时无效。在后一种情况下,我无法在服务器端看到数据包。在进一步调试 Efflux 时,它使用一些数据报通道来发送/接收数据包。但是我也看不到任何错误消息。
我将两台主机/笔记本电脑都连接到同一个手机的热点。
但是,在远程服务器的情况下,如果我使用Datagram
套接字发送数据包(如下所示),那么我可以在服务器端看到数据包。
自从 5 天以来,我一直坚持这个问题,但仍然无法解决它。问题是我无法追踪发送数据包时发生的故障,是因为网络连接还是流出问题。我Intellij
用来运行这个流出代码。
encryption - 关于 DES-CBC 模式下加密的 RTP/RTCP 问题
我一直致力于创建一个 RTP/RTCP 客户端和服务器实现作为一个项目。在解析传入数据包时遇到了障碍,因为我无法理解加密方法。我已多次阅读RFC 3550。第 9 节解释了机密性和安全性。我在这里读过DES-CBC 模式。
我对加密的观察
- RTP/RTCP 数据包作为一个单元进行加密,这意味着所有字节都被加密
- 加密的 RTCP 数据包以 32 位随机数为前缀
- 加密的 RTP 数据包由时间戳和序列号随机化
- DES-CBC 是默认模式
- DES-CBC 模式需要 64 位密钥
- DES-CBC 模式需要 64 位初始化向量 (IV)
- DES-CBC 的块大小为 64 位
我感到困惑的是:
DES-CBC 声明它使用“Internet 电子邮件隐私增强”(PEM) 协议,但 RTP RFC 没有提及这一点。此外,加密图不包括任何 PEM 标头或元素。
图表
所以我的问题是:
- 密钥来自哪里或哪些标题元素构成了密钥?
- RTP/RTCP 的初始化向量是什么?
- 如何解析加密数据包与未加密数据包?
- RTP/RTCP 是否使用 PEM 协议?如果是这样,怎么做?