当前位置:文档之家› RTSP播放器直播与点播技术实现

RTSP播放器直播与点播技术实现

RTSP播放器直播与点播技术实现
RTSP播放器直播与点播技术实现

多路RTSP播放器直播与点播技术实现

多路RTSP高清视频播放器下载地址:

https://www.doczj.com/doc/7a14196927.html,/u011352914/article/details/16919535

多路RTSP播放器源码下载地址:https://www.doczj.com/doc/7a14196927.html,/detail/u011352914/6603251

多路RTSP播放器SDK说明下载地址:

https://www.doczj.com/doc/7a14196927.html,/detail/u011352914/6603271

1.综述

RTSP协议定义了一对多应用程序如何有效地通过IP网络传送多媒体数据,在体系结构上位于RTP和RTCP之上,它使用TCP或RTP完成数据传输。目前在流媒体传输技术中使用最多的就是基于RTSP/RTP的流媒体传输,在智能网络摄像机上也需要实现基于RTSP/RTP的H.264实时流的传输。

RTSP协议基于TCP完成RTSP请求报文和响应报文的传输,RTP协议基于UDP 协议完成流媒体数据的实时传输,RTCP协议基于UDP协议提供客户端和服务器有关当前网络拥塞和以及实时流传输质量等信息。

2.架构设计

本文研究的流媒体播放器主要用来对遵循RTSP标准协议的码流以及A VI 文件进行实时播放以及码流录制。播放器核心为两个 DLL,分别为网络 DLL 以及播放 DLL。网络库基于 Live555 开发,主要对码流的获取以及链路的管理进行控制;播放库基于f fmpeg 以及DirectX 开发,主要对实时码流以及本地的音视频的文件进行解码播放和控制。

该RTSP播放器实现了主流RTSP播放器的基本功能,并有所拓展:

(1)RTSP 标准码流(包括音视频)的实时预览播放;

(2)网络数据流的断线重连;

(3)对存储文件的解码播放以及控制;

(4)音视频码流的同步存储,文件存储时以当前系统的时间戳作为音视频播放时的索引,方便在文件播放时以时间戳作为检索条件来点播文件;

(5)视频播放格式上支持h.264、mpeg4、mpeg2 等,音频播放格式上支持AAC、AMR、G711 等;

(6)视频抓拍;

(7)视频显示角度旋转;

(8)画面填充控制显示比例。

3.程序框架

播放器整体设计参考VLC,MPLAYER等知名播放器,将整个数据的处理流程分为:input、demux、decode、output四个过程。其中input用来处理网络数据流的输入以及文件数据的读取;demux用来做数据流的解复用,将音频以及视频数据分离成ES流;decode用来解码视频以及音频ES流,并输出解码后的数据(视频为YUV数据,音频为PCM格式);output用来处理YUV视频数据的显示以及PCM音频数据的输出。

为支持多路媒体数据并行解码输出,对于每路媒体数据分别设计了相应的engine引擎机制来进行管理,具体实现方案如下:

(1)为实现多种输入方式的扩展性,将input、demux、decode、output 四个过程划分为两个库来实现,分别为数据源解析库SourceSdk、

播放库PlaySdk;

(2)SourceSdK的管理功能由SourceEngine引擎来完成,主要对input 以及demux模块进行封装管理。SourceEngine从数据源(直播、点

播、文件)获取数据,并解析数据将数据源分离成音频ES流和视频

ES流,并将解析的数据以私有格式进行封装,通过回调函数的机制

传递给应用层;

(3)PlaySdk的管理功能由PlayEngine引擎来完成,主要对decode以

及output模块进行封装管理。PlayEngine提供了数据输入接口,通

过该接口可以将从SourceEngine得到的数据传入该接口,放入

PlayEngine缓存。PlayEngine从缓存中提取数据,并对数据按协议

格式进行解析,将解析出的音视频数据分别回调;

(4)为方便Engine对各模块的管理以及数据通讯,在内部设计了消息机制,可以通过Engine给模块发送消息控制各模块的正常运行;

