live555
pony
这个作者很懒,什么都没留下…
展开
-
引用live555库需要注意地方
live555一般都是编译成静态的库,但是引用的时候需要注意他的顺序。如果引用的库正确而顺序不正确会出现找不到函数的错误。正确的引用顺序是:libliveMedia.a libBasicUsageEnvironment.a libgroupsock.a libUsageEnvironment.aliveMedia要放在其他的前面例如在qtcreator中加入live555的原创 2013-04-17 11:01:11 · 2239 阅读 · 1 评论 -
openRTSP分析1
openrtsp是live555里面作为rtsp客户端的一个例子程序。默认是接收rtsp流并保存为文件,里面对多种格式进行了处理。网上也有很多对openrtsp的分析的文章,但是个人感觉都不是太详细,一般都只有个大概的流程。这里再给这个过程捋一捋。主要是一些重要的线路,细节部分就不予讨论。在playCommon.cpp中是从main开始执行的。开始是 TaskScheduler原创 2013-02-05 17:55:13 · 9736 阅读 · 2 评论 -
openRtsp分析3
接着上篇来分析。option命令完了就是unsigned RTSPClient::sendDescribeCommand(responseHandler* responseHandler, Authenticator* authenticator) { if (authenticator != NULL) fCurrentAuthenticator = *authenticator;原创 2013-02-06 15:22:30 · 2332 阅读 · 1 评论 -
openRtsp分析2
在上一篇中分析了SingleStep,可以看到在openConnection的时候传给fSchedler的HandlerProc是connectionHandler。在SingleStep中看到检测到select中write准备就绪。即跳到connectionHandlervoid RTSPClient::connectionHandler(void* instance, int /*ma原创 2013-02-06 13:20:38 · 2744 阅读 · 0 评论 -
openRtsp分析4
在上篇中分析了setup建立的过程,现在再来看看sink建立的过程。continueAfterSETUP之后直接就进入到了setupStreams。这里根据subsession->codecName()建立对应的fileSink。 fileSink = H264VideoFileSink::createNew(*env, outFileName, subsession->f原创 2013-02-06 18:20:45 · 2712 阅读 · 1 评论 -
openRtsp分析5
4后面由于时间关系没接上,现在继续。4之后的部分主要是接收到数据包然后分析数据包,然后处理。中间分析数据包的过程是很复杂的。主要但是最后处理一帧数据的部分是到了fileSink.cpp中的afterGettingFrame1,这是个虚函数我们可以来继承他做其他的操作。原创 2013-04-17 15:35:47 · 947 阅读 · 0 评论