打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
FFMPEG对RTP直播流转发的实现
转自:http://blog.sina.com.cn/s/blog_8337d0c50100xn25.html

一、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

      成功。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
关于H264通过RTP传输的打包方式
H264中的SPS、PPS提取与作用
FFmpeg获取DirectShow设备数据(摄像头,录屏)
实战排查|为什么遮挡推流摄像头,会导致播放绿屏?
从零开始写一个RTSP服务器(一)RTSP协议讲解
SDP 协议简单解析
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服