(5)在相互作用的模块之间,如decode与output之间采用高效的数据缓冲池机制来保证高效的内存分配,并通过队列机制将数据进行有效的

传递;

对于媒体数据大体处理流程图如下:

4.主要技术

播放器在功能和性能上具有较高的要求,具体的实现上,需要主要解决的关键技术点主要包括有:多路高清解码、兼顾低时延与流畅性、音视频同步以及浏览器扩展。针对以上问题,实现上采用的相应解决办法如下:

4.1 多路高清解码

多路高清解码播放每路都由多个线程配合来完成整个数据的处理流程,在多路播放的情况下则更为复杂。因此需要在系统的实现上具有高效的多线程管理机制,以及对各模块的组织、内部互联互通上做出良好的设计:

(1)通过SourceSdk、PlaySdk的实现,将繁琐的数据处理流程统一成了

标准的数据接口,控制管理上方便有效;

(2)在SourceSdk、PlaySdk内部实现上通过engine机制,对单路数据以及播放的管理提供了统一接口,对于多路播放实际上只需要管理多

个engine即可;

4.2 低时延与流畅

在性能提高上通过减少对内存数据的拷贝以及额外的内存分配开销:

(1)在PlaySdk中设计了回环数据缓冲机制,对应用层输入的数据进行高效的缓存,在传输decode模块时,避免了数据拷贝;

(2)在数据解码中使用了ffmpeg的directbuffer机制,进一步的避免了数据的拷贝动作;

(3)数据再各模块之间传递时使用数据缓冲池,避免了额外的内存分配操作,同时也减少了因内存分配操作而带来的内存碎片;

在低时延与流畅的平衡性上,通过设置最大缓冲帧数和最小缓冲帧数来实现控制,具体实现策略为:

通过比较待解码缓冲区和解码后还未来得及显示的缓冲区里数据包的个数的和值,如果该值大于最大缓冲帧数,说明有很多数据在缓存里,延迟大了,这时就要加快显示速度(减小output模块的休眠时间),最大缓冲帧数就是影响延迟的;反之一样,最小缓冲帧数就是流畅的保证,该值越大就越流畅;通过改变这个最大值最小值就可以平衡延迟与流畅。

4.3 音视频同步

由于声音对时间的敏感性,所以在同步的处理上,系统以声音作为基准来参考,对视频的输出来进行调整,从而保证音视频的同步性,具体实现为:通过比较音频和视频的时间戳(pts)来对视频的显示速度进行调整,如当前的视频的pts比音频pts大于最小偏差值(目前设置为200MS),说明视频快了,就放慢是视频的显示速度;反之就加快视频的显示速度;但是,如果差距太大(目前设置为1000MS),大于最大偏差值时,加快视频的显示速度的效果不

明显就采用丢帧方式,这个一般出现再刚开启的是时候。

4.4 WEB浏览器调用

针对不同的浏览器需要来制作成不同的插件,即需要根据具体浏览器的插件接口来编写,可以根据相应的项目需求开发开发支持响应浏览器的插件,一般性需求主要是IE浏览器OCX控件。

5.效果示例

RTSP直播与点播:多路视频并发实时预览,窗口布局可动态调整;可动态的设置视频输出的显示比例,调整音量的输出大小;支持对视频内容的时间点检索等操作。

(版权所有,转载请注明作者和出处)

各视频格式播放代码

1。avi格式 代码片断如下: <object id="video" width="400" height="200" border="0" classid="clsid:CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA"> <param name="ShowDisplay" value="0"> <param name="ShowControls" value="1"> <param name="AutoStart" value="1"> <param name="AutoRewind" value="0"> <param name="PlayCount" value="0"> <param name="Appearance value="0 value="""> <param name="BorderStyle value="0 value="""> <param name="MovieWindowHeight" value="240"> <param name="MovieWindowWidth" value="320"> <param name="FileName" value="/Mbar。avi"> <embed width="400" height="200" border="0" showdisplay="0" showc autostart="1" autorewind="0" playcount="0" moviewindowheight="240" moviewindowwidth="320" filename="/Mbar。avi" src="Mbar。avi"> </embed> </object> 2。mpg格式 代码片断如下: <object classid="clsid:05589FA1-C356-11CE-BF01-00AA0055595A" id="ActiveMovie1" width="239" height="250">

