Android 平台上音视频系统的研究及播放器开发.pdf(2)

电脑杂谈  发布时间:2019-06-16 15:04:01  来源:网络整理

realplayer播放器下载_下载realplayer播放器_realplayer插件

还实现了其它模块中的如下功能:异常处理和播放列表;播放器主界面中播放界 面缩放、播放控件窗口、电量和时间显示、说明书及播放退出;暂停/播放切换、 快进、快退、切换到上一部、切换到下一部及音量控制等播放控制功能;菜单中 的播放、删除、删除全部、重命名及详细信息菜单项。第六章 总结与展望本章对本文的工作和取得的成果进行了总结,并提出进一步改进和完善本文 中视频播放器的方法。第二章 开发平台及相关技术5第二章 开发平台及相关技术Android 系统,一个谷歌开发出来的智能手机系统,是本文中音视频系统的研 究和视频播放器的开发平台。Android是一个真正意义上的开源智能手机操作系[1] 统,该系统一经推出立即受到了全球移动设备厂商和开发者的热捧 。本章除了介 绍 Android 系统,同时还介绍本文中,也是 Android 系统中频繁使用的JNI 技术和 Binder (Android 系统进程间通信方式)机制。2. 1 Android 系统Android 是以 Linux 为核心的手机操作平台,它为全球智能手机市场带来了很 大的变化,由开发手机联盟来开发和维护Android 系统的源代码。

荣耀6 plus内置3100mah不可拆卸电池,网络制式分为移动、联通、电信三大4g单版本,双4g版同时支持移动/联通双4g网络realplayer插件,双版本均支持双卡双待,运行基于安卓4.4深度定制的emui 3.0系统界面。从第一篇的图赏知晓,华为p8支持双卡双待,而该机提供标准版和高配版两个版本,两个版本均有移动、联通双4g版本,而高配版还提供电信4g版本(移动、联通就仅支持2g了)。9300有联通版定制机跟国际版国际版的有韩,美,港,日,欧跟亚太几个版本,韩版:有四核处理器+2gb运行内存+32gb存储空间,配置是所有版本中最强的,但不方便刷机美版:比起韩版就差一分,处理器只有双核 存储空间剩下16g日版:跟美版一样,但储存空间有32g 而且价格便宜一些 但机身多出一根天线港版:有四核处理器,运行内存只有1g 储存空间有16g欧版跟亚太版是最常见的,跟港行没什么区别,但欧版刷机最简单联通版i9300:是定制机,机子本身有内置联通软件,运行内存1g,储存空间16g ,四核处理器,装上联通卡可以使用联通的3g网络电信版i939:跟联通一样是定制机,硬件一样,装上电信卡可以使用电信的3g网络移动版i9308:跟以上两个版本一样是定制机,硬件一样,装上移动卡可以使用移动的3g网络其中联通版上网快,电信版通话方便,移动信号好其中电信版,移动版跟联通版只有行货,没有水货,价格是移动大于联通大于电信定制机刷机难度是移动大于电信大于联通,纯属手打,采纳一下吧此文是否有帮助:。

还有一种划分方法是层次法,把软件分为很多层,软件是按照层次关系进行操作,比如对于操作系统就必须按照层次进行分析,层次法的好主播)、pdd驱动开发(pdd是前职业选手,著名lol主播,弹幕量大,观众百万)等模式的驱动开发,熊猫快速步入2.0时代,技术架构也有了更稳固的改进,新的phs(panda high-perfomace service熊猫高性能服务体系)设计思路是增加架构层次,明确微服务边界,基础组件从外部依赖到内部自研,架构层次宏观层面分为端、接入层、平台服务化、中间层、基础层五个层次。

