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编码的音视频(/haibindev/archive/2011/12/29/2305712.html),实现摄像头直播”的技术方法,来加以实现。
使用LiveNVR实现将RTSP转RTMP、FLV、HLS,实现监控摄像头无插件直播

使⽤LiveNVR实现将RTSP转RTMP、FLV、HLS,实现监控摄像头⽆插件直播背景需求对于摄像机直播,客户反馈的最多就是实现web直播、摆脱插件,可以⾃定义集成等问题,对于熟悉LiveNVR已经完美的解决了这些问题。
然⽽对于web播放也存在⼀些问题,通常我们web播放RTMP流使⽤的是flash,在这个过程中就会出现⼀个问题,随着web⼀直播放直播时间的增加,视频直播的延时也会累积起来,延时也就越⼤。
问题分析通过⾃我调研和客户反馈得出在ckplayer、videojs、aliplayer等播放器都会有类似问题,出现该问题的原因在于我们播放rtmp视频流的时候启⽤了flash,咱们的LiveNVR调⽤的videojs播放rtmp视频流依然会有这个问题的存在。
解决参考videojs是⼀款开源的播放器,对于播放器⾃⾝定位不⼀定是实时的直播。
我们对他进⾏了重新的编译,将缓存设置更⼩,同时videojs也有对应的参数是⽤来对应播放实时流的。
经过我们实时的测试发现,编译出的低延时,追帧版本的播放器在实测过程中对⽹络有⼀定的要求,因为播放器在播放时为了保证实时性就会⼀直追帧,这样就不会存在累计延时的情况了,但是,当⽹络环境差的时候,我们的⽹络⽆法完全满⾜直播视频数据时就会在直播会⾯中出现类似掉帧的情况。
LiveNVR的处理⽅式LiveNVR是实时的进⾏直播视频流,因此在视频的web直播中我们也有遇到延时累计的问题。
我们采⽤的⽅式是将两个播放形式都集成到我们的播放系统中,并且可以通过播放页⾯来进⾏播放模式的选择我们将直播分为了实时直播和流畅直播,顾名思义,实时就是保证直播的实时性,保证播放器的低延时直播;流畅直播则为可以在⽹络环境不是特别理想的情况下依然可以进⾏流畅的视频直播。
经过播放⼀段时间的对⽐就可以看出两者这件的差别。
注意为了⽅便⽤户的集成,我们将videojs的功能通封装成播放器 liveplayer关于LiveNVRLiveNVR能够通过简单的⽹络摄像机通道配置,将传统监控⾏业⾥⾯的⾼清⽹络摄像机IP Camera、NVR等具有RTSP协议输出的设备接⼊到LiveNVR,LiveNVR能够将这些视频源的⾳视频数据进⾏拉取,转换为HTTP-FLV/RTMP/HLS,进⾏全平台终端H5直播(Web、Android、iOS),并且LiveNVR能够将视频源的直播数据对接到第三⽅CDN⽹络,实现互联⽹级别的直播分发;。
RTSP协议RTMP协议

