RTSP协议转换RTMP直播协议

RTSP协议转换RTMP直播协议

RTSP协议转换RTMP直播协议

RTSP协议也是广泛使用的直播/点播流媒体协议,最近实现了一个RTSP协议转换RTMP直播协议的程序,为的是可以接收远端设备或服务器的多路RTSP 直播数据,实时转换为RTMP直播协议,推送到FMS、Red5、wowza server等RTMP 服务器,以实现flash观看RTSP直播源的需求。程序同时也具备从FLV文件获取输入数据并转换RTMP直播。实现的思路分享如下。

要点分析

首先,程序的主要目的,是从多路RTSP输入源中提取AAC编码的音频和H.264编码视频数据,并生成RTMP数据包,然后组装RTMP推送协议,并发往RTMP服务器。在发送的过程中,要求可以从RTSP数据源切换到具有相同h.264和aac 编码的FLV文件中,并不影响RTMP直播。因此,本程序的关键点有以下部分:

1.RTSP直播流的读取

2.H.264和AAC编码数据的分析、处理

3.FLV文件数据的提取及与RTSP直接的切换和衔接

4.RTMP数据包封装

5.RTMP推送协议

有了关键点,就可以一项一项的去分析。

设计思路

根据上面分析的要点,首先要选择RTSP直播协议的读取。我们不需要从零做起,网络上有很多和RTSP相关的开源项目可以使用或借鉴,我选择了Live555。

Live555是一个跨平台的流媒体解决方案,主要支持RTSP协议,好像也支持SIP(这个也是我马上研究的重点,之后会写文章研究SIP相关的技术实现)。Live555实现了RTSP包括服务器-客户端的整套结构,是很知名的一个开源项目。

网上有很多关于Live555学习和使用的文章,我就不具体介绍了。

H.264和AAC数据的分析处理,这个对于从没做过相关项目开发的人来说,应该是一个难点,主要是相关概念的理解。好在我一直在做这块,也比较好弄。