基本的思路是按照功能进行划分, 理解这些功能块之间的如何进行通信. 这些组件之间的通信通道就构成了各个组件的边界, 这些边界形式的描述为接口.接口并不是编程中的一个新的概念. 从我们的第一个 "helloworld" 程序开始我们就一直在不知不觉的使用它, 这里的接口就存在于我们的应用程序和打印程序之间. 应用程序使用 stdio 库提供的接口来把 "hello world" 字符串打印到屏幕上. xpcom 与 "helloworld" 程序的不同之处在于 xpcom 会在运行时刻找到这个屏幕打印的功能, 而 xpcom 事前根本就不需要在编译的时刻了解 stdio 库提供了什么东西.接口允许开发人员把功能的具体实现封装在组件内部, 而客户程序不需要了解这个功能是如何实现的, 它只需要使用它就行了.接口与按照契约编程一个接口在组件与客户程序之间达成契约. 并没有任何强制措施保证认同这个契约, 但是忽略它会是致命的. 在基于组件的编程中, 组件保证它提供的接口是不变的 - 不同版本的组件都要提供同样的访问方法 - 这就与使用它的客户程序达成了一种契约. 从这种角度来说, 基于组件的编程通常也称为按照契约编程.接口与封装组件边界之间的抽象对软件的可维护性与可重用性是致关重要的. 举个例子来说, 考虑下面一个没有很好封装的类. 在下面的例子中, 使用可自由访问的 public 的初始化方法可能会出问题.someclass类初始化class someclass{ public: // constructor someclass。系统应用平台模块间完全独立,接口清晰,内部的业务流程升级和改造与其它模块无关,所有模块基于j2ee 架构组件,并同时支持xml、web services 开发,并为二次开发提供开发灵活的扩展性能和接口等,因而,应用极具扩展性和升级性。软件项目通常采用层次化结构开发和模块化开发,例如,一个嵌入式软件项目可能有驱动层,操作系统层,功能层,应用程序层,每一个层使用它的下层提供的接口,并为它的上层提供调用接口。

应用程序框 架还提供了丰富又可扩展的视图(Views) ,可以用来构建应用程序,包括列表、编 辑框、文本框、按钮等基本的 UI 元素;提供访问本地字符串、图形及布局文件等 资源的资源管理器(Resource Manager) ;使得应用程序可以在状态栏中显示提示信 息的通知管理器(Notification Manager) ;用来管理应用程序生命周期并提供导航回 退功能的活动管理器(Activity Manager)等。3 .系统运行库层系统运行库层包括系统本地库和 Android 运行环境。Android 系统本地库包含 一些 C 或 C++库,这些库能被 Android 系统中不同的组件使用,他们通过 Android 应用程序框架为应用程序开发者提供服务。这些本地库包括:专门为嵌入式 Linux 设备定制的系统 C 库;基于 PacketVideo 的多媒体库 OpenCore,本文中研究的音 视频系统就调用到了这个库来实现媒体文件的格式解析和音视频流的解码;负责 显示相关的 SurfaceManager ,它也负责 2D 和 3D 图层的无缝融合;提供底层 2D 图形引擎的图形库 SGL;基于 OpenGL ES 1.0 API 实现的 3D 库,该库可以使用硬 件 3D 加速或者高度优化的 3D 软加速;实现位图和矢量字体显示的FreeType 库; 给所有应用程序提供强大而轻量级关系引擎的 SQLite 等[16] 。

Android 运行环境包括了一个提供了 Java 编程语言核心库大多数功能的核心 库,由Dalvik 虚拟机和基础的 Java 类库组成。Dalvik 是 Android 中使用的Java 虚 拟机,每一个 Android应用程序都在它自己的进程中运行,都拥有一个独立的 Dalvik 虚拟机的实例。Dalvik是基于寄存器的,允许在有限的内存中同时运行多 个虚拟机实例。Dalvik 虚拟机执行扩展名为.dex 的Dalvik 可执行文件,dex 是专门 应用于 Dalvik 的一种压缩格式,适合内存和处理器速度有限的系统。应用程序中 的所有的类都经由 Java 编译器编译,然后通过 SDK 中的 dx 工具转化成 dex 格式 由虚拟机执行。Dalvik 虚拟机依赖于 Linux 内核的一些功能,比如线程机制和底层 内存管理机制。4 .Linux 内核及驱动层Android 基于 Linux 2.6 内核提供核心系统服务,如内存管理、进程管理、安 全性、网络协议栈和驱动模型[18] 。Linux内核也同时作为硬件和软件之间的抽象 层。Android 在标准的 Linux 内核中还增加了Android 专有驱动和使用的设备驱动 等驱动程序,如 Binder 驱动、电源管理、轻量级的 log 驱动、音频系统驱动等。

8Android 平台上音视频系统的研究及播放器开发2.2 JNI 技术JNI (Java Native Interface ,Java 本地调用)允许 Java 代码和 C、C++等其它 语言编写的代码进行交互[20] 。JNI 的首要目标是在Android 平台上使得Java 语言编 写的应用程序可以通过 JNI调用本地方法,本地方法存放在库文件中。Windows 平台上使用的是 dll 后缀的库文件,linux 平台上使用的是 so 后缀的库文件。在 Android 上层的 Java 程序中,通过 System.loadLibrary(*.so 的文件名);载入 so 文件,这是因为应用层的 Java 类是在 Dalvik 虚拟机上执行的,而用 C 或 C++ 语言编写的源文件经过编译生成的 so 文件不在虚拟机上执行。Android 应用层中 的类都是以 Java 语言编写的,这些 Java 类经由 Java 编译器编译,然后通过 SDK 中 dx 工具转化成由虚拟机执行的.dex 文件。Dalvik 虚拟机在 Android 平台里扮演 很重要的角色,在执行 Java 类的过程中,当 Java 代码需要与 C 或 C++编写的代码 沟通时,虚拟机就会去载入 so 库,让 Java 语言编写的函数顺利地调用到 C 或 C++ 语言编写的函数。

此时虚拟机扮演着桥梁的角色,让 Java 语言与其它语言能通过 JNI 相互沟通。JNI 的书写步骤如下:1.编写一个含有 native 方法的java 类。2 .使用j avac 命令编译所编写的java 类。3 .使用j avah 生成相应的 C++头文件,扩展名为 h 的文件。4 .使用 C 或 C++语言编写一个实现了本地方法的源文件,5 .编译源文件生成动态连接库。6 .将库文件拷贝到jav a 工程目录下,运行java 程序。2.3 Binder 机制Binder 机制是 Android 系统进程间通信方式,是 Android 实现的一套轻量级的 IPC (Inter-Process Communication ,进程间通信)机制[21] 。Android 的每个 Activity 一般都是一个独立的进程,每个 Service 也是一个独立的进程,它们之间交互数据 属于 IPC ,Service 很多都是通过 Binder 机制来和客户端通讯的。一个 IPC 通讯可 以被理解成客户端-服务器模式,客户端和服务器端通过 Binder 交互数据,通过打 开 Binder 写入数据、从 Binder 读取数据来完成通讯。

服务器端忙于处理攻击者伪造的tcp连接请求而无暇理睬客户的正常请求(毕竟客户端的正常请求比率非常之小),此时从正常客户的角度看来,服务器失去响应,这种情况我们称作:服务器端受到了synflood攻击(syn洪水攻击)。实际上如果服务器的tcp/ip栈不够强大,最后的结果往往是堆栈溢出崩溃---即使服务器端的系统足够强大,服务器端也将忙于处理攻击者伪造的tcp连接请求而无暇理睬客户的正常请求(毕竟客户端的正常请求比率非常之小),此时从正常客户的角度看来,服务器失去响应,这种情况我们称作:服务器端受到了syn flood攻击(syn洪水攻击)。实际上如果服务器的tcp/ip栈不够强大,最后的结果往往是堆栈溢出崩溃---即使服务器端的系统足够强大,服务器端也将忙于处理攻击者伪造的tcp连接请求而无暇理睬客户的正常请求(毕竟客户端的正常请求比率非常之小),此时从正常客户的角度看来,服务器失去响应,这种情况我们称做:服务器端受到了syn flood攻击(syn洪水攻击)。


本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/bofangqi/article-106431-2.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    热点图片
    拼命载入中...