RTSP协议RTMP协议篇一:rtsp rtmpStreaming media protocolsStreaming media protocols: HTTP, RTMP, PNM, RTSP, MMS, RTSPU,RTSPT, MMSU, MMSTRTSP protocol is the default protocol for streaming Windows Media. RTSP protocol is also used for streaming RealMedia/RealVideo/RealAudio, streaming QuickTime video (.mov, .mp4, .sdp streams).MMS protocol is used for streaming Windows Media only.1. RTSP using UDP is called RTSPU2. RTSP using TCP is called RTSPT3. MMS using UDP is called MMSU4. MMS using TCP is called MMSTPNM protocol is used for RealMedia/RealVideo/RealAudio streaming only. RTMP protocol is used for Flash audio and video streams only. Media files can also be streamed through HTTP or other protocols.The majority of streams are streamed through HTTP, RTSP, MMS and RTMP. PNM protocol is usually not usedon the newest servers, but such streams are not very rare.HTTP StreamingHTTP streaming is a mechanism for sending data from a Web server to a Web browser in response to an event. HTTP Streaming is achieved through several mon mechanisms.In one such mechanism the web server does not terminate the response to the client after data has been served. This differs from the typical HTTP cycle in which the response is closed immediately following data transmission.The web server leaves the response open such that if an event is received, it can immediately be sent to the client. Otherwise the data would have to be queued until the client's next request is made to the web server. The act of repeatedly queing and re-requesting information is known as a Polling mechanism.Typical uses for HTTP Streaming include market data distribution (stock tickers), live chat/messaging systems, online betting and gaming, sport results, monitoring consoles and Sensor network monitoring.HTTP protocol usually uses port 80 or 8080.MMS - Microsoft Media ServicesMicrosoft's streaming server uses the Microsoft Media Services (MMS) protocol (also called NetShow Services)to transfer unicast data. MMS can be transported via UDP or TCP (MMSU and MMST protocols). If the Windows Media Player client cannot negotiate a good connection using MMS over UDP, it will resort to MMS over TCP. If that fails, the connection can be made using a modified version of HTTP (always over TCP). This is not as ideal for streaming as MMS over UDP, but ensures connectivity nonetheless.The default protocol for streaming Windows Media is not MMS, but RTSP.The default port for MMS is 1755.RTSP - Real Time Streaming Protocol The Real Time Streaming Protocol (RTSP), developed by the IETF and published in 1998 as RFC 2326, is a protocol for use in streaming media systems which allows a client to remotely control a streaming media server, issuing VCR-like mands such as "play" and "pause", and allowing time-based access to files on a server.Some RTSP servers use RTP as the transport protocolfor the actual audio/video data. Many RTSP servers use RealNetworks's proprietary RDT as the transport protocol.RTSP can be transported via UDP or TCP (RTSPU and RTSPT protocols).The default port for RTSP is 554.PNM/PNAThe first version of RealAudio used a proprietary protocol called PNA or PNM to send streaming audio data. RealNetworks later switched to the IETF standardized Real Time Streaming Protocol (RTSP), but they use RTSP only to manage the connection.The default port for PNM is 7070.RTMP - Real Time Messaging Protocol Real Time Messaging Protocol (RTMP) Is a proprietary protocol developed by Adobe Systems (formerly developed by Macromedia) that is primarily used with Macromedia Flash Media Server to stream audio and video over the internet to the Adobe Flash Player client.The default connection port for RTMP is 1935.RTMPE - secure RTMP protocol. Uses encryption.HTTP streaming和 RTSP streaming 的比较收藏如果文件格式合适,一些文件也是可以用传输方式流起来的,大家最熟悉的就是FLV文件了。
RTSP协议转换RTMP直播协议

RTSP协议转换RTMP直播协议协议名称:RTSP协议转换RTMP直播协议一、背景介绍RTSP(Real-Time Streaming Protocol)是一种用于控制多媒体数据传输的网络协议,而RTMP(Real-Time Messaging Protocol)是一种用于实时音视频流传输的协议。
本协议旨在将RTSP协议转换为RTMP直播协议,以实现更高效、稳定的音视频流传输。
二、协议目标本协议的目标是定义一套标准的规范,以实现RTSP协议向RTMP协议的转换,确保音视频流的无损传输、低延迟和高可靠性。
三、协议内容1. 协议交互流程a. 客户端发送RTSP请求,包括请求类型、URL、协议版本等信息。
b. 服务器根据请求类型进行相应处理,生成RTMP请求。
c. 服务器将RTMP请求发送给RTMP服务器。
d. RTMP服务器处理请求,返回相应的响应结果。
e. 服务器将响应结果转换为RTSP响应,发送给客户端。
2. 协议字段定义a. RTSP请求字段包括:请求类型、URL、协议版本、会话ID等。
b. RTSP响应字段包括:响应状态码、协议版本、会话ID等。
c. RTMP请求字段包括:请求类型、URL、协议版本、流ID等。
d. RTMP响应字段包括:响应状态码、协议版本、流ID等。
3. 协议数据传输a. RTSP协议使用TCP进行数据传输,通过RTSP连接进行音视频流传输。
b. RTMP协议使用TCP进行数据传输,通过RTMP连接进行音视频流传输。
4. 协议错误处理a. 当RTSP请求或响应中出现错误时,服务器应返回相应的错误码和错误信息。
b. 当RTMP请求或响应中出现错误时,RTMP服务器应返回相应的错误码和错误信息。
5. 协议安全性a. 为确保音视频流传输的安全性,可以使用加密算法对数据进行加密处理。
b. 可以使用身份验证机制,确保只有经过授权的用户才能进行音视频流传输。
四、协议实施1. 客户端实施a. 客户端需要根据协议规范编写相应的代码,实现RTSP请求的生成和发送。
基于FFmpeg+nginx技术的RTSP转RTMP架构实现

