live555移植到hi3516做rtsp服务器

live555移植到hi3516做rtsp服务器,第1张

live555库本身实现了做rtsp服务器,客户端可以通过rtsp客户端访问服务器上的文件并播放,支持的文件格式如下:

本次任务实现了把live555移植到嵌入式海思芯片hi3516上做rtsp服务器,除了支持客户端播放服务器上上面格式文件外,另添加了实时播放hi3516摄像头图像与音频的功能。

live555源码目录如下:

四个基本的库分别是:BasicUsageEnvironment, groupsock, liveMedia和UsageEnvironment。

编译后即生成这4个库文件:

这里我只简单说下liveMedia库的功能,其他三个库是live555运行的基础库,太(mei)简(yan)单(jiu),就不说了。

liveMedia库包含了音视频相关的所有功能,包含音视频文件的解析,RTP传输封装等,我们可以看到这个目录下有对h264、AAC等文件解析的支持:

交叉编译过程:略

这里我主要是修改mediaServer文件夹下的示例程序,添加实时预览摄像头图像与mic声音功能。

hi3516芯片,视频编码格式为h264,音频编码格式为AAC。

1.添加音频AAC支持

添加类 ADTSAudioLiveSource ,继承自FramedSource

在该类的doGetNextFrame函数里实现获取hi3516音频数据做为rtsp服务器音频源。

注意点:

1.1 adts默认是带7字节或者9字节的头,传给rtsp的时候是要去掉头的,实际上RTSP通过rtp传输AAC帧的时候是不带adts头的,而是带4个字节的mpeg4-generic头。

1.2 从FramedSource继承而来的变量

每次doGetNextFrame帧时,从FIFO里取一个完整的AAC帧,把帧拷贝到fTo buf里面,然后比较帧大小与fMaxSize来赋值几个关键的变量:

注意,不管帧长是否大于fMaxSize,每次都需要把完整的帧拷贝到fTo指针,live555内部会根据fNumTruncatedBytes等变量自行处理分包。

1.3 doGetNextFrame函数最后不管有没有取到帧,都需要执行FramedSource::afterGetting

1.4 采样率,通道数,configstr等的计算

这几个变量在mediaSubbsession建立RTPsink时要用到,它直接影响了SDP里对于AAC音频描述字段的产生

添加类 AACAudioLiveServerMediaSubsession ,继承自ADTSAudioFileServerMediaSubsession

createNewStreamSource函数创建上面的ADTSAudioLiveSource做为音频输入源,参数estBitrate为预估的码率,海思AAC编码码率设置为24kbps,所以estBitrate设置为24.

createNewRTPSink有必要继承,因为需要根据音频源的采样率、通道数等创建RTPSink.

2.添加h264支持

添加 H264FramedLiveSource ,继承自FramedSource

unsigned maxFrameSize()函数必须继承,里面设置帧最大可能的大小,我设置为100000,如果不继承就是默认的,会出现画面马赛克

doGetNextFrame函数里面和AAC取帧的处理差不多,我加多了一个步骤,就是第一次取帧的时候会调用接口去产生一个关键帧,并且等待这个关键帧到来才处理,这样连接后出图会比较快。

添加类 H264VideoLiveServerMediaSubsession ,继承自H264VideoFileServerMediaSubsession

这个类就是实现createNewStreamSource时创建H264FramedLiveSource

3.修改DynamicRTSPServer

修改类DynamicRTSPServer,在lookupServerMediaSession函数里动点手脚,默认在这个函数里面会根据文件名去寻找服务器下相应的文件做为直播源,我这里比较如果是我特定的live源名字则直接返回,相应的live源创建rtsp服务器的时候就添加好

4.初始化rtsp server

初始化rtsp服务器,添加一个ServerMediaSession,该mediaSession添加一个AACAudioLiveServerMediaSubsession和一个H264VideoLiveServerMediaSubsession,然后把该mediaSession添加给rtsp服务器。

客户端访问 rtsp://x.x.x.x/ch0.live 时就可以看到实时的摄像头图像与声音啦!

两种方法:

1、扩展rtsp消息 announce,视频启动后,直接发布到rtsp server;

2、增加一些额外的控制指令,视频启动后,向服务器发送注册消息,并告知url,让服务器直接点播视频流,并保持;

问题一:流媒体用的是什么协议? 流媒体的传输协议

大家在观看网上电影或者电视时,一般都会注意到这些文件的连接都不是用或者ftp开头,而是一些rtsp或者mms开头的东西,为什么是这样呢?实际上,这些和和ftp一样,都是数据在网络上传输的协议,只是它们是专门用来传输流式媒体的协议而已。下面,让我们来看一下现在使用的主要的流媒体协议:

1. RTSP(Real Time Streaming Protocol),实时流媒体协议,它是由RealNetworks和Netscape共同提出的,现在用于RealNetworks的Real Media产品中;

2. PNM(Progressive Networks Audio),这也是Real专用的实时传输协议,它一般采用UDP协议,并占用7070端口,但当你的服务器在防火墙内且7070端口被挡,且你的服务器把SmartingNetwork设为真时,则采用协议,并占用默认的80端口;

3. MMS(Microsoft Media Server protocol),这是微软的流媒体服务器协议,MMS 是连接 Windows Media 单播服务的默认方法。

介绍了主要的三个,可能您还会问,Apple的QuickTime使用哪种协议呢?在多数情况下,Quick盯ime使用协议,但实际上它也由标准的流媒体传输协议,这就是标准RTSP协议,而Real公司使用的RTSP是自己经过开发的。

在流媒体传输中,标准的协议就是RTP(Real time Transport Protocol,实时传输协议)、RTCP(Real-time Transport Control Protocol,实时传输控制协议)、RTSP(Real Time Streaming Protocol,实时流媒体协议)和RSVP(Resource Reserve Protocol, 资源预订协议),厂商们的产品都是在这些协议的基础上进行研究与开发,限于篇幅,在这里我们就不再深入讨论了。

问题二:流媒体系统包括哪三部分?目前三大主流媒体格式以及协议是什么? 1、编码器:它由一台普通计算机、一块microvision 高清视频采集卡和流媒体编码软件组成。Microvision流媒体采集卡负责将音视频信息源输入计算机,供编码软件处理编码软件负责将流媒体 采集卡传送过来的数字音视频信号压缩成流媒体格式。如果做直播,它还负责实时地将压缩好的流媒体信号上传给流媒体服务器

2、服务器:由流媒体软件系统的服务器部分和一台硬件服务器组成。这部分负责管理、存储、分发编码器传上来的流媒体节目。 3、终端播放器,也叫解码器: 这部分由流媒体系统的播放软件和一台普通PC组成,用它来播放用户想要收看的流媒体服务器上的视频节目。

流媒体技术原理

目前主流的流媒体技术有三种,分别是RealNetworks公司的RealSystem、Microsoft公司的WindowsMediaTechnology和Apple公司的QuickTime。这三家的技术都有自己的专利算法、专利文件格式甚至专利传输控制协议。

问题三:常见的流媒体协议有哪些? 有MMS,RSVP,RTSP,RTP,RTPC等等

问题四:流媒体是什么?有什么类型? 流媒体,又叫流式媒体,是边传边播的媒体,是多媒体的一种。边传边播是指媒体提供商在网络上传输媒体的“同时”,用户一边不断地接收并观看或收听被传输的媒体。“流”媒体的“流”指的是这种媒体的传输方式(流的方式),而并不是指媒体本身。

有两种类型;

1.顺序流式传输是顺序下载,在下载文件的同时用户可观看在线媒体,在给定时刻,用户只能观看已下载的那部分,而不能跳到还未下载的前头部分,顺序流式传输不象实时流式传输在传输期间根据用户连接的速度做调整。由于标准的HTTP服务器可发送这种形式的文件,也不需要其他特殊协议,顺序流式传输比较适合高质量的短片段,如片头、片尾和广告,由于该文件在播放前观看的部分是无损下载的,这种方法保证电影播放的最终质量。

