基于Android系统的通用RTSP流播放器技术方案

技术编号:8611884 阅读:297 留言:0更新日期:2013-04-20 00:24
本发明专利技术公开了一种基于Android系统的通用RTSP流播放器,其特征是:包括音视频解码库、基于C语言的动态库和基于Java语言的JAR库。本发明专利技术的有益效果在于:具备播放RTSP协议的音视频流的功能;支持Android2.0及以上版本的操作系统;支持ARMv6架构及以上的ARM芯片平台。

【技术实现步骤摘要】

本专利技术涉及智能终端播放器领域,特别是Andriod操作系统的智能终端。
技术介绍
目前市面上的Android智能终端,大多数不支持通过RTSP协议的连接方式播放音视频流,即使支持,也不能修改RTSP的交互协议,不能普及到一些特殊的应用场景,比如通过智能终端播放RTSP协议的监控视频流。针对目前存在的问题,专利技术了基于Andriod系统的通用RTSP流播放器。
技术实现思路
本专利技术的目的在于针对目前存在的问题,提供一种兼容多种版本的Andriod操作系统,支持ARMv6架构及以上的ARM芯片平台,能播放RTSP音视频流的播放器。本专利技术目的技术方案为基于Android系统的通用RTSP流播放器,包括音视频解码库、基于C语g的动态库和基于Java语g的JAR库。音视频解码库用于数据获取、数据解码;基于C语言的动态库用于连接音视频解码库和基于Java语言的JAR库,将音视频解码库解码的数据进行显示;基于Java语言的JAR库用于功能调用、参数传递和播放器控制。上述方案中,所述的音视频解码库包括工具模块、解复用模块、解码模块和画面缩放模块。上述方案中,工具模块为音视频解码库的各个模块提供通用的函数接口,达到源代码的重用;解复用模块对文件或网络数据进行拆包,从中提取音频和视频数据;解码模块对音频和视频数据进行解码,输出Android系统支持的音视频原始数据。上述方案中,所述基于C语言的动态库由三部分组成jni模块、音频输出模块和视频输出模块。上述方案中,所述JAR库由二部分组成java api模块和jni api模块。上述方案中,所述的基于Android系统的通用RTSP流播放器的播放方法步骤一初始化各功能模块;步骤二 工具模块获取音视频数据;步骤三解复用模块对获取的数据拆包,分离出音频和视频数据;步骤四解码模块对分离出来的数据进行解码,传到动态库;步骤五动态库对解码后的 音视频数据进行播放和显示。上述方案中,播放器的播放方法,在所述步骤一初始化各功能模块时首先调用JAR 库中的java api模块,然后所述java api模块调用jni api模块中的函数,然后通过jni 方法调用所述动态库中各个模块。上述方案中,播放器的播放方法,在所述步骤一结束之后,RTSP地址通过jni方法传递给音视频解码模块中的工具模块,工具模块得到该地址后,通过socket与RTSP服务器进行交互认证和数据获取。上述方案中,播放器的播放方法,在所述步骤四中,解码模块是从流媒体服务器返回的SDP域信息中提取数据格式,并设置所述解码库的参数。上述方案中,播放器的播放方法,所述音视频解码库能够对ARM架构中的浮点和多媒体指令进行处理。与现有技术相比,上述技术方案的有益效果由于音视频解码库和基于C语言的动态库在C空间运行,提闻了首视频的解码效率;支持RTSP协议的首视频流的播放;支持 Android 2.0及以上版本的操作系统;支持ARMv6架构及以上的ARM芯片平台,因此具有通用性。附图说明图1是本专利技术的框架示意图;图2是本专利技术的工作流程图。具体实施方式如图1所示,基于Android系统的通用RTSP流播放器,包括音视频解码库、基于C 语目的动态库和基于Java语目的JAR库。音视频解码库由四部分组成工具模块、解复用模块、解码模块和画面缩放模块组成。基于C语言的动态库由三部分组成jni模块、音频输出模块和视频输出模块。JAR库由二部分组成java api模块和jni api模块。 音视频解码库的工具模块为音视频解码库的各个模块提供通用的函数接口,达到源代码的重用;解复用模块对文件或网络数据进行拆包,从中提取音频和视频数据;解码模块对音频和视频数据进行解码,从而输出Android系统支持的音视频原始数据。基于C语言的动态库的jni模块为JAR库与音视频解码库提供沟通的桥梁,保证 Java和C语言之间能够相互调用;音频输出模块将音视频解码库中输出的音频数据送入系统底层进行播放;视频输出模块将音视频解码库中输出的视频数据送入系统底层进行显/Jn οJAR库的java api模块为开发者提供可以调用的api函数;jni api模块提供JAR 库内部使用的api函数,并不对外开放,通过jni api可以调用动态库中的功能函数。图2显示的是基于Android系统的通用RTSP流播放器的工作流程,其工作流程包括初始化流程和播放流程。初始化流程调用JAR库中的java api模块,然后该模块调用jni api模块中的函数,然后通过jni 方法调用动态库中各个模块的初始化方法,其中在初始化jni模块时,会调用音视频解码库中各个模块的初始化方法,至此完成所有模块的初始化工作。播放流程`在java层,RTSP地址通过jni方法传递给音视频解码库,工具模块得到该地址后,通过socket与RTSP服务器进行交互认证和数据获取;解复用模块将工具模块获取的数据进行拆包,分离出其中的音频和视频数据;解码模块分别针对音频和视频数据进行解码,然后将解码后的数据回传给动态库中的音频输出模块和视频输出模块进行播放和显示。为了让播放器达到预想的效果,技术方案克服了以下困难1.为了让音视频解码库正确编译并且在Android系统和ARM芯片平台上正确运行,做了如下修改a)设置音视频解码库的处理器参数,指定为ARM架构;b)设置音视频解码库的跨平台编译选项;c)增加对ARM架构中浮点、多媒体等指令的支持。2.为了让工具模块正确编译,做了如下修改由于Android的编译工具不支持restrict关键字,修改音视频解码库源码下的 config. h 文件,将 #define restrict restrict 修改为 #define restrict ;修改 libavutil/libm. h文件,把其中的static方法都删除;3.为了让解复用模块正确编译,并且支持大于4GB的文件,做了如下修改修改libavformat/file. c文件中的file_seek()函数,将IseekO函数修改为 lseek64()函数,使解复用模块支持大于4GB的文件;4.为了解析流媒体服务器的数据格式,修改libavformat/rtsp.c文件。修改后,将解析发送Describe命令后流媒体服务器返回的SDP域信息,从中提取数据格式, 从而设置解码库的参数,使音视频解码更具扩展性。本文档来自技高网...

【技术保护点】
基于Android系统的通用RTSP流播放器,包括音视频解码库、基于C语言的动态库和基于Java语言的JAR库;所述音视频解码库用于音视频数据获取、数据解码;所述基于C语言的动态库连接音视频解码库和基于Java语言的JAR库,将音视频解码库解码的数据进行播放和显示;所述基于Java语言的JAR库用于功能调用、参数传递和播放器控制。

【技术特征摘要】
1.基于Android系统的通用RTSP流播放器,包括音视频解码库、基于C语言的动态库和基于Java语言的JAR库;所述音视频解码库用于音视频数据获取、数据解码;所述基于C语言的动态库连接音视频解码库和基于Java语言的JAR库,将音视频解码库解码的数据进行播放和显示;所述基于Java语言的JAR库用于功能调用、参数传递和播放器控制。2.如权利要求1所述的播放器,其特征在于所述音视频解码库包括工具模块、解复用模块、解码模块和画面缩放模块。3.如权利要求2所述的播放器,其特征在于上述工具模块为音视频解码库提供通用的函数接口,达到源代码的重用;解复用模块对文件或网络数据进行拆包,从中提取音频和视频数据;解码模块对音频和视频数据进行解码,输出Android系统 支持的音视频原始数据。4.如权利要求1所述的播放器,其特征在于所述基于C语言的动态库由三部分组成 Jni模块、音频输出模块和视频输 出模 块。5.如权利要求1所述的播放器,其特征在于所述JAR库由二部分组成javaapi模块和jni api模块。6.如权利要求1所述的基于Android系统的通用RTSP流播放器的播放方法包括如下步骤步骤一初始化各功能模块;步骤二 工...

【专利技术属性】
技术研发人员:熊飞
申请(专利权)人:四川九洲电器集团有限责任公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1