152当前网络高清摄像机都内置提供RTSP流服务[1-2],借助VLC等客户端工具可以直接连接RTSP流来观摩,也可以通过VLC所提供的组件服务或是其他第三方服务将接收流功能封装成插件,结合行业业务流程实现应用。
基于Web端的开发可以使用这些插件。
在PC上通过Web页面下载插件获取RTSP流进行播放,在移动端则通过小程序或插件载体来获取流。
无论是插件还是小程序都会带来便捷性、安全性等方面的影响。
HTML5虽然提供了视频标签Video,但只支持MP4、WebM、OGG三种格式。
本文所给出的实现架构是通过Video.js库来实现无插件RTMP播放流[1-2],并提出未来不支持flash浏览器上的无插件播放方案。
0 引言随着网络带宽的不断提高,流媒体的应用也越来越广泛,一方面客户端从早先的PC机到现在的移动设备,如智能手机、iPad,另一方面服务端媒体网站提供了大量内容丰富的音视频资源,支持在线直播、点播等各种访问方式。
由此而产生了一系列的行业应用,如基于流媒体交互式教学应用的远程教育,还有各种网络直播、点播及视频会议系统,虽然有些概念早期都有,但应用内涵是以静态、单向、非富媒体的形式展现,个人体验、互动性、实时性等都不理想。
如何将这些富媒体以方便的方式提供给各种类型的客户端去使用,成为当下应用研究的一个焦点。
本文主要针对的是富媒体为流媒体时,如何通过技术手段,让客户端在无插件的状态下播放,众所周知插件安装会占用资源相对较少的移动设备,且会带来安全性问题,而在移动设备已成支付首选工具的时代,安全性的问题更加突出。
1 技术路线背景1.1 协议简介及应用RTSP全称:Real Time Streaming Protocol,即实时流传输协议,属于TCP/IP [2]应用层协议,它定义了一对多应用程序如何有效地通过I P 网络传送多媒体数据。
RTSP在体系结构上位于RTP和RTCP之上,它使用TCP 或UDP [2]完成数据传输。
RTSP协议转换RTMP直播协议 (2)

RTSP协议转换RTMP直播协议协议名称:RTSP协议转换RTMP直播协议一、背景和目的RTSP(Real-Time Streaming Protocol)是一种用于实时数据传输的网络协议,常用于流媒体服务。
RTMP(Real-Time Messaging Protocol)是一种用于实时数据传输的协议,常用于视频直播。
本协议的目的是将RTSP协议转换为RTMP直播协议,以实现流媒体服务的直播功能。
二、定义和缩写1. RTSP:Real-Time Streaming Protocol,实时流媒体传输协议。
2. RTMP:Real-Time Messaging Protocol,实时消息传输协议。
三、协议内容1. 协议概述本协议定义了将RTSP协议转换为RTMP直播协议的过程和规则。
2. 协议流程2.1 客户端发送RTSP请求客户端向服务器发送RTSP请求,请求指定的流媒体资源。
2.2 服务器响应RTSP请求服务器接收到RTSP请求后,根据请求内容进行处理,并向客户端发送RTSP 响应。
2.3 客户端发送RTMP连接请求客户端通过RTMP连接请求向服务器发起连接请求,包括连接参数和握手过程。
2.4 服务器响应RTMP连接请求服务器接收到RTMP连接请求后,进行握手过程,并向客户端发送握手响应。
2.5 客户端发送RTMP发布请求客户端通过RTMP发布请求向服务器发送发布请求,包括发布参数和发布流媒体数据。
2.6 服务器响应RTMP发布请求服务器接收到RTMP发布请求后,根据请求内容进行处理,并向客户端发送发布响应。
2.7 客户端发送流媒体数据客户端通过RTMP协议向服务器发送流媒体数据,包括音频、视频等。
2.8 服务器转发流媒体数据服务器接收到客户端发送的流媒体数据后,进行相应的处理,并将数据转发给其他客户端。
3. 协议规则3.1 RTSP请求规则- 请求方法:支持常见的RTSP请求方法,如OPTIONS、DESCRIBE、SETUP、PLAY、PAUSE、TEARDOWN等。
RTSP协议转换RTMP直播协议

