1、最近学习流媒体服务器,下了个LIVE555的源码,在WINDOWS下调试成功,但是播放不了媒体文件。
你可以找一下相关的论坛,最好是那种人气比较高的论坛,注册会员,发帖求助,会有高手帮你的。
2、live555 如何主动像服务器发送视频流,怎么改,或者怎么配置,寻求帮助
你遇到的问题和我现在要解决的问题是一样的!!!!!
3、Linux环境下如何调试live555求答案
1,./genMakefiles linux-gdb 其中,后面的copygdb是必须的;2,修改live/config.linux-gdb文件,在COMPILE_OPTS一行中添加-DDEBUG,以使源代码中的debug有效;3,make 编译文件4,运行gdb live555ProxyServer5,set args 输入参数,如set args -v rtsp://192.168.xxx.xxx6,可以先设置断点,如break xx ,然后run;7,进行单步……随意调试
4、live555的proxyServer怎么搭建环境,没有RTSP摄像机
这得看实在PC端还是PS3端停止的。如果在PC端,那就需要找到psdm的根目录,然后删除Downloads文件夹。暂停回ps3下载,重启电脑,答再打开PSDM,继续ps3下载。就可以了!如果是ps3端,很简单,中止,然后继续就可以了!
5、live555中是怎样创建rtsp服务器的
可以保存下来的 你发的这个网址本身就是一个音乐的链接地址
直接在迅雷中 新建—普通/emule任务 然后把你的这个网址放进去就可以下载的
很简单的
6、在Linux环境下如何调试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即可。
7、live555客户端和服务端代码是一套吗
详细的语音教程,从架设到登陆,从引擎更新到登陆器配置,足以应付你开个简单的让朋友们玩玩了。文件已经上传,需要的话点击下载即可。
8、live555的介绍
是一个为流媒体提供解决方案的跨平台的C++开源项目,它实现了对标准内流媒体容传输是一个为流媒体提供解决方案的跨平台的C++开源项目,它实现了对标准流媒体传输协议如RTP/RTCP、RTSP、SIP等的支持。Live555实现了对多种音视频编码格式的音视频数据的流化、接收和处理等支持,包括MPEG、H.263+、DV、JPEG视频和多种音频编码。同时由于良好的设计,Live555非常容易扩展对其他格式的支持。目前,Live555已经被用于多款播放器的流媒体播放功能的实现,如VLC(VideoLan)、MPlayer。
9、怎样编译live555 openrstp
1: 编译
(1): ./genMakefiles linux
(2): make
2: 服务器环境
服务器端是一个支持RTSP server的H.264的摄像头;
3: 运行 openRTSP
./openRTSP -d 20 -f 20 -w 640 -h 480 -b 400000 "rtsp://192.168.2.239/id=0"
或 ./openRTSP -f 20 -w 640 -h 480 -b 400000 "rtsp://192.168.2.239/id=0"
参数解释; -d 20 --->程序运行时间,如果没有程序持续从服务器获取视频;
-f 20 ----> 帧率
-w 640 -h 480 -----> 帧分辨率
-b 400000 ---->码率
4: 如果不修改playCommon.cpp的代码,openRTSP将获取的视频数据通过stdout直接打印到屏幕
5: 如果是自己取裸码流,则可以调用SPS相关的函数,将H264的帧信息告诉解码器,否则无法解码
unsigned int num=1;
SPropRecord * sps = parseSPropParameterSets(subsession->fmtp_spropparametersets(),num);
fileSink = H264VideoFileSink::createNew(*env, outFileName,
subsession->fmtp_spropparametersets(),
fileSinkBufferSize, oneFilePerFrame);
struct timeval tv={0,0};
unsigned char start_code[4] = {0x00, 0x00, 0x00, 0x01};
fileSink-> addData(start_code, 4, tv);
fileSink->addData(sps[0].sPropBytes,sps[0].sPropLength,tv);
delete[] sps;
6: 稍微修改代码让openRTSP只录视频,且保存到指定的文件
streamURL = argv[1];
// add by Andy_xi
createReceivers = True; // 保存视频
outputAVIFile = False; //因为是H264
videoOnly = True;
singleMedium = "video"; //只要视频
//<------end
7: 调试记录
启动openRTSP后,一定的看到SDP信息中的SPS信息,否则解码器可能不能解码
a=fmtp:106 profile-level-id=42001E;sprop-parameter-sets=Z0KAKNoB4AiXlQ==,aM48gA==;packetization-mode=0
只要有这个信息,用file 命令看生成h264文件显示如下:
new.h264: JVT NAL sequence, H.264 video, baseline @ L 40
10、live555 rtspserver.cpp 为什么是tcp的
1,RTSP连接的建立过程
RTSPServer类用于构建一个RTSP服务器,该类同时在其内部定义了一个RTSPClientSession类,用于处理单独的客户会话。
首先创建RTSP服务器(具体实现类是DynamicRTSPServer),在创建过程中,先建立Socket(ourSocket)在TCP的554端口进行监听,然后把连接处理函数句柄
(RTSPServer:: incomingConnectionHandler)和socket句柄传给任务调度器(taskScheler)。
任务调度器把socket句柄放入后面select调用中用到的socket句柄集(fReadSet)中,同时将socket句柄和incomingConnectionHandler句柄关联起来。接着,主程序开始进入任务调度器的主循环(doEventLoop),在主循环中调用系统函数select阻塞,等待网络连接。
当RTSP客户端输入(rtsp://192.168.1.109/1.mpg)连接服务器时,select返回对应的scoket,进而根据前面保存的对应关系,可找到对应处理函数句柄,这里就是前面提到的incomingConnectionHandler了。在incomingConnectionHandler中创建了RTSPClientSession,开始对这个客户端的会话进行处理。
具体分析如下:
DynamicRTSPServer::creatnew():
1.调用继承自RTPSever::setUpOurSocket:
1.调用GroupsockHelper 的setupStreamSocket创建一个socket连接,并绑定,
2.设置socket的发送缓存大小,
3.调用listen开始监听端口,设置同时最大能处理连接数LISTEN_BACKLOG_SIZE=20,如果达到这个上限则client端将收到ECONNERREFUSED的错误
4.测试绑定端口是否为0,为0的话重新绑定断口,并返回系统自己选择的新的端口。
5.返回建立的socket文件描述符
2.调用自己和RTPSever的构造函数:
RTPSever构造函数:
1.用一个UsageEnvironment对象的引用构造其父类Medium
2.设置最大等待回收连接时间reclamationTestSeconds,超过这个时间从客户端没有RTSP命令或者RTSP的RR包则收回其RTSPClientSession
3.建立一个HashTable(实际上是一个BasicHashTable),fServerMediaSessions指向这个表。
4.调用参数UsageEnvironment对象env的成员,一个TaskScheler指针所指对象(实际就是一个BasicTaskScheler对象)的成员函数
turnOnBackgroundReadHandling():
1.调用一个HandlerSet::assignHandler()创建一个Handler,把socketNum【此处为服务器监听的socket描述符】和处理函数RTSPServer::incomingConnectionHandler(),还有指向RTSPSever的指针绑定在一起。
incomingConnectionHandler作用:
1.调用accept返回服务器与客户端连接的socket描述符
2.设置客户端描述符为非阻塞
3.增加客户端socket描述符的发送缓存为50*1024
4.为此客户端随机分配一个sessionId
5.用客户端socket描述符clientSocket,sessionId,和客户端地址clientAddr调用creatNewClientSession创建一个clientSession。