第4和第5点,可以参照文章“RTMP协议发送H.264编码及AAC编码的音视频(https://www.360docs.net/doc/6d15438722.html,/haibindev/archive/2011/12/29/2305712.html),实现摄像头直播”的技术方法,来加以实现。因此,主要需要处理的就是RTSP 直播流数据的获取,以及对其中H.264和AAC编码数据的处理。

于是可以画出大体结构如下:

RtmpThread的主要工作就是发送音频数据流的解码信息头和视频数据流的解码信息头,并不断从DataBufferQueue中取出数据,封装为RTMP Packet,发送出去。流程如下列代码所示:(process_buf_queue_,即是上图中的DataBufferQueue)

逻辑与实现

1. 程序框架和模块说明

RTSP(实时流媒体协议)

rtsp简介(ZT) Real Time Streaming Protocol或者RTSP(实时流媒体协议),是由Real network 和Netscape共同提出的如何有效地在IP网络上传输流媒体数据的应用层协议。RTSP提供一种可扩展的框架,使能够提供能控制的,按需传输实时数据,比如音频和视频文件。源数据可以包括现场数据的反馈和存贮的文件。rtsp对流媒体提供了诸如暂停,快进等控制,而它本身并不传输数据,rtsp作用相当于流媒体服务器的远程控制。传输数据可以通过传输层的tcp,udp协议,rtsp也提供了基于rtp传输机制的一些有效的方法。RTSP消息格式: RTSP的消息有两大类,一是请求消息(request),一是回应消息(response),两种 消息的格式不同. 请求消息: 方法URI RTSP版本CR LF 消息头CR LF CR LF 消息体CR LF 其中方法包括OPTION回应中所有的命令,URI是接受方的地址,例如 :rtsp://192.168.20.136 RTSP版本一般都是RTSP/1.0.每行后面的CR LF表示回车换行,需要接受端有相应的解析,最后一个消息头需要有两个CR LF 回应消息: RTSP版本状态码解释CR LF 消息头CR LF CR LF 消息体CR LF 其中RTSP版本一般都是RTSP/1.0,状态码是一个数值,200表示成功,解释是与状态码对应的文本解释. 简单的rtsp交互过程: C表示rtsp客户端,S表示rtsp服务端 1.C->S:OPTION request //询问S有哪些方法可用 1.S->C:OPTION response //S回应信息中包括提供的所有可用方法 2.C->S:DESCRIBE request //要求得到S提供的媒体初始化描述信息 2.S->C:DESCRIBE response //S回应媒体初始化描述信息,主要是sdp 3.C->S:SETUP request //设置会话的属性,以及传输模式,提醒S建立会 话 3.S->C:SETUP response //S建立会话,返回会话标识符,以及会话相关信息 4.C->S:PLAY request //C请求播放 4.S->C:PLAY response //S回应该请求的信息 S->C:发送流媒体数据 5.C->S:TEARDOWN request //C请求关闭会话 5.S->C:TEARDOWN response //S回应该请求

rtmp流媒体协议

H5视频直播扫盲 1 H5到底能不能做视频直播 当然可以, H5火了这么久,涵盖了各个方面的技术。 对于视频录制,可以使用强大的webRTC(Web Real-Time Communication)是一个支持网页浏览器进行实时语音对话或视频对话的技术,缺点是只在PC的chrome上支持较好,移动端支持不太理想。 对于视频播放,可以使用HLS(HTTP Live Streaming)协议播放直播流,ios和android都天然支持这种协议,配置简单,直接使用video标签即可。 webRTC兼容性: video标签播放hls协议视频:

1 2 3 4

Your browser does not support HTML5 video. 2 到底什么是HLS协议 简单讲就是把整个流分成一个个小的,基于HTTP的文件来下载,每次只下载一些,前面提到了用于H5播放直播视频时引入的一个.m3u8的文件,这个文件就是基于HLS协议,存放视频流元数据的文件。 每一个.m3u8文件,分别对应若干个ts文件,这些ts文件才是真正存放视频的数据,m3u8文件只是存放了一些ts文件的配置信息和相关路径,当视频播放时,.m3u8是动态改变的,video标签会解析这个文件,并找到对应的ts文件来播放,所以一般为了加快速度,.m3u8放在web服务器上,ts文件放在cdn上。 .m3u8文件,其实就是以UTF-8编码的m3u文件,这个文件本身不能播放,只是存放了播放信息的文本文件: 1 2 3 4 5#EXTM3U m3u文件头 #EXT-X-MEDIA-SEQUENCE 第一个TS分片的序列号#EXT-X-TARGETDURATION 每个分片TS的最大的时长#EXT-X-ALLOW-CACHE是否允许cache #EXT-X-ENDLISTm3u8文件结束符

rtmp协议

RTMP:Real Time Messaging Protocol 实时消息传送协议 字节序:大端 Message Format: Timestamp:4 bytes Length:3 bytes Type ID:1 bytes Message Stream ID:4 bytes 小端 Handshake three static_sized chunks client:C0 C1 C2 server:S0 S1 S2 simple handshake: handshake sequence 握手开始于客户端发送C0、C1块 客户端在发送C2块之前必须等待直到S1块被接收 客户端在发送任何其他数据之前必须等待直到S2块被接收 服务器在发送S0、S1之前必须等待直到C0被接收或是C1被接收服务器在发送S2之前必须等待直到C1被接收 服务器在发送任何其他数据之前必须等待直到C2被接收 C0和S0格式 一个字节(8bits) 本版本是3 C1和S1格式 1536个字节

C2和S2格式 1536个字节,是C1和S1的回复响应 time:必须包含对等段发送的时间戳(对C2来说是S1,对S2来说是C1)time2:必须包含先前发送的被对端读取的包(S1或C1)的时间戳 handshake diagram

Complete handshake Chunking Chunk format A header and data +--------------+----------------+--------------------+----------+ | Basic Header | Message Header | Extended Timestamp | Chunk Data| +--------------+----------------+--------------------+----------+ | | |<------------------- Chunk Header ----------------->| Chunk Format Basic header:1-3bytes,chunk stream ID and chunk type(fmt) 长度可变type depend on the format of the encoded message header the length depend on the chunk stream ID ID:3-65599,0\1\2 reserved 0:2bytes,ID range 64-319 (the second byte+64) 1:3bytes,ID range 64-65599(the third byte*256+the second byte+64) 2:low-level protocol 2-63: 64-319:

RTSP协议学习笔记(学习流媒体的时候自己总结的)

RTSP协议学习笔记 目录 RTSP协议学习笔记 (1) 第一部分:RTSP协议 (2) 一、RTSP协议概述 (2) 二、RTSP协议与HTTP协议区别 (2) 三、RTSP重要术语 (3) 1.集合控制(Aggregate control ): (3) 2.实体(Entity): (3) 3.容器文件(Container file): (3) 4.RTSP会话(RTSP session ): (3) 四、RTSP请求消息 (3) 1.消息格式: (3) 五、RTSP回应消息 (4) 1.消息格式: (4) 六、RTSP 重要方法 (4) 1. OPTIONS: (4) 2. DESCRIBE: (5) 3. SETUP: (6) 4. PLAY: (7) 5. PAUSE: (8) 6. TEARDOWN: (8) 七、RTSP重要头字段参数 (9) 1.Accept: (9) 2.Bandwidth: (9) 3. CSeq: (9) 4. Rang: (9) 5.Session: (9) 6.Transport: (9) 八、简单的RTSP消息交互过程 (10) 1.第一步:查询服务器端可用方法 (10) 2.第二步:得到媒体描述信息 (10) 3.第三步:建立RTSP会话 (10) 4.第四步:请求开始传送数据 (10) 5.第五步:数据传送播放中 (10) 6.第六步:关闭会话,退出 (10) 第二部分:SDP协议 (11) 一、SDP协议概述 (11) 二、SDP格式 (11) 三、SDP示例 (12) 第三部分:MMS协议 (13) 一、MMS协议概述 (13)

RTMP协议

RTMP Protocol Connect NetConnect.connect() Flash Play 通过NetConnect.connect连接到RTMP Server时,首先进行握手,再发送connect的参数. 1) 握手过程有三步: Step 1, Flash Player 至RTMP Server : 1个byte(0x03)+1536个byte数据. Step 2, RTMP Server至Flash Player : 1个byte(0x03)+1536个byte数据(Server的握手数据) + 1536个byte数据(通过和随机数hash得出, 详见附录) Step 3, Flash Player 至RTMP Server : 1536个byte数据(RTMP Server计算出来的). 注意:这个数据块没有1个byte的0x03. 2) 接下是connect参数 RTMP Server <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

