7

如果您能帮助我解决我数周来一直试图解决的 H264 流媒体问题,我将不胜感激。

我需要将 H264 视频从 Live555(在 Linux 机器上)流式传输到 VLC Media Player(在 Windows 机器上)。使用 RTSP 效果很好,但我需要在没有 RTSP 的情况下使用 RTP,而使用 RTP 我看不到视频。VLC 甚至无法识别流是 H264。

这是通过 RTSP 传输的 SDP 文件(有效的配置):

v=0
o=- 1277647151953158 1 IN IP4 190.40.14.100
s=Session streamed by "testH264VideoAudioStreamer"
i=test-h264-mux.mpg
t=0 0
a=tool:LIVE555 Streaming Media v2007.05.24
a=type:broadcast
a=control:*
a=source-filter: incl IN IP4 * 190.40.14.100
a=rtcp-unicast: reflection
a=range:npt=0-
a=x-qt-text-nam:Session streamed by "testH264VideoAudioStreamer"
a=x-qt-test-inf:test-h264=mux.mpg
m=video 8554 RTP/AVP 96
c=IN IP4 190.40.15.63/7
a=rtpmap:96 H264/90000
a=fmtp:96 packetization-mode=1;profile-level-id=000042;sprop-parameter-sets=H264
a=control:track1

但是如果我从 RTSP 切换到 RTP,它就不起作用了。我尝试在 VLC 播放器中加载上述 SDP 文件,但没有帮助。

以下是 VLC Player 0.8.6d 的一些调试输出:

main input debug: thread 4016 (input) created at priority 1 (input/input.c:265)
main input debug: `rtp://@190.40.15.63:8554' gives access `rtp demux' `' path `@190.40.15.63:8554'
main input debug: creating demux: access='rtp' demux='' path='@190.40.15.63:8554'
main demuxer debug: looking for access_demux module: 0 candidates
main demuxer warning: no access_demux module matched "rtp"
main input debug: creating access 'rtp' path='@190.40.15.63:8554'
main access debug: looking for access2 module: 6 candidates
access_udp access debug: opening server=:0 local=190.40.15.63:8554
main access debug: net: connecting to '[]:0@[190.40.15.63]:8554
main access debug: looking for netrowk module: 1 candidate
ipv6 access debug: 190.40.15.63: Host or service not found
main access debug: using network module "ipv6"
main access debug: removing network module "ipv6"
main access debug: looking for netrowk module: 1 candidate
ipv4 access debug: resolving 190.40.15.63:8554...
ipv4 access debug: resolving :0...
main access debug: using network module "ipv4"
main access debug: removing network module "ipv4"
main access debug: using access2 module "access_udp"
main private debug: pre buffering
access_udp access debug: no RTP header detected
main input debug: creating demux: access='rtp' demux='' path='@190.40.15.63:8554'
main demuxer debug: looking for demux2 module: 45 candidates
ts demuxer warning: TS module discarded (lost sync)
ffmpeg demuxer debug: detected format: mp3

(可能有错别字,因为我必须手动复制它 - 不要问:))

在 VLC 1.0.5 中,我收到一个unknown payload type错误,并且由于Unknown network stack error根本无法加载 SDP 。显示的其他错误是SDP connection infos not supportedSap demuxer warning: invalid SDP

任何帮助将不胜感激!

谢谢,

伊利亚

4

1 回答 1

8

我必须做的是使用 SDP 文件而不是直接打开流。事实证明,仅在使用 RTSP 时才传输 SDP 数据。流式传输 RTP 时,我必须自己提供 SDP 文件。

所以我所做的是:

  1. 使用 RTSP 流式传输(有效的方法),
  2. 使用Wireshark记录通过RTSP传输的SDP文件,
  3. 将 SDP 保存为扩展名为 .sdp 的文本文件,
  4. 在 VLC 中,打开 SDP 文件而不是直接打开网络流。

它做了魔术!

于 2010-06-29T11:41:07.433 回答