Java实现视频网站的视频上传及视频播放功能

视频网站中提供的在线视频播放功能,播放的都是FLV格式的文件,它是Flash动画文件,可通过Flash 制作的播放器来播放该文件.项目中用制作的播放器. 多媒体视频处理工具FFmpeg有非常强大的功能包括视频采集功能、视频格式转换、视频抓图、给视频加水印等。?? ffmpeg视频采集功能非常强大,不仅可以采集视频采集卡或USB摄像头的图像,还可以进行屏幕录制,同时还支持以RTP方式将视频流传送给支持RTSP的流媒体服务器,支持直播应用。 1.能支持的格式 ffmpeg能解析的格式:(asx,asf,mpg,wmv,3gp,mp4,mov,avi,flv等) 2.不能支持的格式 对ffmpeg无法解析的文件格式(wmv9,rm,rmvb等),可以先用别的工具(mencoder)转换为avi(ffmpeg 能解析的)格式. 实例是将上传视频转码为flv格式,该格式ffmpeg支持,所以我们实例中需要ffmpeg视频处理工具. 数据库 实例所需要的数据库脚本 drop database if exists db_mediaplayer;create database db_mediaplayer;use db_mediaplayer; create table tb_media( id int not null primary key auto_increment comment '主键' , title varchar(50) not null comment '视频名称' , src varchar(200) not null comment '视频存放地址' , picture varchar(200) not null comment '视频截图' , descript varchar(400) comment '视频描述' , uptime varchar(40) comment '上传时间' );

在网页中插入视频播放代码全集

在网页中插入视频播放代码全集.txt 2.mpg格式 代码片断如下:

几种在网页中播放FLV视频文件的代码

几种在网页中播放FLV视频文件的代码(附FLV播放器) 方法一、js嵌入 直接copy下面代码,修改其中红色部分,即:swf_width、swf_height、texts、files 参数引用 其中: 群英传WEB版宣传视频是标题。 https://www.doczj.com/doc/7a14196927.html,/flv/qyzweb.flv是FLV文件地址。 https://www.doczj.com/doc/7a14196927.html,/flv/flvplayer.swf 是FLV文件播放器地址(如果你不会制作,可下载别人的然后上传到自己的空间再调用)。

空间播放器代码大全:网页中插入各种格式视频播放代码大全

空间播放器代码大全:网页中插入各种格式视频播放代码大全 疯狂代码 https://www.doczj.com/doc/7a14196927.html,/ ?:http:/https://www.doczj.com/doc/7a14196927.html,/HtmlJiaoCheng/Article19101.html 1.avi格式 代码片断如下: 2.mpg格式 代码片断如下:

网页视频播放器代码

网页视频播放器代码大全网页mtv播放器代码 一. RM格式(无边框按钮)RealPlayer 代码如下:

二. RM格式(带边框按钮)RealPlayer 代码如下:

三. WMV格式(带边框按钮)Windows Media Player 代码如下:

网页视频播放器代码大全

网页视频播放器代码大全 1.avi格式 代码片断如下: 2.mpg格式 代码片断如下:

收集最常用的网页中嵌入视频代码大全教学内容

收集最常用的网页中嵌入视频代码大全,各种各样的网页视频播放器代码. 网页中嵌入视频代码综合完全版 1.avi格式 代码片断如下: 程序代码

在线视频播放代码

在线视频播放代码 1.avi格式 2.mpg格式

HTML中的视频播放器代码

1.avi格式 代码片断如下: 2.mpg格式 代码片断如下:

教大家如何在网页中插入漂亮的嵌入播放器代码