RTMP Server >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>Flash Player RTMP协议步骤 Step 1 发送一个0x05的包,即ServerBW, (channel 0x02) (0x00 26 25 a0) Step 2 发送一个0x06的包,即ClientBW, (channel 0x02) (0x00 26 25 a0) + (0x02) Step 3 发送一个0x14的包,即Invoke, (channel 0x03) (body超过128的长度就要分包, 用0xc3来) string (“_result”) + number (0x3F F0 00 00 00 00 00 00) + Object string (“capabilities”) ; number (31.0) string (“fmsV er”) ; string (随便填) (“RubyIZUMI/0,1,2,0”) End Of Object (0x00 00 09) //(connect status) + Object string (“code”) ; string (“NetConnection.Connect.Success”) string (“level”) ; string (“status”) string (“description”) ; string (“Connection Succeeded.”) End Of Object (0x00 00 09) RTMP Server <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

RTC PRTP RTSP协议简介

一、 RTP : (Real-time Transport Protocol,实时传输协议)是一个网络传输协议 RTP报文格式 RTP报文由两部分组成:报头和有效载荷。RTP报头格式如图所示,其中: 1.V:RTP协议的版本号,占2位,当前协议版本号为2。 2.P:填充标志,占1位,如果P=1,则在该报文的尾部填充一个或多个额外的八位组,它们不是有效载荷的一部分。 3.X:扩展标志,占1位,如果X=1,则在RTP报头后跟有一个扩展报头。 https://www.360docs.net/doc/6d15438722.html,:CSRC计数器,占4位,指示CSRC 标识符的个数。 5.M: 标记,占1位,不同的有效载荷有不同的含义,对于视频,标记一帧的结束;对于音频,标记会话的开始。 6.同步信源(SSRC)标识符:占32位,用于标识同步信源。该标识符是随机选择的,参加同一视频会议的两个同步信源不能有相同的SSRC。 7.特约信源(CSRC)标识符:每个CSRC标识符占32位,可以有0~15个。每个CSRC标识了包含在该RTP报文有效载荷中的所有特约信源。 8.PT: 有效载荷类型,占7位,用于说明RTP报文中有效载荷的类型,如GSM音频、JPEM 图像等。 9.序列号:占16位,用于标识发送者所发送的RTP报文的序列号,每发送一个报文,序列号增1。接收者通过序列号来检测报文丢失情况,重新排序报文,恢复数据。 10.时戳(Timestamp):占32位,时戳反映了该RTP报文的第一个八位组的采样时刻。接收者使用时戳来计算延迟和延迟抖动,并进行同步控制。 图 RTP报头格式 二、RTCP:RTP 控制协议(RTCP:RTP Control Protocol)

课题_nginx搭建rtmp协议流媒体服务器总结

