
RtspServer实践
文章平均质量分 70
vfdvf
这个作者很懒,什么都没留下…
展开
-
rtspsever网络编程中的socket选项之SO_LINGER
通过rtspTransport里面的函数可以发现,这里设置了一个参数,如下:static void CloseSockid( int socketid ){ //立即进行关闭,同时发送RST struct linger so_linger; so_linger.l_onoff = 1; so_linger.l_linger = 0; int ret = setsockop原创 2017-08-07 17:34:00 · 513 阅读 · 0 评论 -
Ringbuffer在实时流缓冲的demo
实现ringbuffer,不需要用锁的方法,如下面:用write read size 以及start end就可以定位问题写入过程,总共6种情况:1)write = read ,如果end-write >len 那么write = write + len 写入长度len 如果end-write 2)write原创 2017-08-04 10:02:06 · 1536 阅读 · 0 评论 -
分析一个通用的rtsp server实现采集模块
最后分析一下,采集的部分,对于采集,有多种方式,当然例子都是模拟采集,直接从本地文件读取数据,关键在于这里,采集的部分读取到ring buffer里面,这里就是为了同步! 采集的不管从哪里拿数据,形式都是次要的。 最后稍微讲下,如何实现api的统一性,给别人调用! 这里就需要用到回调函数的概念! Callback最本质的特征包括两点:注册和触发原创 2017-08-08 10:00:13 · 405 阅读 · 0 评论 -
分析一个通用的rtsp server实现过程发送模块
这里主要介绍rtsp之后的发送流程,rtsp到达play之后,通过判断参数是play之后,可以启动一个线程来发送已经打包好的ts流,于是需要将ts流打包rtp包,正常从网上信息可以看出:RTP with payload type 33 (MPEG2 TS): The RTP timestamp 表示RTP packet的TRANSMISSION time。(来自RFC 2250)同时,原创 2017-08-07 20:59:08 · 1674 阅读 · 0 评论 -
分析一个通用的rtsp server实现过程串联模块
本文接下来介绍rtspserver端的具体实现流程,首先看一下,rtsp交互包的过程OPTIONS rtsp***** RTSP/1.0CSeq: 2User-Agent: LibVLC/1.1.5 (LIVE555 Streaming Media v2010.09.25)RTSP/1.0 200 OKCSeq: 2Public: OPTIONS, DESCRIBE, SETUP,原创 2017-08-07 17:21:34 · 1116 阅读 · 0 评论 -
分析一个通用的rtsp server实现过程基础模块
本文分析先分析common模块: common 模块有tcp,udp,socket,mutex类以及cyclebuffer类!1. mutux类实现class thread_mutex{ public: thread_mutex(); ~thread_mutex(); public: void lock(); void unlock();原创 2017-08-05 16:10:04 · 838 阅读 · 0 评论 -
分析一个通用的rtsp server实现过程总纲
本文的所有的代码部分,大部分根据下面的链接来分析,请自行下载, http://www.pudn.com/downloads279/sourcecode/windows/network/detail1265184.html这里面的只是一个demo,如果要运行在android系统上面,还需要进一步来拆分和重构,更加好的利用!这里假设需要把本地的视频发送给vlc客户端播放,因此,至少需要拆分为四大模块原创 2017-08-04 16:17:20 · 574 阅读 · 0 评论 -
rtp中的sdp信息生成
首先看协议中的真实数据,如下所示:v=0s=liveplayc=IN IP4 172.21.18.61t=0 0a=control:*m=video 0 RTP/AVP 96a=rtpmap:96 H264/90000a=fmtp:96 profile-level-id=42401E; sprop-parameter-sets=Z0JAHqbBQfoQAAADABAAAAMC原创 2017-08-08 10:20:56 · 2377 阅读 · 0 评论 -
rtspsever网络编程中的socket选项之keepalive
从代码可以看出,初始化的时候,设置了keepalive变量,static void SetSockeKeepAlive(SOCKET connect){ int keepAlive = 1; // 开启keepalive属性 int keepIdle = 1; // 如该连接在1秒内没有任何数据往来,则进行探测 int keepInterval = 1; //原创 2017-08-07 17:50:14 · 1068 阅读 · 0 评论 -
分析dhcp真正的帧格式
背景知识:第一:需要了解libcap的基本架构!第二:需要了解TCP/IP协议头部结构体(网摘小结)第三:下面的图示概念需要了解67bootps引导协议(BOOTP)服务;还被动态主机配置协议(DHCP)服务使用68bootpcBootstrap(BOOTP)客户;还被动态主机配置协议(DHCP)客户使原创 2017-08-04 15:05:20 · 3133 阅读 · 0 评论