FFMPEG对RTP直播流转发的实现

来源:互联网 发布:进出口贸易数据 编辑:程序博客网 时间:2024/06/06 12:32

一、RTP的流发布

(见上篇)

二、对不同RTP流媒体的SDP文件定义

1、Wireshark对RTP流的抓包分析:

首先分析SIP消息中SIP/SDP消息中的SDP定义,得到基本的SDP文件,如下

保存文件h264.sdp

SDP:
v=0
o=-                               0 0 IN IP4 127.0.0.1
s=No Name
c=IN IP4                               192.168.0.52
t=0 0
a=tool:libavformat                               52.93.0
m=audio 7300 RTP/AVP 8
a=rtpmap:8                               PCMU/8000
m=video 7310 RTP/AVP                               104
a=rtpmap:104 H264/90000
a=fmtp:104                               profile-level-id=42e00a; packetization-mode=1;                               max-br=452; max-mbps=11880

其次,有了以上SDP后通过ffplay                               h264.sdp                               还不能正确的播放,因为H264的具体解码格式在RTP流的前两个包里,如果ffplay错过了该包,就不能正确播放,所以必须要获得sprop-parameter-sets值。

2、Wireshark抓RTP包中的SPS和PPS

得到包的Base64值的SPS和PPS值。

SPS:67                               42 c0 14 f4 0b 04 b4 20 00 00 03 00 20 00 00 03 03                               d1 e2 85 54

PPS:68                               ce 04 f2

67是SPS起始位,68是PPS起始位。

3、转换SPS/PPS到sprop-parameter-sets

sprop-parameter-sets=Z0LAFPQLBLQgAAADACAAAAMD0eKFVA==,aM4E8g==

4、合并H264.sdp

v=0
o=-                               0 0 IN IP4 127.0.0.1
s=No Name
c=IN IP4                               192.168.0.52
t=0 0
a=tool:libavformat                               52.93.0
m=audio 7300 RTP/AVP 8
a=rtpmap:8                               PCMU/8000
m=video 7310 RTP/AVP                               104
a=rtpmap:104 H264/90000
a=fmtp:104                               profile-level-id=42e00a; packetization-mode=1;                               max-br=452; max-mbps=11880;                               sprop-parameter-sets=Z0LAFPQLBLQgAAADACAAAAMD0eKFVA==,aM4E8g==

三、播放

通过ffplay                               H264.sdp就可以正确播放,错过SPS/PPS包也可以。

四、RTSP流媒体发布

1、流媒体服务器(real                               server)

real                               server获取H264.sdp文件实现发布。

五、RTMP流媒体发布

1、流媒体服务器(rtmp                               server)

2、ffmpeg转发

ffmpeg                               -i "e:\tt.sdp" -vcodec flv -acodec aac -ab 8000 -f                               flv                               rtmp://192.168.0.201:1935/live/stream3

3、播放

jwplayer                               实现:

rtmp://192.168.0.201:1935/live/stream3

成功。

 

http://www.360doc.com/content/12/0627/17/2660674_220789931.shtml

http://www.360doc.com/content/12/0627/17/2660674_220789931.shtml

0 0