nginx搭建rtmp协议流媒体服务器总结 最近在ubuntu12.04上搭建了一个rtmp服务器,感觉还挺麻烦的,所以记录下。 大部分都是参考网络上的资料。 前提: 在linux下某个目录中新建一个nginx目录。 然后进入该目录去下载搭建环境所需要的一些资源包。 此处在/root/ 目录下新建一个nginx目录即: /root/nginx/ ==================================== 1、安装依赖包: #yum -y install gcc glibc glibc-devel make nasm pkgconfig lib-devel openssl-devel expat-devel gettext-devel libtool mhash.x86_64 perl-Digest-SHA1.x86_64 2、安装相关工具包 1). git # mkdir soft-source # cd soft-source # wget ://https://www.360docs.net/doc/6d15438722.html,/projects/git-snapshots/git/git-latest.tar.xz # xz -d git-latest.tar.xz # tar xzvf git-latest.tar # cd git-2014-06-27 # autoconf # ./configure # make && make install # git --version git version 2.0.0.GIT # cd .. 2). zlib # wget ://https://www.360docs.net/doc/6d15438722.html,/zlib-1.2.8.tar.gz # tar -zxvf zlib-1.2.8.tar.gz cd zlib-1.2.8 # ./configure # make # make install # cd .. 3). pcre # wget ://exim.mirror.fr/pcre/pcre-8.12.tar.gz # tar zxvf pcre-8.12.tar.gz # cd pcre-8.12 # ./configure # make && make install # cd .. 4). yadmi yadmi的作用是为flv文件添加关键帧,才能实现拖动播放 # wget ://https://www.360docs.net/doc/6d15438722.html,/projects/yamdi/files/yamdi/1.4/yamdi-1.4.tar.gz/download # tar xzvf download # cd yamdi-1.4 # make && make install # cd .. 使用方法: # yamdi -i input.flv -o out.flv 给input.flv文件添加关键帧,输出为out.flv文件 5). OpenSSL # wget ://https://www.360docs.net/doc/6d15438722.html,/source/openssl-1.0.1c.tar.gz # tar -zxvf openssl-1.0.1c.tar.gz # ./config # make # make install 3、安装ffmpeg及其依赖包: 1). Yasm # wget ://https://www.360docs.net/doc/6d15438722.html,/projects/yasm/releases/yasm-1.2.0.tar.gz # tar xzvf yasm-1.2.0.tar.gz

RTSP协议学习笔记

RTSP协议学习笔记

目录 RTSP协议学习笔记 (1) 第一部分:RTSP协议 (3) 一、RTSP协议概述 (3) 二、RTSP协议与HTTP协议区别 (3) 三、RTSP重要术语 (4) 1.集合控制(Aggregate control): (4) 2.实体(Entity): (4) 3.容器文件(Container file): (4) 4.RTSP会话(RTSP session): (4) 四、RTSP请求消息 (4) 1.消息格式: (4) 五、RTSP回应消息 (5) 1.消息格式: (5) 六、RTSP重要方法 (5) 1.OPTIONS: (6) 2.DESCRIBE: (6) 3.SETUP: (7) 4.PLAY: (8) 5.PAUSE: (9) 6.TEARDOWN: (10) 七、RTSP重要头字段参数 (10) 1.Accept: (10) 2.Bandwidth: (10) 3.CSeq: (11) 4.Rang: (11) 5.Session: (11) 6.Transport: (11) 八、简单的RTSP消息交互过程 (11) 1.第一步:查询服务器端可用方法 (11) 2.第二步:得到媒体描述信息 (11) 3.第三步:建立RTSP会话 (12) 4.第四步:请求开始传送数据 (12) 5.第五步:数据传送播放中 (12) 6.第六步:关闭会话,退出 (12) 第二部分:SDP协议 (12) 一、SDP协议概述 (12) 二、SDP格式 (13) 三、SDP示例 (14) 第三部分:MMS协议 (14) 一、MMS协议概述 (14)

实时流煤体协议概述v1.0

实时流煤体协议概述v1.0

实时流煤体协议概述 流媒体传输类型: 流媒体传输分两类:实时流媒体和顺序流媒体 一般来说,如果视频为现场直播,或使用专用的流媒体服务器,或应用如RTSP等专用实时协议,即为实时流媒体传输; 如果使用普通的HTTP服务器,将音视频数据以从头至尾方式发送,则为顺序流媒体传输。 实时流传输既可传输实况直播,也可传输完整的音视频文件(专用协议流式)。 顺序流媒体不可用于实况直播,仅能传输完整的音视频文件(HTTP渐进式)。 主流的流媒体协议 主流的流媒体协议主要有:RTMP,HLS,RTSP等。

附:流媒体播放实现流程 一,h ttp渐进式下载原理(仅支持文件播放)http边下载边播放,严格意义上讲,不是实况直播协议。他的原理是先下载文件的基本信息,音频视频的时间戳,再下载音视频数据,以播放mp4为例,先下载文件头,根据文件头指引下载文件尾,然后再下载文件的音视频数据。 播放方式:1. 浏览器调用系统播放器播放; 2. 使HTML5的Video标签,浏览器内部支持直接播放。

二,苹果支持的hls原理(支持文件播放和实况直播)HLS的文件点播 1.使用“文件分段器”将基于H264和AAC或MP3的MPEG4分段, 生成.ts和.m3u8文件,存储于普通服务器上。 2.苹果应用程序或苹果浏览器可以通过访问.m3u8文件获取到索引, 并下载所需要的数据片段来播放。 HLS的实况直播 1.使用“流分段器”将基于H264、AAC、MP3的MPEG2传输 流分段, 2.可使用其它工具将MPEG4音视频文件加载到MPEG2传输流当中。 3.生成.ts和.m3u8文件,存储于普通服务器上。 4.苹果应用程序或苹果浏览器可以通过访问.m3u8文件获取到索引, 并下载所需要的数据片段来播放。 三,A dobe Flash 支持的RTMP协议(支持文件播放和实况直播) 必须采用Flash服务器FMS(Flash Media Server) 或 RED5. FMS的文件点播 1. 服务器(FMS或RED5)将F4v 或 Flv文件转化为RTMP流或HTTP流 2. 客户端(Flash插件或应用程序)获取RTMP流,提取相应的Flv 或 F4v文件片段进行播放。 FMS的实况直播 1.设备端(摄像头)将数据转化为F4v片段,通过RTMP流上传到服务器 2. 服务器(FMS或RED5)转发RTMP流到客户端 3. 客户端(Flash插件或应用程序)获取RTMP流,提取数据片段播放。 四,R TSP协议 RTSP为纯粹的传输控制协议。 RTSP协议本身不与它负载的媒体数据相关。 RTSP协议需要自定义客户端向服务器发送RTSP命令。