2.实时流式传输指保证媒体信号带宽与网络连接配匹,使媒体可被实时观看到。实时流与HTTP流式传输不同,他需要专用的流媒体服务器与传输协议。实时流式传输总是实时传送,特别适合现场事件,也支持随机访问,用户可快进或后退以观看前面或后面的内容。理论上,实时流一经播放就可不停止,但实际上,可能发生周期暂停。实时流式传输必须配匹连接带宽,这意味着在以调制解调器速度连鸡时图象质量较差。而且,由于出错丢失的信息被忽略掉,网络拥挤或出现问题时,视频质量很差。如欲保证视频质量,顺序流式传输也许更好。

问题五:流媒体协议RTMP,RTSP与HLS有什么不同 流媒体协议RTMP,RTSP与HLS有什么不同?

HLS (HTTP Live Streaming)

Apple的动态码率自适应技术。主要用于PC和Apple终端的音视频服务。包括一个m3u(8)的索引文件,TS媒体分片文件和key加密串文件。

常用的流媒体协议主要有 HTTP 渐进下载和基于 RTSP/RTP 的实时流媒体协议,这二种基本是完全不同的东西,目前比较方便又好用的是用 HTTP 渐进下载方法。在这个中 apple 公司的 HTTP Live Streaming 是这个方面的代表。它最初是苹果公司针对iPhone、iPod、iTouch和iPad等移动设备而开发的流.现在见到在桌面也有很多应用了,HTML5 是直接支持这个。

但是HLS协议的小切片方式会生成大量的文件,存储或处理这些文件会造成大量资源浪费。如果要实现数天的时移,索引量将会是个巨额数字,并明显影响请求速度。因此,HLS协议对存储I/O要求相当苛刻。对此,也有公司提出了非常好的解决方案。

新型点播服务器系统,独创了内存缓存数据实时切片技术,颠覆了这种传统实现方法,从根本上解决了大量切片的碎片问题,使得单台服务器的切片与打包能力不再是瓶颈。其基本原理如下:

不将TS切片文件存到磁盘,而是存在内存当中,这种技术使得服务器的磁盘上面不再会有“数以吨计”的文件碎片,极大减少了磁盘的I/O次数,延长了服务器磁盘的使用寿命,极大提高了服务器运行的稳定性。同时,由于使用这种技术,使得终端请求数据时直接从服务器的内存中获取,极大提高了对终端数据请求的反应速度,优化了视频观看体验。

RTSP协议,这应该是实时性最好的了,如果要想实时性要求很高,比如0.5s以内,这个是不错的选择。前阵子模仿spydroid写了个建议的rtsp 服务器,其实就是options,describe,setup,play,pause,teardown这几步了,这个协议用的最广泛,网上介绍也比较 多。要想真正深入了解rtsp协议,c++语言功底好的可以查看live555 。

问题六:实现流媒体传输的主要协议有哪些?各自的功能和任务是什么 基于Windows Media技术的流媒体系统的设计与实现

摘要:本文在简介流媒体技术及其中的Windows Media技术的基础上,结合实际简述了Windows Media服务器的安装、ASF文件的制作以及“点播单播发布点”、“广播单播发布点”、“多播广播站”的创建方法,从实践角度阐述了在网络中实现流媒体服务的技术和方法。

关键词:Windows Media 流媒体 网络视频

Windows Media-based streaming media technology, Design and Implementation

Abstract: This article profiles in streaming media technology in its Windows Media technology on the basis of the actual bined on a Windows Media server installation, ASF, as well as the production of documents on-demand unicast release point, Broadcast Unicast release point, Multicast broadcast stations, the creation of methods, and through links to web pages, etc. They may be related to the test, from the perspective of the practice described in the network to achieve streaming media services technologies and methods.

Key words: Windows Media streaming video network

1.流媒体技术概述

流媒体简单地说就是应用流式传输技术在Internet/Intranet上传输的连续时基媒体,如:音频、视频或多媒体文件。流式媒体在播放前并不下载整个文件,只将开始部分内容存入内存,流式媒体的数据流随时传送随时播放,只是在开始时有一些延迟。流媒体实现的关键技术就是流式传输。流式传输主要指通过网络传送媒体(如视频、音频)的技术总称。其特定含义为通过Internet将影视节目传送到PC机。流媒体技术是包含了采集、编码、传输、储存、解码等多项技术的综合技术。

