对于live555和RTSP,相信看到这篇博文的朋友应该很熟悉了,分享一些皮毛,大家尽量吐槽:
首先说一下做的功能:利用live555里面的一个live555mediaserver来作为媒体服务器,然后利用里面的TestRTSPClient来取得码流,当然官网上说了:RTSPClient只是个测试程序,如果用作产品还需要进行优化,不过可以作为参考,我也是用他来作为一个队live555入门的东西,看了一下里面的流程,好了不说废话了,这里主要讲的利用RTSP来从媒体服务器中取得码流,如下:
1.首先下载live555源码,然后进行编译(我的环境是ubuntu11.10),得到源码即可编译通过,然后里面有个mediaServer目录进去运行
./live555MediaServer
Play streams from this server using the URL
rtsp://192.168.1.106/<filename> //这里假设我们的文件名是:VideoFile.h264;
where <filename> is a file present in the current directory.
得到上面这一串字符,我们可以看到有一个是rtsp://192.168.1.06/<filename>
,这个就是我们在利用rtsp编写代码的时候需要用的url;现在你可以进入上层目录下testProgs,执行:
./testRTSPClient rtsp://192.168.1.106/<filename>
,然后就可以看到有码流过来了,这些码流就是filename文件,当然这个文件是在mediaServer当前目录中存在的,当你运行前你可以尝试用抓包工具看到码流申请的流程;这里我用的是vlc来代替这一步
2.当第一步证实我们的mediaServer是可用的了,接下来的步骤就是在vlc中找到打开网路流–>然后把上面的rtsp url输入vlc中,然后开启网络抓包工具,单击播放,通过抓包工具可以清楚的看到码流申请的流程:
1.
==>vlc—>mediaserver 请求
OPTIONS rtsp://192.168.1.106/client.264 RTSP/1.0 //OPTIONS请求,最后面的RTSP/1.0是rtsp版本
CSeq: 2 //这个是会话的序号,回复的序号跟这个必须一致,并且应该是递增的
User-Agent: LibVLC/2.0.1 (LIVE555 Streaming Media v2011.12.23)//可以不用管
==> mediaserver–>vlc 回复
RTSP/1.0 200 OK //200 OK 表示我们求的OPTIONS请求成功
CSeq: 2 //注意与上面的一样
Date: Sat, Jun 08 2013 14:01:34 GMT //服务器当前时间
//服务器支持的方法,也就是说我们可以发送下面的这些请求过去
Public: OPTIONS, DESCRIBE, SETUP, TEARDOWN, PLAY, PAUSE, GET_PARAMETER, SET_PARAMET
2.
==>vlc—>mediaserver 请求
DESCRIBE rtsp://192.168.1.106/client.264 RTSP/1.0 //DESCRIBE请求
CSeq: 3 //序号递增
User-Agent: LibVLC/2.0.1 (LIVE555 Streaming Media v2011.12.23)
Accept: application/sdp //这段表示我们请求得到回复的数据应该是sdp(关于sdp请百度)
==&g