RTSP协议转换RTMP直播协议协议名称:RTSP协议转换为RTMP直播协议一、引言本协议旨在规定将RTSP协议转换为RTMP直播协议的技术要求和实施步骤,以确保数据传输的稳定性和可靠性。
本协议适用于网络视频直播系统中的RTSP协议转换为RTMP直播协议的场景。
二、术语定义1. RTSP协议:实时流传输协议(Real Time Streaming Protocol),用于在互联网上传输流媒体数据的协议。
2. RTMP协议:实时消息传输协议(Real-Time Messaging Protocol),用于在互联网上传输音频、视频和数据的协议。
3. 直播:指实时将音视频内容通过网络传输给用户,实现用户在线观看的过程。
4. 服务器:指提供RTSP协议转换为RTMP直播协议服务的计算机系统。
三、技术要求1. 支持RTSP协议和RTMP协议之间的转换:服务器应具备将RTSP协议转换为RTMP协议的功能,以实现不同协议之间的互通。
2. 数据传输稳定可靠:服务器应保证转换后的数据传输稳定可靠,确保音视频内容的实时性和流畅性。
3. 支持多种编码格式:服务器应支持多种音视频编码格式,以满足不同终端设备的需求。
4. 支持动态调整传输参数:服务器应支持根据网络状况动态调整传输参数,以提高传输效率和质量。
5. 安全性保障:服务器应采取合适的安全措施,防止未经授权的访问和数据泄露。
四、实施步骤1. 配置服务器环境:在服务器上安装和配置RTSP协议和RTMP协议的转换工具,确保服务器能够正常运行。
2. 建立连接:当用户通过RTSP协议请求直播内容时,服务器应建立与用户的连接,并验证用户身份。
3. 转换协议:服务器接收到RTSP协议请求后,将其转换为RTMP协议,并进行相应的数据格式转换和编码处理。
4. 数据传输:服务器通过RTMP协议将转换后的音视频数据传输给用户,保证数据传输的稳定性和可靠性。
5. 动态调整传输参数:服务器根据网络状况动态调整传输参数,包括帧率、码率等,以提高传输效率和质量。
RTSP协议转换RTMP直播协议

RTSP协议转换RTMP直播协议协议名称:RTSP协议转换RTMP直播协议一、引言本协议旨在规范将RTSP(Real-Time Streaming Protocol)协议转换为RTMP (Real-Time Messaging Protocol)直播协议的过程和要求。
通过该协议,可以实现将RTSP协议传输的音视频数据转换为RTMP协议进行实时直播。
二、背景RTSP协议是一种用于实时传输音视频数据的应用层协议,常用于流媒体服务器和客户端之间的通信。
而RTMP协议是一种专门用于实时传输音视频数据的协议,广泛应用于流媒体直播领域。
为了满足用户对实时直播的需求,需要将RTSP 协议转换为RTMP协议,以实现更高效、稳定的直播服务。
三、协议内容1. 协议转换流程a. 客户端向服务器发送RTSP协议请求。
b. 服务器接收到RTSP请求后,解析请求内容,并根据转换规则将RTSP请求转换为RTMP请求。
c. 服务器向客户端返回转换后的RTMP请求。
d. 客户端接收到RTMP请求后,解析请求内容,并根据转换规则将RTMP请求发送给RTMP服务器。
e. RTMP服务器接收到RTMP请求后,进行相应的处理,并将处理结果返回给客户端。
2. 协议转换规则a. 请求消息的转换规则:- RTSP请求中的方法(Method)转换为RTMP请求中的方法。
- RTSP请求中的URL转换为RTMP请求中的应用名称。
- RTSP请求中的头部信息转换为RTMP请求中的参数。
b. 响应消息的转换规则:- RTMP响应中的状态码转换为RTSP响应中的状态码。
- RTMP响应中的头部信息转换为RTSP响应中的头部信息。
- RTMP响应中的数据体转换为RTSP响应中的数据体。
3. 数据传输格式a. RTSP协议传输的音视频数据格式可以是常见的音视频编码格式,如H.264、AAC等。
b. RTMP协议传输的音视频数据格式可以是常见的音视频编码格式,如H.264、AAC等。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
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编码的音视频(/haibindev/archive/2011/12/29/2305712.html),实现摄像头直播”的技术方法,来加以实现。
因此,主要需要处理的就是RTSP 直播流数据的获取,以及对其中H.264和AAC编码数据的处理。
于是可以画出大体结构如下:
RtmpThread的主要工作就是发送音频数据流的解码信息头和视频数据流的解码信息头,并不断从DataBufferQueue中取出数据,封装为RTMP Packet,发送出去。
流程如下列代码所示:(process_buf_queue_,即是上图中的DataBufferQueue)
逻辑与实现
1. 程序框架和模块说明
B. 在StartRtsp函数中,创建RtspClient,并发送"describe"命令,开始获取sdp。
回调函数就是continueAfterDESCRIBE。
在这里创建MediaSession,之后再发送"setup"命令,等,这些都可以在live555的例子以及网上的说明中看到。
C. 还有一个关键点,就是要在自己的线程循环中,调用live555 environment 的事件循环,就像这样
4. 对rtsp回调h264数据的分析处理
这里演示了,如何从rtsp回调的h264数据中,提取sps和pps信息。
里面的parse函数,是live555自带的。
调用方式。