RTSP中文版(实时流媒体协议)

E-mail:bryanj@https://www.360docs.net/doc/6d15438722.html, 译者:Bryan.Wong(王晶,宁夏固原) 译文版本:alpha 0.80 译文发布时间:2007-7-25 版权:本中文翻译文档之版权归王晶所有。可于非商业用途前提下自由转载,但必须保留此翻译及版权信息。 https://www.360docs.net/doc/6d15438722.html,/filedownload?user=bryanj&id=611206 网络工作组 H. Schulzrinne 请求注释: 2326 哥伦比亚大学. 类别: 标准跟踪 A. Rao Netscape R. Lanphier RealNetworks 1998年4月 实时流协议(RTSP) 本备忘录状态 本文为Internet社区描述了一种Internet标准跟踪协议,还需要讨论和建议以便进行改善。请查看最新版本的"Internet正式协议标准"(STD 1)了解本协议的标准化进程和状态。本备忘录的传播不受限制。 版权声明: 版权为The Internet Society 所有。所有权利保留。 摘要: 实时流协议(RTSP)是应用层协议,控制实时数据的传送。RTSP提供了一个可扩展框架,使受控、按需传输实时数据(如音频与视频)成为可能。数据源包括现场数据与存储在剪辑中的数据。本协议旨在于控制多个数据发送会话,提供了一种选择传送途径(如UDP、组播UDP与TCP)的方法,并提供了一种选择基于RTP (RFC1889)的传送机制的方法。

目录: 1 介绍 1.1 目的 1.2 要求 1.3 术语 1.4 协议特性 1.5 RTSP扩展 1.6 整体运作 1.7 RTSP状态 1.8 与其他协议的关系 2 符号协定 3 协议参数 3.1 RTSP版本 3.2 RTSP URL 3.3 会议标识 3.4 会话标识 3.5 SMPTE 相对时间戳 3.6正常播放时间 3.7 绝对时间 3.8 选项标签 3.8.1 用IANA注册新的选项标签*4 RTSP消息 4.1 消息类型 4.2 消息头

PANABIT支持协议库

Panabit V9.08(战国r3)专业版支持协议列表 (2009.10.16) 类别 应用协议 客户端 发布日期 版本号/注释 HTTP协议 WWW Web音乐 FLASH HTTP代理 HTTP下载 HTTP分块传输 伪IE下载 其他下载主要是“另存为” 土豆网https://www.360docs.net/doc/6d15438722.html, Web视频 酷6 https://www.360docs.net/doc/6d15438722.html, 6间房 https://www.360docs.net/doc/6d15438722.html, 优酷https://www.360docs.net/doc/6d15438722.html, Youtube https://www.360docs.net/doc/6d15438722.html, HULU网https://www.360docs.net/doc/6d15438722.html, 我乐网https://www.360docs.net/doc/6d15438722.html, Sina视频https://www.360docs.net/doc/6d15438722.html, Sohu视频 腾讯宽频 波波虎https://www.360docs.net/doc/6d15438722.html, 其他Web视频 凤凰网https://www.360docs.net/doc/6d15438722.html, CCTV点播https://www.360docs.net/doc/6d15438722.html, Viewgood https://www.360docs.net/doc/6d15438722.html, 常用协议 电子邮件 SMTP POP3 IMAP 终端类 VNC PCAnyWhere SSH Telnet 远程桌面 文件传输 FTP TFTP RSync 缺省端口873 NFS

CVS MSDS Microsoft-DS DNS DHCP NNTP SNMP NTP UPNP NETBIOS DAYTIME 端口为13 SYSLOG 缺省端口514 DECRPC LDAP NAT端口映射 网络管理 ISA控制协议 HTTPS Socks4/5 L2TP PPTP IPSEC GRE 网络安全 OpenVPN 360更新 Nod32更新 Windows更新 软件更新 卡巴斯基更新 流媒体协议 RTSP MMS QuickTime QuickTime 7 Windows MediaPlayer Windows MediaPlayer 11 Real Player Real Player 11 BBSee 1.3 磊客https://www.360docs.net/doc/6d15438722.html, 新浪奥运视频 网易奥运视频 QQ奥运视频 CCTV央视高清 RTMP P2P下载 BitComet 2009.06.22 1.13 BT BitSpirit 2009.07.27 V 3.6.0.135

