- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我试图了解 spydroid ( https://code.google.com/p/spydroid-ipcamera/ ) 的工作原理,以便为我的手机编写一个类似的应用程序。基于 spydroid,这里是我对 RTSP、RTCP 和 RTP 的理解。
RTSP 在指定端口上运行并设置所有内容。
RTCP 可以在任何端口上运行。有一个客户端端口和一个服务器端口。这是RTP的控制流程
RTP 可以在任何端口上运行。有一个客户端端口和一个服务器端口。这包含音频和视频流。这很令人困惑,因为它似乎实际上并没有在此端口上发送音频和视频。在 spydroid 中,它在端口 5006 上发送视频,在 5004 上发送音频。
Spydroid 正在通过 RTSP 发送此消息以确认端口...传输:RTP/AVP/UDP;单播;destination=123.456.789.00;client_port=65234-65235;server_port=44580-44581;ssrc=ba98a863;mode=play
我认为这是在说客户端(在我的例子中是 VLC)正在监听 65234,使用 UDP 获取 RTP 消息,使用 65235 获取 RTCP 消息。此外,spydroid 正在监听 44580 的 RTP 和 44581 的 RTCP。这样对吗?
现在在 RTSP 的 DESCRIBE 序列中,spydroid 告诉客户端 m=video 5006 RTP/AVP 96 我认为这意味着它将通过端口 5006 通过 UDP 发送视频。
我在上面的句子中所说的一切听起来都正确吗?
我真正想知道的是如何将这些信息转发到正确的端口。客户端端口由 VLC 自动分配。我尝试运行此命令... vlc "rtsp://192.168.1.104:8086"--rtp-client-port=58866 但 VLC 似乎忽略了它并选择了它自己的端口。所以我转发了端口 8086、5004 和 5006,但我不知道要为 RTP 和 RTCP 连接转发哪个端口,因为它每次都在变化。我可以完成这项工作的唯一方法是将所有端口转发到我的计算机。 (我有一个 linksys 路由器,它有一个 DMZ 选项)但这是一个糟糕的解决方案。有人可以指导我正确的方向吗?
此外,很高兴知道我正在这样做,因为我正在通过互联网通过外部 IP 地址发送所有内容。 spydroid 旨在用于局域网。
最佳答案
我不知道 RTSP 如何工作以及如何配置 VLC,但我对 RTP 略知一二。我猜测客户端端口意味着 spydroid 将发送数据包的位置,而服务器端口是它将用作源端口的端口。所以在 UDP 级别,RTP 数据包看起来像:
| SRC_PORT=44580 | DST_PORT=65234 | ... RTP_数据包 |
下一个:m=video 5006 RTP/AVP 96根据 SDP 标准,5006 是 spydroid 监听传入 RTP 数据包的端口(不知道为什么)并且 RTP 负载类型为 96。
因此,检查让 VLC 监听端口 65234 并将 {44580, 65234} 数据包转发到您的 PC 是否有效。您提供的信息有点令人困惑,而且似乎自相矛盾。因此,不能据此得出任何具体的结论。
关于android - RTSP、RTCP 和 RTP 端口号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16003442/
我正在尝试从 RTP URL 流式传输 RTP 数据包(正在流式传输音频),例如rtp://@225.0.0.0经过如此多的研究后,我在我的设备中流式传输了 URL 并使用 https://githu
如果客户端想要观看我的 RTSP 服务器上的流,它首先尝试通过 UDP 协议(protocol)设置流。我如何告诉它我的服务器只支持 RTP/AVP/TCP 并且它应该切换传输? 我想终止我服务器上的
我需要在 RTP 数据包中检测 MPEG4 I-Frame。我知道如何删除 RTP header 并在其中获取 MPEG4 帧,但我不知道如何识别 I 帧。 它有特定的签名/标题吗? 最佳答案 好的,
我是 VoIP 新手。我想创建一个使用 RTP 使用客户端/服务器架构流式传输音频的应用程序。可以使用不同的 API,但我需要在核心级别上进行理解。我研究过RFC。任何人都可以建议我如何制作一个音频
我像这样通过 ffmpeg 开始视频传输: ffmpeg -f video4linux2 -i /dev/video0 -vcodec libx264 -preset ultrafast -crf 2
我正在尝试通过 ffserver 从 usbcam 和 mic throw ffmpeg 流式传输视频和音频 我有 2 个错误: - ffmpeg 似乎运行正常,但显示“数据看起来不像 RTP 数据包
来自 Mozilla 网站:https://developer.mozilla.org/en-US/docs/Web/API/Media_Streams_API “一个 MediaStream 由零个
几天来,我已经在寻找如何将 MJPEG rtp 流转换为 MP4 rtp 流的解决方案。 已经尝试过这样的事情: ffmpeg -i rtsp://192.168.10.8:554/stream1/m
我一直在试图找出一种计算以下内容的方法: 带宽、延迟、当前上传和下载速度 . 并且对我为 INBOUND-RTP、OUTBOUND-RTP 和 REMOTE-INBOUND-RTP 获得的值感到困惑。
我需要将一个 .rtp 文件(已使用 RTP 代理录制)转换为 .wav 文件。如果有人知道如何做到这一点,请给我您的解决方案。 提前致谢:) 最佳答案 聚会可能有点晚了,但我最近遇到了同样的问题,我
我正在使用 ffmpeg libavformat 库编写仅视频的 webm 文件。我在我的服务器上收到了 VP8 编码的 rtp 流。我已经成功地将 rtp 字节流(来自 rtp 有效负载)分组到单独
我正在尝试通过 RTP 多播流式传输 .wav 音频文件。我正在使用以下命令: ffmpeg -re -i Melody_file.wav -f rtp rtp://224.0.1.211:5001
关闭。这个问题是off-topic .它目前不接受答案。 想改进这个问题? Update the question所以它是on-topic对于堆栈溢出。 9年前关闭。 Improve this que
我有一个要发送到机顶盒的 RTP 视频流。不幸的是,机顶盒不支持 RTP,我已将其转换为 Smooth Streaming。 我尝试过使用 Wowza Media Server 进行流转换,但没有成功
我试图弄清楚哪个是 RTP 数据包的最大大小。我知道最小 header 大小为 12 个字节,但我没有找到任何有关有效负载的信息。 RTP 数据包的最大大小可能与 UDP 有效负载的最大大小相同吗?我
我们有捕获的 pcap 文件,其中包含每个 rfc6716 的 RTP opus 有效负载,现在我们可以切断 RTP header 并提取 opus 有效负载,我们希望根据规范将有效负载封装到 ogg
我正在尝试通过RTP将AAC音频流传输到Wowza服务器。我设法使其正常工作,但交替听到的声音非常快,然后出现1s的空白。采样率是22050,每个数据包的帧数是1024。 目前,我的时间戳是这样生成的
我正在尝试在我的 iPhone 中接收实时 RTP 音频流,但我不知道如何开始。我正在寻找一些 sample ,但我在任何地方都找不到它们。 我有一个 Windows 桌面应用程序,它从选定的音频接口
我正在尝试用 C 语言构建一个 RTP 数据包度量分析器,但最终遇到了一个奇怪的问题,我正在削减实现细节以便于公开: 由于 RTP 数据包包含在 UDP 中,因此我的套接字使用以下参数进行初始化: s
我有一个客户端和一个服务器,服务器通过封装在 UDP 内的 RTP 数据包发送音频数据。客户端接收数据包。由于 UDP 没有流量控制,客户端会检查数据包的序列号,如果序列号不正确,则重新排列它们。我的
我是一名优秀的程序员,十分优秀!