使用 VLC 播放 RTP

Posted

技术标签:

【中文标题】使用 VLC 播放 RTP【英文标题】:Playing RTP using VLC 【发布时间】:2013-01-25 23:38:27 【问题描述】:

我目前有一个 android 应用程序,它正在从摄像头捕获视频并通过 RTP 流式传输。我不使用 RTSP。

我创建了一个描述 RTP 提要的 SDP 文件。我可以在 Quicktime 7 中打开 SDP 文件并且可以看到流,尝试在 VLC 中打开 SDP 文件不起作用。我收到以下错误:

live555 demux 错误:10 秒内没有收到数据,正在中止

我正在使用 Wireshark 监控 RTP 数据包,并且可以看到网络上的数据包(参见下面的示例):

281956  2545.589171000  10.0.1.25   10.0.1.150  UDP 1442    Source port: 54405  Destination port: 51372

Quicktime 7 似乎没有问题绑定到 SDP 中的目标端口并播放流,但我在尝试使用 VLC 时看到以下 ICMP 数据包:

286674  2925.162140000  10.0.1.150  10.0.1.25   ICMP    70  Destination unreachable (Port unreachable)

我的 SDP 文件包含:

v=0
o=- 1360349812962 1360349812962 IN IP4 10.0.1.25
s=Unnamed
i=N/A
c=IN IP4 10.0.1.150
t=0 0
a=recvonly
m=video 51372 RTP/AVP 96
b=RR:0
a=rtpmap:96 H264/90000
a=fmtp:96 packetization-mode=1;profile-level-id=42c01e;sprop-parameter sets=Z0LAHukBQHsg,aM4G4g==;

我需要做什么才能让流在 VLC 中播放?我尝试在启动 VLC 时使用参数“--rtp-client-port=51326”,但似乎没有什么不同。

更新 1

似乎 VLC(至少我使用它的方式)不使用您在 SDP 中指定的客户端端口,它总是分配它自己的端口,它期望 RTP 数据包被传递到。我改变了我的方法,允许我从 VLC 捕获端口并使用该端口作为目标启动我的 RTP 提要,并且它有效。这不是一个理想的解决方案。

有谁知道如何让 VLC 使用 SDP 文件中的目标端口?

【问题讨论】:

你是如何在目标机器上启动 VLC 的?这是一个对我有用的例子。 ***.com/questions/20538698/… 在运行 VLC 时是否打开了 quicktime?可能两者都试图在同一个端口上打开一个套接字。 【参考方案1】:

VLC 将下面参数 (51372) 中提到的端口作为目标端口。

m=视频 51372 RTP/AVP 96

我已经尝试过音频捕获。

您应该只需要使用此 SDP 配置播放不带任何参数的 sdp 文件。

【讨论】:

不幸的是,这对我不起作用。 VLC 忽略 SDP 中的端口。我想知道我正在运行的 VLC 版本是否存在错误。 @lucasweb:哦。仅供参考 - 我已经在 2.0.2 和 2.0.5 上对其进行了测试。您是否尝试过将 RTP 音频从一个 VLC 发送到另一个 VLC? (带有 SDP 文件)。我在 VLC 服务器客户端模型中的流式传输中遇到了一些问题。如果您尝试过,如果我能从您的经验中学习,那就太好了..

以上是关于使用 VLC 播放 RTP的主要内容,如果未能解决你的问题,请参考以下文章

VLC播放RTP封装的h264,PS,TS流的SDP写法

使用 VLC 从其他计算机上的 ffmpeg 接收 rtp (opus) 流

使用 gstreamer 将 PCM 数据发送到 VLC 播放器

转:关于H264通过RTP传输的打包方式

vlc源码分析 流媒体的音视频同步

vlc源码分析 流媒体的音视频同步