RTSP协议转换RTMP直播协议

RTSP协议转换RTMP直播协议 RTSP协议也是广泛使用的直播/点播流媒体协议,最近实现了一个RTSP协议转换RTMP直播协议的程序,为的是可以接收远端设备或服务器的多路RTSP直播数据,实时转换为RTMP直播协议,推送到FMS、Red5、wowza server等RTMP 服务器,以实现flash观看RTSP直播源的需求。程序同时也具备从FLV文件获取输入数据并转换RTMP直播。实现的思路分享如下。 要点分析 首先,程序的主要目的,是从多路RTSP输入源中提取AAC编码的音频和H.264编码视频数据,并生成RTMP数据包,然后组装RTMP推送协议,并发往RTMP 服务器。在发送的过程中,要求可以从RTSP数据源切换到具有相同h.264和aac 编码的FLV文件中,并不影响RTMP直播。因此,本程序的关键点有以下部分: 1.RTSP直播流的读取 2.H.264和AAC编码数据的分析、处理 3.FLV文件数据的提取及与RTSP直接的切换和衔接 4.RTMP数据包封装 5.RTMP推送协议 有了关键点,就可以一项一项的去分析。 设计思路 根据上面分析的要点,首先要选择RTSP直播协议的读取。我们不需要从零做起,网络上有很多和RTSP相关的开源项目可以使用或借鉴,我选择了Live555。 Live555是一个跨平台的流媒体解决方案,主要支持RTSP协议,好像也支持SIP(这个也是我马上研究的重点,之后会写文章研究SIP相关的技术实现)。Live555实现了RTSP包括服务器-客户端的整套结构,是很知名的一个开源项目。网上有很多关于Live555学习和使用的文章,我就不具体介绍了。

flex视频播放器(支持rtmp协议)开发代码

Flex视频播放器(支持rtmp协议)开发代码 开发工具:flash builder4.5 + red5服务器 建议参考之前阶段代码: (1)flex视频播放器开发初级阶段代码:https://www.360docs.net/doc/6d15438722.html,/detail/ll_jj_yy/ (2)支持rtmp协议,播放red5服务器上的flv视频文件. 直接来代码:

RTSP协议转换RTMP直播协议

RTSP协议转换RTMP直播协议

RTSP协议转换RTMP直播协议 RTSP协议也是广泛使用的直播/点播流媒体协议,最近实现了一个RTSP协议转换RTMP直播协议的程序,为的是可以接收远端设备或服务器的多路RTSP 直播数据,实时转换为RTMP直播协议,推送到FMS、Red5、wowza server等RTMP 服务器,以实现flash观看RTSP直播源的需求。程序同时也具备从FLV文件获取输入数据并转换RTMP直播。实现的思路分享如下。 要点分析 首先,程序的主要目的,是从多路RTSP输入源中提取AAC编码的音频和H.264编码视频数据,并生成RTMP数据包,然后组装RTMP推送协议,并发往RTMP服务器。在发送的过程中,要求可以从RTSP数据源切换到具有相同h.264和aac 编码的FLV文件中,并不影响RTMP直播。因此,本程序的关键点有以下部分: 1.RTSP直播流的读取 2.H.264和AAC编码数据的分析、处理 3.FLV文件数据的提取及与RTSP直接的切换和衔接 4.RTMP数据包封装 5.RTMP推送协议 有了关键点,就可以一项一项的去分析。 设计思路 根据上面分析的要点,首先要选择RTSP直播协议的读取。我们不需要从零做起,网络上有很多和RTSP相关的开源项目可以使用或借鉴,我选择了Live555。 Live555是一个跨平台的流媒体解决方案,主要支持RTSP协议,好像也支持SIP(这个也是我马上研究的重点,之后会写文章研究SIP相关的技术实现)。Live555实现了RTSP包括服务器-客户端的整套结构,是很知名的一个开源项目。