2. Windows Media技术简介

2.1 特点

Microsoft公司推出的Windows Media技术具有方便性、先进性、集成性、低费用等特点,而且其制作、发布和播放软件与Windows NT/2000/9x集成在一起,不需要额外购买。Microsoft的流视频解决方案在Microsoft视窗平台上是免费的,制作端与播放器的视音频质量都上佳,而且易于使用。

2.2 Windows Media播放方式

Windows Media播放方式包括单播、多播、点播与广播。它们的含义如下表所示:

单播:是客户端与服务器之间的点到点连接。在客户端媒体服务器之间建立一个单独的数据通道,1台服务器送出的每个数据包只能传送给1个客户机。

多播:是通过启用多播的网络传递内容流,网络中的所有客户端共享同一流。由多播技术构建......>>

问题七:什么是流媒体播放协议 流媒体技术基础-流媒体传输协议

作者/来源:未知

实时传输协议RTP与RTCP

RTP(Real-timeTransportProtocol)是用于Internet上针对多媒体数据流的一种传输协议。RTP被定义为在一对一或一对多的传输情况下工作,其目的是提供时间信息和实现流同步。RTP通常使用UDP来传送数据,但RTP也可以在TCP或ATM等其他协议之上工作。当应用程序开始一个RTP会话时将使用两个端口:一个给RTP,一个给RTCP。RTP本身并不能为按顺序传送数据包提供可靠的传送机制,也不提供流量控制或拥塞控制,它依靠RTCP提供这些服务。通常RTP算法并不作为一个独立的网络层来实现,而是作为应用程序代码的一部分。实时传输控制协议RTCP。RTCP(Real-timeTransportControlProtocol)和RTP一起提供流量控制和拥塞控制服务。在RTP会话期间,各参与者周期性地传送RTCP包。RTCP包中含有已发送的数据包的数量、丢失的数据包的数量等统计资料,因此,服务器可以利用这些信息动态地改变传输速率,甚至改变有效载荷类型。RTP和RTCP配合使用,它们能以有效的反馈和最小的开销使传输效率最佳化,因而特别适合传送网上的实时数据。

6.2.1 RTP数据传输协议

RTP提供端对端网络传输功能,适合通过组播和点播传送实时数据,如视频、音频和仿真数据。RTP没有涉及资源预订和质量保证等实时服务,RTCP扩充数据传输以允许监控数据传送,提供最小的控制和识别功能。RTP与RTCP设计成独立传输和网络层。

2.1.1 RTP固定头

RTP 头格式如下:

-----------------------------------------------------------------------------------------------

|V=2|P|X| CC |M| PT | 系列号 |

-----------------------------------------------------------------------------------------------

| 时标 |

-----------------------------------------------------------------------------------------------

| 同步源标识(SSRC) |

-----------------------------------------------------------------------------------------------

| 作用标识 (CSRC) |

| .... |

-----------------------------------------------------------------------------------------------

开始12个八进制出现在每个RTP包中,而CSRC标识列表仅出现在混合器插入时。

2.1.2 复用 RTP 连接

为使协议有效运行,复用点数目应减至最小。RTP中,复用由定义RTP连接的目的传输地址(网络地址与端口号)提供。例如,对音频和视频单独编码的远程会议,每个媒介被携带在单独RTP连接中,具有各自的目的传输地址。目标不在将音频和视频放在单一RTP连接中,而根据SSRC段载荷类型进行多路分解。使用同一SSRC ,......>>

问题八:流媒体协议RTMP,RTSP与HLS有什么不同 RTMP是Real Time Messaging Protocol(实时消息传输协议)的首字母缩写。该协议基于TCP,是一个协议族,包括RTMP基本协议及RTMPT/RTMPS/RTMPE等多种变种。RTMP是一种设计用来进行实时数据通信的网络协议,主要用来在Flash/AIR平台和支持RTMP协议的流媒体/交互服务器之间进行音视频和数据通信。支持该协议的软件包括Adobe Media Server/Ultrant Media Server/red5等。

