
live555
文章平均质量分 52
sunxiaopengsun
这个作者很懒,什么都没留下…
展开
-
time_wait 处理方法
Socket中的TIME_WAIT状态在高并发短连接的server端,当server处理完client的请求后立刻closesocket此时会出现time_wait状态然后如果client再并发2000个连接,此时部分连接就连接不上了,用linger强制关闭可以解决此问题,但是linger会导致数据丢失,linger值为0时是强制关闭,无论并发多少多能正常连接上,如果非0会发生部分连接不上的情况!(可调用setsockopt设置套接字的linger延时标志,同时将延时时间设置为0。)TCP/IP的RFC原创 2022-03-18 16:38:44 · 4149 阅读 · 0 评论 -
H264 over RTP 的打包
H264 over RTP 的打包_Cloudy_cn的专栏-CSDN博客_h264 rtp转载 2022-03-10 16:07:31 · 140 阅读 · 0 评论 -
live555 整体框架剖析
//监听rtsp服务端口portNumBits rtspServerPortNum = 554rtspServer = DynamicRTSPServer::createNew(*env, rtspServerPortNum, authDB) setUpOurSocket(env, ourPort)【DynamicRTSPServer】 env.taskScheduler().turnOnBackgroundReadHandling(fServerSocket, incomingConne..原创 2022-03-03 22:14:23 · 417 阅读 · 0 评论 -
live555 如何设置时间戳
rtsp客户端发送播放请求后,rtsp服务器调用流程如下h264 video rtsp1.ServerMediaSubsession::startStream -> OnDemandServerMediaSubsession::startStream2.startStream -> StreamState::startPlaying3.MediaSink::startPlaying4.MediaSink::continuePlaying->MultiFramedRTPS原创 2021-06-24 10:16:26 · 1268 阅读 · 0 评论 -
VS2015编译与测试Live555和源代码下载
https://blog.csdn.net/lbc2100/article/details/80744888转载 2020-03-28 19:55:15 · 275 阅读 · 0 评论 -
live555 h264 videostream 数据流和时间戳的分析
rtsp客户端发送播放请求后,rtsp服务器调用流程如下h264 video rtsp1.ServerMediaSubsession::startStream -> OnDemandServerMediaSubsession::startStream2.startStream -> StreamState::startPlaying3.MediaSink::startP...原创 2019-03-04 16:09:41 · 662 阅读 · 0 评论 -
rtsp服务器(linux和 嵌入式),支持多路推流
封转好的 rtsp服务器库 ,注意:仅仅支持h264和aac推流使用方法:#if 0void Example(){ IRtspServer*pRtspServer = CreateRTSPServer(10554); //创建rtspserver int nStreamHandle1 = pRtspServer->CreateStreamUrl("chn1")...原创 2018-11-13 16:33:44 · 4384 阅读 · 0 评论 -
通过live555实现H264 RTSP直播
转载地址:https://blog.csdn.net/xipiaoyouzi/article/details/54617219前面的文章中介绍了《H264视频通过RTMP流直播》,下面将介绍一下如何将H264实时视频通过RTSP直播。 实现思路是将视频流发送给live555, 由live555来实现H264数据流直播。 视频采集模块通过FIFO队列将H264数据帧发...转载 2018-09-03 13:08:27 · 592 阅读 · 0 评论 -
live555 编译动态库时遇到relocation R_X86_64_32 against `a local symbol'的错误
解决方法:将live555 四个库的makefile全部加上 -fPIC.$gcc -c hello.c$gcc -c main.c$gcc -shared -fPIC -o hello hello.o main.o.. relocation R_X86_64_32 against `a local symbol' can not be used whe原创 2018-02-05 16:15:26 · 992 阅读 · 0 评论 -
LIVE555再学习 -- testRTSPClient 实例
转载地址:http://blog.csdn.net/qq_29350001/article/details/78051767上一篇文章简单看了一遍 testRTSPClient 的源码,接下来举几个应用实例加深一下。首先什么都不做修改,先执行一遍,看一下。一、执行 testRTSPClient 特么,上面的东西我没看明白。。。 a=、转载 2018-01-30 16:11:57 · 1107 阅读 · 0 评论 -
基于live555的rtsp客户端接收及ffmpeg解码
基于live555的rtsp客户端接收及ffmpeg解码 http://blog.chinaunix.net/uid-15063109-id-4482932.html很多人用live555都是为了做一个rtsp的客户端。Live555提供了一个功能丰富的rtsp客户端:openRTSP。很多初学者都是通过它来学习live及rtsp的。这个程序修改做单路播放很容易,不过,一般转载 2018-01-30 14:49:05 · 356 阅读 · 0 评论 -
live555 交叉编译移植到海思开发板
本文章参考了。http://blog.csdn.net/lawishere/article/details/8182952,写了hi3518的配置说明。特此感谢1、首先到它的主页下载一个源码包:http://www.live555.com/liveMedia/public/我下载的是latest的,具体什么版本还真不清楚 2、放到linux目录下解压:原创 2018-01-26 18:07:19 · 2786 阅读 · 2 评论 -
H264的RTP负载打包的数据包格式,分组,分片
H264的RTP负载打包的数据包格式,分组,分片 1. RTP数据包格式RTP报文头格式(见RFC3550 Page12): 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 12 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+原创 2018-01-03 12:12:58 · 345 阅读 · 0 评论 -
live555之h264时间戳
时间戳来自于H264or5VideoStreamParser::parse() 函数,该函数负责解析nalu,从中获取帧率,时间戳则是按照帧率累加。而usingSource来自于H264VideoStreamFramer,而不是 ByteStreamFileSource。ByteStreamFileSource仅仅是从文件读取帧 ,但是并不负责维护时间戳。因H264VideoStreamF原创 2018-01-02 14:12:15 · 2368 阅读 · 0 评论 -
live555之play启动流(startStream)
在setup时,已经创建好了流动的流:streamtoken,用streamState数组维护。在play时,遍历streamState数组,启动每一个流。原创 2017-12-27 15:48:27 · 745 阅读 · 0 评论 -
live555之setup创建流动流(streamState)
在describe的时候,临时性 创建了source和sink,在获取到sdp信息后,将其关闭。而在setup时,此处创建的source和sink会长期存在,sink从source获取数据流,以rtp形式发送到客户端。streamState数组来维护一个rtsp流的多路,数组的每一个元素代表一路流,内部通过streamtoken表示。原创 2017-12-27 11:23:45 · 717 阅读 · 0 评论 -
live555之创建source和 sink
ServerMediaSession与rtsp流相关,一个rtsp流有多路 ,每一路代表一个ServerMediaSubsession,而每一个Subsession内部维护了一个source和sink,由sink向source要数据。服务器在接收到客户端Describe命令后,需要创建SDP信息,而SDP信息存放在 ServerMediaSubsession中,在调用OnDemandSer原创 2017-12-26 17:48:24 · 1221 阅读 · 1 评论 -
live555之服务器长时间未收到反馈断开
测试发现 ,用darwin客户端取live555流 ,一分钟之后视频流就没了 。调试发现,live555有个reclamationSeconds值,如果该值大于0,rstp客户端要定期发送 信息到live555,否则过期后就断开。原创 2017-12-26 15:14:14 · 1413 阅读 · 0 评论 -
linux下编译live555
在live555的官网上已经有linux下编译的说明,如下:How to configure and build the code on Unix (including Linux, Mac OS X, QNX, and other Posix-compliant systems)The source code package can be found (as a ".tar.gz原创 2017-06-15 16:06:16 · 811 阅读 · 0 评论 -
live555 fNumTruncatedBytes〉0
fNumTruncatedBytes >0 的情况。1.在继承了Live555的FrameSource类的自定义类中,一定要override下面的方法:virtual unsigned maxFrameSize() const{ return 100*1024; //根据实际情况设置一个合理的值}2.可以看到,parser中是有自己的缓冲的,而且其大小是固定的:#def原创 2017-02-24 10:48:15 · 1651 阅读 · 1 评论 -
关于客户端和服务器端live555的一点bug修改
客户端主要出错信息: MultiFramedRTPSource error: Hit limit when reading incoming packet over TCP. Increase \"MAX_PACKET_SIZE\" RTCPInstance error: Hit limit [1450,1450] when reading incoming packet ov原创 2017-02-23 18:07:32 · 1288 阅读 · 0 评论 -
live555学习笔记17-H264VideoStreamParser详解 .
十七:H264VideoStreamParser详解很多人要做实时H264 RTP传输,那么如何充分利用live555来做呢?大家可以看到现有的H264VideoFileServerMediaSubsession中,sink使用了H264VideoRTPSink,source使用了H264VideoStreamFramer,然而这个连接是很复杂的,在这两个节点间要插入了很多其它的节点,原创 2017-02-17 14:01:15 · 1249 阅读 · 0 评论 -
live555学习笔记16-几个重要对象的生命期
十六 几个重要对象的生命期live555中很多类,类与类之间的关系复杂,从属关系不明显,层次上看起来也有些乱.所以源代码读起来比较困难,对于一些对象生命的来龙去脉也很难厘清.但这并不能说明live555的架构不好,最适合的才是最好的,对于流媒体的处理来说,live555架构已是相当精巧,当然,这是在你深入了解它的基础上才会有的体会.live555作为服务器,大家都很关心原创 2017-02-17 14:00:17 · 331 阅读 · 0 评论 -
Live555学习笔记14-live555多线程论
十四:live555多线程论江湖传闻:live555如果不改为多线程,在多核心机器上效率会降低.虽然我没做过测试,但比较相信此传闻的真实性 .所以在我试论述一下live555如何对多核进行支持,其实就是改为多线程,嘿嘿.先看此文:http://www.live555.com/liveMedia/faq.html#threads跟据它的说法,liv原创 2017-02-16 21:38:29 · 563 阅读 · 0 评论 -
live555学习笔记13-RTPInterface详解
十三:RTPInterface详解好几天没写blog了。看源码真累啊,还要把理解的写到纸上,还要组织混乱的思想,令人头痛,所以这需要激情。不过,今天激情又来了。大家应该已理解了GroupSocket这个类。理论上讲那些需要操作udp socket 的类应保存GroupSocket的实例。但事实并不是这样,可以看一下RTPSink,RTPSource,RTCPInstance原创 2017-02-16 21:36:38 · 401 阅读 · 0 评论 -
live555学习笔记12-h264 rtp包的时间戳
版权声明:本文为博主原创文章,未经博主允许不得转载。十二 h264 rtp包的时间戳这次我们一起来分析一下live555中是怎样为rtp包打时间戳的.就以h264为例吧.[cpp] view plain copyvoid H264VideoRTPSink::doSpecialFrameHandling(unsigned /*f原创 2017-02-16 21:35:17 · 962 阅读 · 0 评论 -
live555学习笔记11-h264 RTP传输详解(3)
十一 h264 RTP传输详解(3)书接上回:H264FUAFragmenter又对数据做了什么呢?[cpp] view plain copyvoid H264FUAFragmenter::doGetNextFrame() { if (fNumValidDataBytes == 1) {原创 2017-02-16 21:33:08 · 360 阅读 · 0 评论 -
live555学习笔记10-h264 RTP传输详解(2)
十 h264 RTP传输详解(2)上一章并没有把打开文件分析文件的代码找到,因为发现它隐藏得比较深,而且H264的Source又有多个,形成了连环计。所以此章中就将文件处理与H264的Source们并在一起分析吧。从哪里开始呢?从source开始吧!为什么要从它开始呢?我就想从这里开始,行了吧?[cpp] view plain copy原创 2017-02-16 21:31:38 · 510 阅读 · 0 评论 -
live555学习笔记9-h264 RTP传输详解(1)
九 h264 RTP传输详解(1)前几章对Server端的介绍中有个比较重要的问题没有仔细探究:如何打开文件并获得其SDP信息。我们就从这里入手吧。当RTSPServer收到对某个媒体的DESCRIBE请求时,它会找到对应的ServerMediaSession,调用ServerMediaSession::generateSDPDescription()。genera原创 2017-02-16 21:30:23 · 414 阅读 · 0 评论 -
live555学习笔记8-RTSPClient分析
八 RTSPClient分析有RTSPServer,当然就要有RTSPClient。如果按照Server端的架构,想一下Client端各部分的组成可能是这样:因为要连接RTSP server,所以RTSPClient要有TCP socket。当获取到server端的DESCRIBE后,应建立一个对应于ServerMediaSession的ClientMediaSession。对应每原创 2017-02-16 21:27:51 · 878 阅读 · 0 评论 -
live555学习笔记7-RTP打包与发送
七 RTP打包与发送rtp传送开始于函数:MediaSink::startPlaying()。想想也有道理,应是sink跟source要数据,所以从sink上调用startplaying(嘿嘿,相当于directshow的拉模式)。看一下这个函数:[cpp] view plain copyBoolean MediaSink::原创 2017-02-16 21:26:16 · 518 阅读 · 0 评论 -
live555学习笔记6-建立RTP会话
六 建立RTP会话首先更正一个概念:ServerMediaSession原先说代表一个流,其实是不准确的。它代表的是server端的一个媒体的名字,而说ServerMediaSubsession代表一个Track是准确的。以后流指的是那些有数据流动的组合。RTP的建立:RTP的建立过程无非是这样:client告诉server自己的rtp/rtcp端口号,server原创 2017-02-16 21:16:22 · 586 阅读 · 0 评论 -
live555学习笔记5-RTSP服务运作
五 RTSP服务运作基础基本搞明白了,那么RTSP,RTP等这些协议又是如何利用这些基础机制运作的呢?首先来看RTSP.RTSP首先需建立TCP侦听socket。可见于此函数:[cpp] view plain copyDynamicRTSPServer* DynamicRTSPServer::createNew(Usage原创 2017-02-16 21:14:54 · 444 阅读 · 0 评论 -
live555学习笔记4-计划任务(TaskScheduler)深入探讨
四 计划任务(TaskScheduler)深入探讨我们且把三种任务命名为:socket handler,event handler,delay task。这三种任务的特点是,前两个加入执行队列后会一直存在,而delay task在执行完一次后会立即弃掉。socket handler保存在队列BasicTaskScheduler0::HandlerSet* fHandlers原创 2017-02-16 21:13:23 · 511 阅读 · 0 评论 -
live555学习笔记3-消息循环
三 消息循环看服端的主体:live555MediaServer.cpp中的main()函数,可见其创建一个RTSPServer类实例后,即进入一个函数env->taskScheduler().doEventLoop()中,看名字很明显是一个消息循坏,执行到里面后不停地转圈,生名不息,转圈不止。那么在这个人生的圈圈中如何实现RTSP服务和RTP传输呢?别想那么远了,还是先看这个圈圈中实现了什原创 2017-02-16 21:12:20 · 341 阅读 · 0 评论 -
live555学习笔记2-基础类
二 基础类讲几个重要的基础类:BasicUsageEnvironment和UsageEnvironment中的类都是用于整个系统的基础功能类.比如UsageEnvironment代表了整个系统运行的环境,它提供了错误记录和错误报告的功能,无论哪一个类要输出错误,就需要保存UsageEnvironment的指针.而TaskScheduler则提供了任务调度功能.整个程序的运行发动机就原创 2017-02-16 21:10:46 · 351 阅读 · 0 评论 -
live555学习笔记1-引子
一直想研究live555,没有时间,终于因为项目的原因可以深入无间地研究一下了.所以在此著文以记之.一 如何编译live555利用mingw环境很容易:在live555文件夹下,genMakefiles mingwmake即可.可以用genWindowsMakefiles.cmd生成VC可用的makefile,但是对比较新的v原创 2017-02-16 21:09:51 · 641 阅读 · 0 评论 -
live555 实现音视频传输关键
1.fDurationInMicroseconds 设置一定要正确2.fPresentationTime 设置一定要正确原创 2017-01-10 16:43:23 · 2451 阅读 · 0 评论 -
LINUX下Live555不能获取ip地址解决方法
linux下运行live55 显 示如图 :没有获取ip: ip是0.0.0.0 live555在不知道本地IP地址与网络接口的情况下,通过一个在本地某端口建立一个UDP连接,然后把这个UDP连接加入到一个组播组 ,当然要对这个组播组进行相应的设置,比如TTL,回环等等;然后通过UDP连接发送一个数据;最后通过这个UDP连接接收这个数据,并且解析相应的发送地址;大概流程就是这样了原创 2017-01-08 21:09:33 · 754 阅读 · 0 评论 -
live555中fDurationInMicroseconds的计算
live555中fDurationInMicroseconds表示单个视频或者音频帧所占用的时间间隔,也表示在fDurationInMicroseconds微秒时间后再次向Source进行getNextFrame操作,以视频为例,可以这样计算:视频帧率fFrameRate=25,那么我们每一次在doGetNextFrame中赋值fDurationInMicroseconds = 100原创 2017-01-06 17:01:04 · 535 阅读 · 0 评论