网上有很多关于Live555学习和使用的文章,我就不具体介绍了。 H.264和AAC数据的分析处理,这个对于从没做过相关项目开发的人来说,应该是一个难点,主要是相关概念的理解。好在我一直在做这块,也比较好弄。 第4和第5点,可以参照文章“RTMP协议发送H.264编码及AAC编码的音视频(https://www.360docs.net/doc/6d15438722.html,/haibindev/archive/2011/12/29/2305712.html),实现摄像头直播”的技术方法,来加以实现。因此,主要需要处理的就是RTSP 直播流数据的获取,以及对其中H.264和AAC编码数据的处理。 于是可以画出大体结构如下: RtmpThread的主要工作就是发送音频数据流的解码信息头和视频数据流的解码信息头,并不断从DataBufferQueue中取出数据,封装为RTMP Packet,发送出去。流程如下列代码所示:(process_buf_queue_,即是上图中的DataBufferQueue)

rtsp协议摄像头

编号:_______________本资料为word版本,可以直接编辑和打印,感谢您的下载 rtsp协议摄像头 甲方:___________________ 乙方:___________________ 日期:___________________

rtsp协议摄像头 篇一:使用海康摄像头实现实时监控 使用海康摄像头实现实时监控 1. 基于Rtsp协议的windows平台监控。 1.1选取海康网络摄像头(支持Rtsp,标准h.264Rtp 封装的设备)。 1.2. 按照摄像头的使用说明书部署。假设访问ip地址是:http://192.168.0.64 ,登录后设置输出端口为:81, 则完整的取流地址为:主码流 rtsp://admin:12345@192.0.0.64:81/h264/ch1/main/av_s tream rtsp://admin:12345@192.0.0.64:81/mpeg-4/ch1/main/av _stream 子码流: rtsp://admin:12345@192.0.0.64/mpeg4/ch1/sub/av_stre am rtsp://admin:12345@192.0.0.64/h264/ch1/sub/av_strea m

1.3. 使用Vlc (支持标准的Rtsp流媒体)的播放器可以实时播放。 2. 基于active 控件的网页监控。 2.1. 选取海康网络摄像头并进行部署,假设访问地址为:http://192.168.0.64:6666 。 2.2. 访问http://192.168.0.64:6666 , ie 浏览器会提 示需要安装active 控件,将active控件存储到本地(ipcameraactivex.cab.cab )。 2.3. 解压ipcameraactivex.cab ,用记事本打开ipcameraactivex.inf 文件,查看代码段: [netVideoactivex23.ocx] file-win32-x86=thiscab Registerserver=yes clsid={caFcF48d-8e34-4490-8154-026191d73924} destdir=11 FileVersion=2,3,21,1 2.4. 记录上面的“ clsid ”。 2.5. 在网页中注册上述ocx控件,使用js调用控件的 中的方法进行登录,查看等操作(查看其他操作可查找:海

RTMP头RTMP协议封包 参考Red5

RTMP头RTMP协议封包参考Red5 RTMP协议封包由一个包头和一个包体组成,包头可以是4种长度的任意一种:12, 8, 4, 1 byte(s).完整的RTMP包头应该是12bytes,包含了时间 戳,AMFSize,AMFType,StreamID信息, 8字节的包头只纪录了时间 戳,AMFSize,AMFType,其他字节的包头纪录信息依次类推。包体最大长度默认为128字节,通过chunkSize可改变包体最大长度,通常当一段AFM数据超过128字节后,超过128的部分就放到了其他的RTMP封包中,包头为一个字节. 完整的12字节RTMP包头每个字节的含义: 用途大小(Byte)含义 Head_Type1包头 TiMMER3时间戳 AMFSize3数据大小 AMFType1数据类型 StreamID4流ID 一、Head_Type 第一个字节Head_Type的前两个Bit决定了包头的长度.它可以用掩码0xC0进行"与"计算: Head_Type的前两个Bit和长度对应关系: Bits Header Length 0012 bytes 018 bytes 10 4 bytes 11 1 byte Head_Type的后面6个Bit和StreamID决定了ChannelID。 StreamID和ChannelID对应关系:StreamID=(ChannelID-4)/5+1 参考red5 ChannelID Use 02Ping 和ByteRead通道 03Invoke通道我们的connect() publish()和自字写的NetConnection.Call() 数据都

RTSP协议

RTSP协议 RTSP协议 RTSP(Real Time Stream Protocol,实时流协议)是应用级协议,控制实时数据的发送。RTSP提供了一个可扩展框架,使实时数据,如音频与视频的受控、点播成为可能。数据 源包括现插数据与存储在剪辑中的数据。该协议目的在于控制多个数据发送连接,为选择发送通道如UDP、多播UDP 与TCP等提供途径,并为选择基于RTP 上发送机制提供方法。 一.简介 1.目的 实时流协议建立并控制一个或几个时间同步的连续流媒体。尽管连续媒体流与控制流交叉是可能的,通常它本身并不发送连续流。换言之,RTSP充当多媒 体服务器的网络远程控制。RTSP连接没有绑定到传输层连接,如TCP。在RTSP连接期间,RTSP用户可打开或关闭多个对服务器的可靠传输连接以发出 RTSP请求。此外,可使用无连接传输协议,如UDP。RTSP 流控制的流可能用到RTP,但RTSP操作并不依赖用于携带连续媒体的传输机制。实时流协

议在语法和操作上与HTTP 1.1类似,因此HTTP的扩展机制大都可加入RTSP。协议支持的操作如下: (1)从媒体服务器上检索媒体 用户可通过HTTP或其他方法提交一个演示描述。如演示是多播,演示时就包含用于连续媒体的多播地址和端口。如演示仅通过单播发送给用户,用户为了安全应提供目的地址。 (2)媒体服务器邀请进入会议 媒体服务器可被邀请参加正进行的会议,或回放媒体,或记录其中一部分或全部。这种模式在分布式教育应用上很有用,会议中几方可轮流按远程控制按钮。 (3)将媒体加到现成讲座中 例如,服务器告诉用户可获得附加媒体内容。这对现场讲座显得尤其有用。如HTTP 1.1中类似,RTSP请求可由代理、通道与缓存处理。 2.协议特点 RTSP有如下特性。 (1) 可扩展性:新方法和参数很容易加入RTSP。 (2) 易解析:RTSP可由标准HTTP或MIME解析器解析。 (3) 安全:RTSP使用网页安全机制。 (4) 独立于传输:RTSP可使用不可靠数据报协议(EDP)、可靠数据报协议(RDP);如要实现应用级可靠,可使用可靠流协议。

防火墙RTSP协议处理流程及RTSP ALG应用

一.RTSP协议概述 RTSP(Real-Time Stream Protocol )是一种基于文本的应用层协议,在语法及一些消息参数等方面,RTSP协议与HTTP协议类似。 RTSP被用于建立的控制媒体流的传输,它为多媒体服务扮演“网络远程控制”的角色。尽管有时可以把RTSP控制信息和媒体数据流交织在一起传送,但一般情况RTSP本身并不用于转送媒体流数据。媒体数据的传送可通过RTP/RTCP等协议来完成。 二.一次基本的RTSP协议连接过程 1.客户端与服务器建立TCP三次握手连接。 2.客户端连接到流服务器并发送一个RTSP描述命令(OPTIONS),询问S有哪些方法可用 (包括DESCRIBE、SETUP、TEARDOWN、PLAY、PAUSE、OPTIONS、ANNOUNCE、RECORD等)。

3.客户端继续发送一个RTSP描述命令(DESCRIBE),要求得到S提供的媒体描述信息,流服务器 通过一个SDP描述来进行反馈,反馈信息包括流数量、媒体类型等信息。

4.客户端再分析该SDP描述,并为会话中的每一个流发送一个RTSP建立命令(SETUP),RTSP建 立命令告诉服务器客户端用于接收媒体数据的端口。

5.流媒体连接建立完成后,客户端发送一个播放命令(PLAY),服务器就开始在UDP上传送媒体流 (RTP包)到客户端。 6.在播放过程中客户端还可以向服务器发送命令来控制快进、快退和暂停等。最后,客户端可发 送一个终止命令(TERADOWN)来结束流媒体会话。 三、简单的RTSP消息交互过程 C表示RTSP客户端,S表示RTSP服务端 1.第一步:查询服务器端可用方法 1.C->S:OPTION request //询问S有哪些方法可用 1.S->C:OPTION response //S回应信息的public头字段中包括提供的所有可用方法

RTSP协议介绍

RTSP协议介绍 RTSP协议以客户服务器方式工作,它是一个多媒体播放控制协议,用来使用户在播放从因特网下载的实时数据时能够进行控制,如:暂停/继续、后退、前进等。因此 RTSP 又称为“因特网录像机遥控协议”。 1.1. RTSP协议简介 要实现 RTSP 的控制功能,不仅要有协议,而且要有专门的媒体播放器(media player)和媒体服务器(media server)。媒体服务器与媒体播放器的关系是服务器与客户的关系。 媒体服务器与普通的万维网服务器的最大区别就是媒体服务器支持流式音频和视频的传送,因而在客户端的媒体播放器可以边下载边播放(需要先缓存一小段时间的节目)。但从普通万维网服务器下载多媒体节目时,是先将整个文件下载完毕,然后再进行播放。 图1 RTSP与RTP和RTCP的关系 RTSP 仅仅是使媒体播放器能控制多媒体流的传送。因此,RTSP 又称为带外协议,而多媒体流是使用 RTP 在带内传送的。 1.2. RTSP的报文结构 RTSP有两类报文:请求报文和响应报文。请求报文是指从客户向服务器发送请求报文,响应报文是指从服务器到客户的回答。 由于 RTSP 是面向正文的(text-oriented),因此在报文中的每一个字段都是一些 ASC II 码串,因而每个字段的长度都是不确定的。 RTSP报文由三部分组成,即开始行、首部行和实体主体。在请求报文中,开始行就是请求行,RTSP请求报文的结构如图2所示。

图2 RTSP请求报文的结构 RTSP请求报文的方法包括:OPTIONS、DESCRIBE、SETUP、TEARDOWN、PLAY、PAUSE、G ET_PARAMETER和SET_PARAMETER。RTSP请求报文的常用方法及作用如表1所示。 表1 RTSP请求报文的常用方法及作用

相关主题
相关文档
最新文档