live555之openRTSP----- continueAfterDESCRIBE()

原创 2016年08月31日 14:19:54

openrtsp在发送完DISCRIBE之后,server端就会返回描述信息SDP。
DISCRIBE请求报文格式
这里写图片描述
响应报文格式
这里写图片描述
例如:


> DESCRIBE rtsp://192.168.20.136:5000/xxx666 RTSP/1.0 CSeq: 2 
> token:
> Accept: application/sdp 
> User-Agent: VLC media player (LIVE555
RTSP/1.0 200 OK  
Cseq: 2  
x-prev-url:rtsp://192.168.20.136:5000 
x-next-url: rtsp://192.168.20.136:5000
x-Accept-Retransmit: our-retransmit 
x-Accept-Dynamic-Rate: 1
Cache-Control: must-revalidate 
Last-Modified: Fri, 10 Nov 2006 12:34:38 GMT 
Date: Fri, 10 Nov 2006 12:34:38 GMT 
Expires: Fri, 10 Nov 2006 12:34:38 GMT 
Content-Base: rtsp://192.168.20.136:5000/xxx666/
Content-Length: 344 Content-Type: application/sdp v=0 //以下都是sdp信息
o=OnewaveUServerNG 1451516402 1025358037 IN IP4 192.168.20.136
s=/xxx666 
u=http:/// 
e=admin@ 
c=IN IP4 0.0.0.0 
t=0 0
a=isma-compliance:1,1.0,1 
a=range:npt=0- 
m=video 0 RTP/AVP 96//m表示媒体描述, 下面是对会话中视频通道的媒体描述 
a=rtpmap:96 MP4V-ES/90000 
a=fmtp:96 profile-level-id=245;config=000001B0F5000001B509000001000000012000C888B0E0E0FA62D089028307a=control:trackID=0 //trackID=0表示视频流用的是通道0 ```

continueAfterDESCRIBE函数的流程我参考了这篇博客,排版比较清晰
这里写图片描述

注: session = MediaSession::createNew(*env, sdpDescription); //MediaSession类似于个个容器、链表用来管理MediaSubsession。
在创建MediaSession的时候,顺便根据SDP信息中的m=部分创建了一个MediaSubsession对象。
// We have a “m=” line, representing a new sub-session:
MediaSubsession* subsession = createNewMediaSubsession();


这里面重点说一下initiate函数
subsession->initiate(simpleRTPoffsetArg)
先根据sdp信息协商,采用UDP传输方式,创建两个Groupsock对象用于RTP/RTCP的接收,fRTPSocket,fRTCPSocket.
之后在创建source,“fRTPSource”and “fReadSource”,和live555服务端原理一样,source和sink,分管生产和消费。

createSourceObjects();
这里根据返回的SDP信息创建对应的source,我这边是H264视频源,所以

 } else if (strcmp(fCodecName, "H264") == 0) {
    fReadSource = fRTPSource
      = H264VideoRTPSource::createNew(env(), fRTPSocket,
                      fRTPPayloadFormat,
                      fRTPTimestampFrequency);
      } 

然后创建一个fRTCPInstance = RTCPInstance::createNew,如果是多录视频fRTCPInstance 专门接受RTCP包,

基本上初始化工作已经完成了。但是疑问是我们接受server端发送的rtp包的前提,我们必须要监听一个端口才行啊。其实这一步是放在创建fRTPSocket,fRTCPSocket.的时候就完成了。
new Groupsock()->OutputSocket(env,port)->Socket(env,port)->setupDatagramSocket(fEnv,port)->bind ;

总结一下,获取SDP信息之后,我们干了哪些事。
1.创建MediaSession MediaSubsession
2.创建套接字fRTPSocket,fRTCPSocket.
3.bind接收端口,为后面做准备
4.初始化一个大的接收buffer
5.创建source
6.创建RTCPInstance

然后下一篇在讲一下获取SETUP反馈信息之后的内容。

live555中openRTSP用法

openRTSP openRTSP是一个命令行程序,它sk
  • persist_1
  • persist_1
  • 2014年09月04日 13:14
  • 2866

live555之openRTSP-----流程分析

流程分析也可参照 http://blog.csdn.net/xu_fu/article/details/9318905 ,这篇博客的排版很清晰。 下面是我自己总结的内容:(我这个rtsp客户端实现结...
  • sstya
  • sstya
  • 2016年08月31日 11:58
  • 509

用Live555 中的openRTSP 保存H264文件

用Live555 中的openRTSP 保存H264文件很简单 但是发现器保存的h264文件并不能直接被vcl 播放同一个rtsp源 用vcl保存的h264文件就可以直接被播放经过研究 发现是 ope...
  • zblue78
  • zblue78
  • 2010年06月09日 15:23
  • 12002

openRTSP分析1

openrtsp是live555里面作为rtsp客户端的一个例子程序。默认是接收rtsp流并保存为文件,里面对多种格式进行了处理。网上也有很多对openrtsp的分析的文章,但是个人感觉都不是太详细,...
  • huguohu2006
  • huguohu2006
  • 2013年02月05日 17:55
  • 8649

openRTSP 使用

from :  1:  编译    (1):  ./genMakefiles           linux    (2):  make 2: 服务器环境    ...
  • occupy8
  • occupy8
  • 2014年07月02日 09:36
  • 3099

live555 分析—— OpenRtsp

通过分析live库提供的例子程序 OpenRTSP,可以清晰地了解客户端接收来自网络上媒体数据的过程。注意,RTP协议和RTCP协议接收的数据分别是视音频数据和发送/接收状况的相关信息,其中,RTP协...
  • leixiaohua1020
  • leixiaohua1020
  • 2013年10月15日 12:38
  • 11116

参照openRTSP写的一个RTSP client 加了一些注解

#include "liveMedia.hh" #include "BasicUsageEnvironment.hh" #include "GroupsockHelper.hh" UsageEn...
  • zblue78
  • zblue78
  • 2010年10月27日 12:31
  • 14328

openRTSP 利用rtsp 得到摄像头的录像mp4文件

  • 2014年05月23日 20:00
  • 6.5MB
  • 下载

testProgs中的OpenRTSP是典型的RTSPClient示例分析

因为要连接RTSP server,所以RTSPClient要有TCP socket。当获取到server端的DESCRIBE后,应建立一个对应于ServerMediaSession的ClientMed...
  • ainyko
  • ainyko
  • 2015年02月02日 10:55
  • 1025

[RTSP]live555-openRTSP客户端流程

1、创建TaskScheduler和BasicUsageEnvironment类; 2、命令行解析,获取流媒体地址和其他选项; 3、创建RTSPClient对象; 4、如果需要,RTSPClie...
  • faihung
  • faihung
  • 2017年06月03日 07:21
  • 624
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:live555之openRTSP----- continueAfterDESCRIBE()
举报原因:
原因补充:

(最多只允许输入30个字)