live555调试

(1)先下载live555的源码

如:live.2011.06.14a.tar.gz

(2)解压源码

tar -zxvf live.2011.06.14a.tar.gz

(3)cd live

(4)./genMakefiles linux-gdb

(5)make

经过以上步骤生成的live555MediaServer可以用于gdb调试,如果要使源代码中的DEBUG宏有效,

 

还需要修改live/config.linux-gdb文件,在COMPILE_OPTS一行中添加-DDEBUG即可。





http://topic.csdn.net/t/20060612/14/4815999.html


CSDN- CSDN社区- 专题开发/技术/项目- 多媒体/流媒体开发

收藏熟悉livemedia的高手请进[问题点数:50,自动结帖]

  • luoqintao
  • (tooluck)
  • 等 级:
  • 结帖率:100.00%

楼主发表于:2006-06-12 14:20:47
最近研究livemedia库,自带的一个rtspserver的例子,该例子中只能访问预先设定好的文件,比如说,rtsp://ip:port/XXX,后面的xxx是预先ServerMediaSession创建时指定好的,这样就显得不够灵活。
现在的问题是想做这样一个rtsp   server,根据XXX的值(可以是一个文件名或其他值),可以自动定位到要传输的内容。
请教高手如何用livemedia库来实现!
 
 
  • 对我有用[0]
  • 丢个板砖[0]
  • 引用
  • 举报
  • 管理
  • TOP
回复次数: 8
  • xrye0395用户头像
  • xrye0395
  • (Terry)
  • 等 级:

#1楼 得分:0回复于:2006-06-12 15:37:59
在RTSPServer类中,有个lookupServerMediaSession函数
如果没有找到相应的ServerMediaSession   ,那就动态创建一个ServerMediaSession
 
  • 对我有用[0]
  • 丢个板砖[0]
  • 引用
  • 举报
  • 管理
  • TOP
  • luoqintao用户头像
  • luoqintao
  • (tooluck)
  • 等 级:

#2楼 得分:0回复于:2006-06-13 09:49:29
to   xrye0395(Terry),我看过你的一片帖子,知道你做的东西跟我这个差不多,望加我msn一起讨论下:[email protected]

这个我也想到了,但是好像离我的需求还有点距离。
我的需求如下:
我现在想做一个实时流转发服务器,该服务器的流数据是通过一些网络摄像机(支持rtsp)获取,也就是该转发服务器一个rtsp的client和server的结合体,目前的做法是摄像机主动将数据发送到该服务其上,服务器再根据实际客户请求传输数据。你说的这个也应该可以满足。
但是我想做到不是摄像机主动先把数据发给转发服务器,而是服务器在需要某个摄像机的数据时自己作为rtsp   client向摄像机去要。
请赐教!
 
  • 对我有用[0]
  • 丢个板砖[0]
  • 引用
  • 举报
  • 管理
  • TOP
  • xrye0395用户头像
  • xrye0395
  • (Terry)
  • 等 级:

#3楼 得分:0回复于:2006-06-15 10:21:55
那就把示例中的openRTSP封装成一个RunTimeRTSPClient类
当客户端需要打开某个视频源时,在RTSPServer中动态创建一个RunTimeRTSPClient对象,再动态创建一个ServerMediaSession   ,两个关联起来就OK了
 
  • 对我有用[0]
  • 丢个板砖[0]
  • 引用
  • 举报
  • 管理
  • TOP
  • xrye0395用户头像
  • xrye0395
  • (Terry)
  • 等 级:

#4楼 得分:0回复于:2006-06-15 10:45:54
ServerMediaSession*   RunTimeRTSPServer::lookupServerMediaSession(char   const*   streamName)   {

ServerMediaSession*   RequestSession;
RequestSession   =   (ServerMediaSession*)(fServerMediaSessions-> Lookup(streamName));

if   (RequestSession   ==   NULL)
        {
//创建rtspclient
char*   url   =   new   char[255];
memset(url,0,255);

sprintf(url, "rtsp://%s ",streamName);
#ifdef   _DEBUG
envir()   < < "Open   Url: " < <   url   < <   "\n ";
#endif
RunTimeRTSPClient*   rtspclient   =   RunTimeRTSPClient::createNew(envir(),url);
delete[]   url;

ServerMediaSession*   sms
=   ServerMediaSession::createNew(envir(),   streamName);

//加入ServerMediumSubSession
//rtspclient-> getSource();
//sms-> addSubsession();

this-> addServerMediaSession(sms);

rtspclient-> startPlayingStreams();
              }

RequestSession   =   (ServerMediaSession*)(fServerMediaSessions-> Lookup(streamName));
return   RequestSession;

}
 
  • 对我有用[0]
  • 丢个板砖[0]
  • 引用
  • 举报
  • 管理
  • TOP
  • luoqintao用户头像
  • luoqintao
  • (tooluck)
  • 等 级:

#5楼 得分:0回复于:2006-06-15 13:21:39
xrye0395(Terry),真是多谢啊,我原来准备做一个客户端线程专门接收数据然后缓存,让rstpserver线程与之共享内存的,这样看了还是你的方法好,不过有几个问题:
1,这个RunTimeRTSPClient的rtspclient-> getSource()和createNew(envir(),url);是如何封装的。
2,我看了http://lists.live555.com/pipermail/live-devel/2005-October/003326.html,好像也是你这种做法,说是   getNextFrame()的问题具体见:http://lists.live555.com/pipermail/live-devel/2005-October/003326.html
不知道这些问题你解决没有?
最好能给我你的RunTimeRTSPClient和自定义的source的封装的代码,小弟感激涕零啊!
另,加我msn吧,这样沟通方便些,[email protected],谢谢啦!
 
  • 对我有用[0]
  • 丢个板砖[0]
  • 引用
  • 举报
  • 管理
  • TOP
  • luoqintao用户头像
  • luoqintao
  • (tooluck)
  • 等 级:

#6楼 得分:0回复于:2006-06-16 16:53:12
没有人帮忙么?
 
  • 对我有用[0]
  • 丢个板砖[0]
  • 引用
  • 举报
  • 管理
  • TOP
  • SmallBigCat用户头像
  • SmallBigCat
  • (乱花渐欲迷人眼)
  • 等 级:

#7楼 得分:0回复于:2006-11-21 13:49:40
学习,接分
 
  • 对我有用[0]
  • 丢个板砖[0]
  • 引用
  • 举报
  • 管理
  • TOP
  • SmallBigCat用户头像
  • SmallBigCat
  • (乱花渐欲迷人眼)
  • 等 级:

#8楼 得分:0回复于:2006-11-21 13:50:28
楼上的兄弟是linux下开发的么
 
  • 对我有用[0]
  • 丢个板砖[0]
  • 引用
  • 举报
  • 管理
  • TOP

你可能感兴趣的:(live555调试)