RTSP(Real Time Streaming Protocol),RFC2326,实时流传输协议,是TCP/IP协议体系中的一个应用层协议,由哥伦比亚大学、网景和RealNetworks公司提交的IETF RFC标准。该协议定义了一对多应用程序如何有效地通过IP网络传送多媒体数据。RTSP在体系结构上位于RTP和RTCP之上,它使用TCP或UDP完成数据传输。HTTP与RTSP相比,HTTP请求由客户机发出,服务器作出响应使用RTSP时,客户机和服务器都可以发出请求,即RTSP可以是双向的。RTSP是用来控制声音或影像的多媒体串流协议,并允许同时多个串流需求控制,传输时所用的网络通讯协定并不在其定义的范围内,服务器端可以自行选择使用TCP或UDP来传送串流内容,它的语法和运作跟HTTP 1.1类似,但并不特别强调时间同步,所以比较能容忍网络延迟。而前面提到的允许同时多个串流需求控制(Multicast),除了可以降低服务器端的网络用量,更进而支持多方视讯会议(Video Conference)。因为与HTTP1.1的运作方式相似,所以代理服务器〈Proxy〉的快取功能〈Cache〉也同样适用于RTSP,并因RTSP具有重新导向功能,可视实际负载情况来转换提供服务的服务器,以避免过大的负载集中于同一服务器而造成延迟。

问题九:实时流媒体RTSP协议的开发,该看哪些书籍 可以看看live555,那个代码里面有rtsp,流程很清晰,很好理解

如果要做流媒体客户端的话,可能会用到directshow

问题十:移动流媒体的控制协议 流媒体使用的特有的应用和控制协议有RTP/RTCP、RSVP和RTSP。(1)实时传输协议(RTP)和实时控制协议(RTCP)。RTP/RTCP是基于IP的应用层协议,支持实时数据(音频、视频流)的传输,其思想是传输实时数据的同时发送一些关于传输和接收的质量的反馈信息,这两个任务分别由RTP和RTCP完成。RTP提供一些机制用于进行时间重建、定时、丢包检测和重排序。RTP支持单播和组播,可用于单向传输也可用于双向业务,但是RTP本身不提供如何实时传输的机制,也不提供可靠的流阻塞控制,而是通过与RTCP和UDP的配合,使传输效率达到最优化。RTP/RTCP为传送实时数据提供需要的功能和控制机制,但是其本身不负责高层的任务,如重排序和同步,这些由应用程序完成。(2)资源预留协议(RSVP)。RSVP允许数据接收方为数据流请求特殊的端到端QoS。实时应用使用RSVP在路由器上预留必要的资源,这样在传输的时候可以得到所要求的带宽。RSVP流程是单一的,不区别发送方和接收方。RSVP支持组播和单播,并适应变化的成员个数和路由。使用RSVP要求传输路径上的节点都支持RSVP,这很难得到保证,所以流应用一般不使用RSVP。(3)实时流协议(RTSP)。RTSP是一个应用层协议,利用RTSP可以在服务器和客户端之间建立并控制连续的音频媒体和视频媒体流,进行服务器和客户端之间的“网络远程控制”,提供类似VCR的音频和视频的远程控制功能。但是RTSP要在独立于数据的通道中进行传输。RTSP支持单播和组播,提供选择传送通道的方法,可以选择UDP、组播UDP和TCP,而低层的传输机制依赖于RTP或TCP。RTSP与低层的协议(如RTP、RSVP)一起协调运行,提供完全的流服务。RTSP是有状态的、对称的协议,RTSP服务器维护会话状态且RTSP中媒体服务器和客户端都能发出请求。RTSP的语法和 *** 作与HTTP相似,使用专用于音频和视频的类似于HTTP中的URL。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://www.outofmemory.cn/bake/11962117.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-20
下一篇 2023-05-20

发表评论

登录后才能评论

评论列表(0条)

保存