轉(zhuǎn)自:
http://blog.sina.com.cn/s/blog_8337d0c50100xn25.html一、RTP的流發(fā)布 (見上篇) 二、對不同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、轉(zhuǎn)換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流媒體發(fā)布 1、流媒體服務(wù)器(real server) real server獲取H264.sdp文件實現(xiàn)發(fā)布。 五、RTMP流媒體發(fā)布 1、流媒體服務(wù)器(rtmp server) 2、ffmpeg轉(zhuǎn)發(fā) ffmpeg -i "e:\tt.sdp" -vcodec flv -acodec aac -ab 8000 -f flv rtmp://192.168.0.201:1935/live/stream3 3、播放 jwplayer 實現(xiàn): rtmp://192.168.0.201:1935/live/stream3 成功。
|