问题标签 [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 回答
1672 浏览

android - RTSP 媒体播放器崩溃

我正在使用 HTC one X 测试(RTSP/ RTP/ RTCP)流式传输。完成RTSP会话后,我看到UDP数据包到达端口,几秒钟后,ack来自移动设备的鳍(在wireshark日志中)用于RTSP端口(550在我的情况下)。在使用 logcat 进行调试时,我看到以下几行

我的服务器适用于许多其他型号。有没有人遇到过类似的问题。我一直在努力解决这个问题。如果有人能指出我的问题,那将有很大帮助。

0 投票
0 回答
768 浏览

java - xuggler rtcp 流式传输

谁能告诉我如何使用 xuggler(without use RED5) 创建一个 rtcp 流。我使用 MEDIATOOL api ant IMEdiaReader 来解码保存的视频容器,但是如何在 rtcp 中进行流式传输?我看到我不能抛出 IMediaWriter。我必须为输出使用新的 IContainer 吗?

谢谢你。

0 投票
1 回答
2819 浏览

html - 如何在视频 HTML5 上从 gstreamer 流接收 rtp、rtcp 或 udp?

我正在尝试使用 HTML5 获取视频流 RTP/RTCP,该流是由 gstreamer 生成的。我使用了gstreamer的例子,所以我可以通过RTP端口:5000和RTCP:5001,并且可以使用gstreamer接收流。但是使用 HTML5 无法接收它们。于是我试着读了一下HTML5,发现它可以接收theora/ogg,webm/vp8,mp4/avc,协议可能是,HTTP,RTP,RTCP,UDP等,但是我不能使用RTP, RTCP 或 UDP,HTTP 只能设法接收。但是使用 Mozilla Firefox 的 VLC 插件,使用 UDP 协议,我得到了非常令人满意的结果。不知道有没有人有任何提示,我不想使用源文件,因为 src="/tmp/test.avi" 需要是可以是 udp、RTP、RTCP 的视频流。谢谢!

0 投票
1 回答
1995 浏览

java - 如何使用 Java Media Framework (JMF) 发送 rtcp bye 消息?

我正在使用 java 应用程序使用 JAIN SIP java API 与 nuance 语音服务器建立 SIP 会话。然后我通过发送一些 MRCP 命令(如 GET_PARAMS、SET-PARAMS、Define Grammar 和使用 mrcp4j API 识别)来准备系统以进行识别。

然后我使用 JMF api 与语音服务器建立 rtp 和 rtcp 会话,以发送音频进行识别。服务器已收到音频,但在收到 RTCP 再见之前无法识别。

但问题是我无法使用 rtcp bye 结束 rtp 会话,因为我无法在 JMF 文档中找到一种方法

如果有人可以指导我,那将非常有帮助。我附上了 RTP 会话的代码。

JMF api 文档的链接在这里

0 投票
2 回答
5626 浏览

android - RTSP、RTCP 和 RTP 端口号

我试图了解 spydroid ( https://code.google.com/p/spydroid-ipcamera/ ) 的工作原理,以便我可以为我的手机编写一个类似的应用程序。基于 spydroid 这里是我对 RTSP、RTCP 和 RTP 的理解。

RTSP 在指定端口上运行并设置所有内容。

RTCP 可以在任何端口上运行。有一个客户端端口和一个服务器端口。这是 RTP 的控制流程

RTP 可以在任何端口上运行。有一个客户端端口和一个服务器端口。这包含音频和视频的流。这令人困惑,因为它似乎实际上并没有在此端口上发送音频和视频。在 spydroid 中,它在端口 5006 上发送视频,在 5004 上发送音频。

Spydroid 正在通过 RTSP 发送此消息以确认端口... 传输:RTP/AVP/UDP;unicast;destination=123.456.789.00;client_port=65234-65235;server_port=44580-44581;ssrc=ba98a863;mode=play

我认为这是在说客户端(在我的情况下为 VLC)正在使用 UDP 监听 65234 用于 RTP 和 65235 用于 RTCP 消息。spydroid 也在 44580 上监听 RTP 和 44581 上 RTCP。这是正确的吗?

现在在 RTSP 的 DESCRIBE 序列中,spydroid 告诉客户端 m=video 5006 RTP/AVP 96 我认为这是说它将通过 UDP 通过端口 5006 发送视频。

我在上面的句子中所说的一切听起来正确吗?

我真正想知道的是如何将此信息转发到正确的端口。客户端端口由 VLC 自动分配。我尝试运行此命令... vlc "rtsp://192.168.1.104:8086" --rtp-client-port=58866 但 VLC 似乎忽略它并选择它自己的端口。所以我转发了 8086、5004 和 5006 端口,但我不知道要为 RTP 和 RTCP 连接转发哪个端口,因为它每次都在变化。我可以完成这项工作的唯一方法是将所有端口转发到我的计算机。(我有一个 linksys 路由器,它有一个 DMZ 选项)但这是一个糟糕的解决方案。有人可以指导我正确的方向。

另外,很高兴知道我正在这样做,因为我通过 Internet 上的外部 IP 地址发送所有内容。spydroid 旨在用于局域网。

0 投票
1 回答
1074 浏览

streaming - RTSP 代理实现和测试

我正在尝试实现一个 RTSP 代理服务器,以分析 RTCP 数据包并动态切换到更高或更低比特率的流(由 Wowza 提供服务)。有人可以推荐一个现有的开源代理(Java)和一个允许我设置代理的客户端吗?我尝试使用 VLC 进行测试,但显然 VLC 不允许我设置 RTSP 代理。存在哪些替代方案,我需要创建自己的客户端吗?

0 投票
2 回答
3376 浏览

gstreamer - 如何使用 gstreamer 制作流媒体中继?

我想制作某种流媒体服务器。我希望它通过网络从实时流(例如网络摄像头、ipcam 等)接收 RTSP 流,然后使用不同的 URL 在我的本地网络上广播相同的流。我知道 gstreamer 可以做得很好,但我不知道怎么做。我对文档的编写方式感到很困惑。有人可以帮助我吗?

0 投票
1 回答
1914 浏览

rtsp - RTSP 客户端在会话完全建立之前发送 $-delimited 数据(发出 PLAY 命令)导致 405 Method Not Allowed 错误

我有一个 RTSP 客户端和服务器的基于 live555 的自定义实现。我正在使用 Live555 的 16/08/2013 版本。我正在使用 Interleaved RTP-OVER-TCP 进行流式传输,因为我们将使用的防火墙不允许我们使用 UDP。(也就是说,RTP、RTCP 和 RTSP 数据都将通过 TCP 发送)。当我部署应用程序时,在我的本地网络上,流式传输运行良好。然而,在一个有轻微延迟的 WAN 上,我从服务器收到“405 Method Not Allowed”错误。我已经能够通过限制我的带宽在我的本地主机上模拟这一点,以便数据流动得慢一点。如果我限制网络,我会收到“405 Method Not Allowed”错误,如果我不限制它,我不会收到此错误并且流媒体工作正常。我已经使用网络流量检查器来观察客户端发送和接收的数据,并且我注意到在出现错误的情况下,客户端会在 PLAY 命令之前发送一个以 $ 分隔的数据,然后是一些额外的二进制数据发出。我认为这会使服务器感到困惑,因为服务器可能希望仅在建立会话并发出 PLAY 命令后才能接收此类数据。

我已经手动尝试过滤掉“不需要的”消息,直到发出 PLAY 命令。如果我这样做,流式传输实际上开始并且我能够渲染一两帧,之后视频流似乎“冻结”。然而,在检查网络流量时,似乎流确实像常规视频流一样在后台流动,但是我在 SETUP 期间丢弃了“不合适”的数据片段的事实导致视频流不呈现超过最初的几微秒。

我很清楚以 $ 分隔的消息代表 RTP 或 RTCP 数据包。然而,我没想到客户端会在 RTSP 命令完成设置流会话并开始播放之前开始发送此类数据包。

有人可以帮助向我解释这些“乱序”的 RTP/RTCP 数据包是什么以及为什么客户端会发送它们吗?我怎么解决这个问题?

作为参考,我在下面的日志中包含了显示来自客户端的消息,代表错误:

0 投票
1 回答
1559 浏览

java - 实现 RTSP 的 SETUP 请求响应时的问题

我正在实现简单的 RTSP 服务器,它应该通过 rtsp 流式传输 mjpeg。当我用一些响应数据进行响应时,我遇到的第一个问题是“挂起”的 RTSP 客户端(我尝试了 vlc 和 openRTSP):缓冲问题与 java 通信 vlc

但是,这很容易发现问题的根源是在请求结束时错过了双 \r\n 序列。我已经成功编写了 OPTIONS 和 DESCRIBE 的响应,这些响应在客户端上得到了正确处理。

我在尝试实施 SETUP 时遇到了这个问题。当我向 SETUP 输出一些格式正确的 RTSP 响应时,两个 openRTSPvlc 都不会将响应视为完整:

并且在那条消息之后什么也没有发生。我认为,RTP 和 RTCP 在幕后发生了一些事情,但是调试它的方式是什么?VLC 和 openRTSP 没有输出足够详细的信息。

有任何想法吗?

0 投票
1 回答
4918 浏览

java - live555 demux 警告:10 秒内未收到数据。切换到 TCP

我仍在尝试根据http://www.csee.umbc.edu/~pmundur/courses/CMSC691C/lab5-kurose-ross.html中的示例在 Java 中实现 RTSP

现在我已经解决了那里提到的问题:RTSP server java implementation questions :(

我想对此进行更多解释。我使用上面的示例结合 jlibrtp ( http://sourceforge.net/projects/jlibrtp/files/jlibrtp/ ) 来回答 RTSP 请求并启动 RTP/RTCP seccion 并传输数据。

当我将 MJPEG 的有效负载格式设置为 26(如所有工作表所述)或 96(如 gstreamer rtsp 服务器示例在此示例中流式传输 avi-packed mjpeg 时我如何将 mjpeg 文件流式传输为 rtsp)。实际上,有效载荷就像 jpeg 字节一样简单,与数据包分开。https://www.rfc-editor.org/rfc/rfc2435没有实现,所以我发送了可能错误的数据包。由于 VLC 对调试非常友好,我的期望是在日志中的每一帧上看到令人惊讶的正确编码或一些错误消息。但是,什么也没有发生。

请看vlc的输出日志:

请注意,由于 TEARDOWN 消息,服务器已关闭(我的代码仍然很脆弱,现在已经实现)。客户端在 10 秒超时后发送 TEARDOWN -

我已经围绕我的服务器发送到 VLC 客户端的参数进行了修改。一般来说,在每种情况下,我都会遇到相同的错误。唯一的例外是 DESCRIBE 响应发送的 SDP 配置:

有效载荷类型 0,PCMU/8000。对于这种情况,我可能错误的 MJPEG RTP 数据包被解释为正确的音频;流媒体开始并产生一些嘈杂的声音。请注意,如果我将音频 0(0 表示客户端建议的端口)替换为某个特定的端口号,则相同的配置不起作用。

因此,如果有人可以建议我如何指定发送的 SDP 数据以使 VLC 使用有效负载类型 26 或 96,请提供帮助。或者,它可能忽略了一些仅对 MJPEG 而不是对幕后 PCMU 需要的 RTP/RTCP 请求,只是给出调查的方向。