教大家如何在网页中插入播放器 因为自己需要,所有,收集整理一下相关的资料 1.我们在网页上看到的播放器无外乎WMP/RealOne/Macromedia Flash Player,其他的无非是面板不同,或者添加了其他控件,对于计算机上安装的一些播放器也都是编码和解码器的整合,其最核心的编码和解码技术是相同的。例如:网络上最流行的windows media流(asf,wma,wmv格式...),Real流(rm,rmvb...),还有MPEG系列编码格式(MP4/MP3格式...) WMP控件加入了ActiveX解码器控件,不仅可以放曲子,还能放Flash和其它视频文件。复制内容到剪贴板 代码: 2.上面的这个播放器是老式的那种,6.4版本!新式播放器是在WMP9.0以后出现的,也就是说只有装了9.0或9.0以上的播放器才能正常使用的 新式播放器代码,相对以前的来说要简单很多: 复制内容到剪贴板 代码:

网页中插入视频的代码

强力推荐这个 最简单的播放代码 仔细研究的话,就看下面的吧,哈哈哈,我一般只用上面的。 1. avi格式 2. mpg格式

网页视频播放器代码大全汇总、常用网页播放器代码

常用网页播放器代码 我们在网页上看到的播放器无外乎WMP/RealOne/Macromedia Flash Player,其他的无非是面板不同,或者添加了其他控件,对于计算机上安装的一些播放器也都是编码和解码器的整合,其最核心的编码和解码技术是相同的。例如:网络上最流行的windows media流(asf,wma,wmv格式...),Real流(rm,rmvb...),还有MPEG系列编码格式(MP4/MP3格式...) Windows Media Video 是微软推出的一种流媒体格式,它是在“同门”的ASF(Advanced Stream Format)格式升级延伸来得.在同等视频质量下,WMV格式的体积非常小,因此很适合在网上播放和传输。Windows Media Player9兼容所有格式的WMV,官方编码器是Windows Media Encoder ,但是如果你想转制高质量的wmv文件,那您一定要有超大的内存来处理数据... 无意中发现CASTPOST的播放器可以自己定义大小,对于WMV格式的在线播放可以说已经足够快了,然后就费了好大劲把一些精彩的短片和一些经典的MTV转化WMV格式放了上来,尽管现在不能下载了,但是只要不是连接人数过多,播放起来还是很流畅的^_^ WMP加入了ActiveX解码器控件,不仅可以放曲子,还能放Flash和其它视频文件 想用WMP连续播放请参照ASX元文件使用讲解:使用ASX播放列表吧 上面的这个播放器是老式的那种,6.4版本!新式播放器是在MediaPlayer9.0以后出现的,也就是说只有装了9.0或9.0以上的播放器才能正常使用的。 下面是新式播放器代码,相对以前的来说要简单很多:

网页视频播放器程序代码(通用代码)

*********************************************** '函数名:SelPlay '作  用:在网页中播放视频 '参  数:strUrl ---- 视频地址            strWidth ---显示视频宽            strHeight ---显示视频高 '*********************************************** Sub SelPlay(strUrl,strWidth,StrHeight) Dim Exts,isExt If strUrl <> "" Then    isExt = LCase(Mid(strUrl,InStrRev(strUrl, ".")+1)) Else    isExt = "" End If Exts = "avi,wmv,asf,mov,rm,ra,ram" If Instr(Exts,isExt)=0 Then  Response.write "非法视频文件" Else  Select Case isExt   Case "avi","wmv","asf","mov"    Response.write "<EMBED id=MediaPlayer src="&a mp;strUrl&" width="&strWidth&" height="&strHeight&"  loop=""false"" autostart=""true""></EMBED>"   Case "mov","rm","ra","ram"    Response.Write "<OBJECT height="&strHeight& " width="&strWidth&" classid=clsid:CFCDAA03-8BE4-11cf-B84B-0020 AFBBCCFA>"    Response.Write "<PARAM NAME=""_ExtentX"" V ALUE=""12700"">"    Response.Write "<PARAM NAME=""_ExtentY"" V ALUE=""9525"">"    Response.Write "<PARAM NAME=""AUTOSTART""&nb sp;V ALUE=""-1"">"

文本预览
相关文档 最新文档