
技术领域
本发明涉及智能终端播放器领域,尤其是Andriod操作系统的智能终端.
背景技术
目前,市场上大多数Android智能终端均不支持通过RTSP协议连接播放音频和视频流. 即使支持它们,RTSP交互协议也无法修改,并且不能在某些特殊的应用场景(例如通过智能终端)中普及. 播放RTSP协议监控视频流. 针对当前问题,发明了基于Andriod系统的通用RTSP流播放器.
发明内容
本发明的目的是提供一种播放器,该播放器与多个版本的Andriod操作系统兼容,支持ARMv6架构和更高版本的ARM芯片平台,并且能够响应当前问题播放RTSP音频和视频流.
本发明的技术方案是: 基于Android系统的通用RTSP流播放器,包括音频和视频解码库,基于C语言的动态库和基于Java语言的JAR库.
音频和视频解码库用于数据获取和数据解码;
基于C语言的动态库用于连接音视频解码库和基于Java语言的JAR库,以显示由音视频解码库解码的数据;
基于Java语言的JAR库用于函数调用,参数传递和播放器控制.

在上述解决方案中视频播放器jar版,音频和视频解码库包括工具模块,多路分解模块,解码模块和图片缩放模块.
在上述解决方案中,工具模块为音视频解码库的每个模块提供了通用的功能接口,以实现源代码的重用;解复用模块对文件或网络数据进行解包,以提取音频和视频数据;该模块解码音频和视频数据,并输出Android系统支持的音频和视频原始数据.
在上述解决方案中,基于C语言的动态库由三部分组成: jni模块,音频输出模块和视频输出模块.
在上述解决方案中,JAR库由两部分组成: javaapi模块和jniapi模块.
上述方案中,基于Android系统的通用RTSP流播放器的播放方法:
第1步: 初始化每个功能模块;
步骤2: 工具模块获取音频和视频数据;
步骤3: 解复用模块将采集到的数据解包,以分离出音频和视频数据;
步骤4: 解码模块对分离出的数据进行解码并将其传输到动态库中;
第5步: 动态库播放并显示解码的音频和视频数据.

在上述解决方案中,播放器的播放方法在第一步中初始化每个功能模块时首先调用JAR库中的javaapi模块,然后javaapi模块调用jniapi模块中的功能,然后调用Describe动态库中的每个模块.
在上述解决方案中,即播放器的播放方法,第一步结束后,RTSP地址通过jni方法传递到音频和视频解码模块中的工具模块. 工具模块获取地址后,将使用套接字和RTSP服务器. 交互式身份验证和数据获取.
上述方案中,在播放器的播放方法中,第四步,解码模块从流服务器返回的SDP域信息中提取数据格式,并设置解码库的参数.
在上述解决方案中,播放器的播放方法,音频和视频解码库可以处理ARM体系结构中的浮点和多媒体指令.
与现有技术相比,上述技术方案的有益效果: 由于基于C语言的音视频解码库和动态库在C空间中运行,提高了音视频解码效率;支持RTSP协议Play的音频和视频流;支持Android2.0及以上操作系统;支持ARMv6架构及以上ARM芯片平台,因此具有通用性.
图纸说明
图1是本发明的;
图. 图2是本发明的工作流程图.
具体实现
如图1所示,基于Android系统的常规RTSP流播放器包括音频和视频解码库,基于C语言的动态库和基于Java语言的JAR库.

音视频解码库由工具模块,解复用模块,解码模块和图片缩放模块四个部分组成.
基于C语言的动态库由三部分组成: jni模块,音频输出模块和视频输出模块.
JAR库由两部分组成: javaapi模块和jniapi模块.
音频和视频解码库的工具模块为音频和视频解码库的每个模块提供了通用的功能接口,以实现源代码的重用;解复用模块对文件或网络数据进行解包,以从中提取音频和视频数据;解码模块对音频和视频数据进行解码,以输出Android系统支持的原始音频和视频数据.
基于C语言的动态库的jni模块提供了JAR库与音频和视频解码库之间的通信桥梁,确保Java和C语言可以相互调用;音频输出模块发送从音频和视频解码库输出的音频数据视频播放器jar版,进入系统底层进行播放. 视频输出模块将从音频和视频解码库输出的视频数据发送到系统的底层进行显示.
JAR库的javaapi模块为开发人员提供了可以调用的api函数; jniapi模块提供JAR库内部使用的api函数,并且不向公众开放. 您可以通过jniapi调用动态库中的函数.
图2显示了基于Android系统的常规RTSP流播放器的工作流程. 该工作流程包括初始化和回放.
初始化过程:
调用JAR库中的javaapi模块,然后该模块调用jniapi模块中的函数,然后通过jni方法调用动态库中每个模块的初始化方法. 初始化jni模块时,每个音频和视频解码库将称为“模块初始化方法”,到目前为止,所有模块都已初始化.
播放过程:

在java层中,RTSP地址通过jni方法传递到音频和视频解码库. 工具模块获取地址后,通过套接字与RTSP服务器进行交互身份验证和数据获取;解复用模块对工具模块Package获取的数据进行分解,分离出音视频数据;解码模块分别对音频和视频数据进行解码,然后将解码后的数据返回到动态库中的音频输出模块和视频输出模块以进行播放和显示.
为了使玩家达到理想的效果,技术解决方案克服了以下困难:
1. 为了使音频和视频解码库正确编译并在Android系统和ARM芯片平台上正确运行,已进行了以下修改:
a)设置音频和视频解码库的处理器参数,并指定ARM体系结构;
b)为音频和视频解码库设置跨平台编译选项;
c)在ARM体系结构中添加对浮点,多媒体和其他指令的支持.
2. 为了使工具模块正确编译,进行了以下修改:
由于Android编译工具不支持strict关键字,请在音频和视频解码库的源代码下修改config.h文件,将#definerestrictrestrict修改为#definerestrict;修改libavutil / libm.h文件,并删除所有静态方法;
3. 为了使多路分解模块正确编译并支持大于4GB的文件,进行了以下修改:
修改libavformat / file.c文件中的file_seek()函数,并将lseek()函数更改为lseek64()函数,以便多路分解模块支持大于4GB的文件;
4. 为了解析流媒体服务器的数据格式,请修改libavformat / rtsp.c文件. 修改后,将解析流服务器发送Describe命令后返回的SDP域信息,并从中提取数据格式,以设置解码库的参数,使音视频解码更加可扩展.
下载完整的专利技术内容需要扣除积分,VIP会员可以免费下载.
我不想注册,请点击直接下载立即登录,下载文献升级会员,免费下载
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/bofangqi/article-163316-1.html
早日回到大陆祖国母亲的怀抱
然后可以直接干过去