基于Android的嵌入式视频系统.doc

上传人:文库蛋蛋多 文档编号:2392642 上传时间:2023-02-17 格式:DOC 页数:35 大小:2.20MB
返回 下载 相关 举报
基于Android的嵌入式视频系统.doc_第1页
第1页 / 共35页
基于Android的嵌入式视频系统.doc_第2页
第2页 / 共35页
基于Android的嵌入式视频系统.doc_第3页
第3页 / 共35页
基于Android的嵌入式视频系统.doc_第4页
第4页 / 共35页
基于Android的嵌入式视频系统.doc_第5页
第5页 / 共35页
点击查看更多>>
资源描述

《基于Android的嵌入式视频系统.doc》由会员分享,可在线阅读,更多相关《基于Android的嵌入式视频系统.doc(35页珍藏版)》请在三一办公上搜索。

1、基于Android的嵌入式视频系统 摘要本课题设计了一个基于Android的嵌入式视频系统。该系统主要实现了视频的采集、处理、存储、播放和传输。采集是通过Android自带的照相机和麦克风分别对图像和声音进行采集;处理是对所采集到的图像和声音的编码和格式转换;存储是对处理完成的视频的保存;播放是实现对视频的开始播放、暂停、重播、停止功能;传输是手机与电脑之间的数据的传输。本设计基本实现了所要达到的目标,结构比较简单,基本的容错设计也大概地实现,其效果还是满足要求的。关键词:Android系统 视频采集 视频播放AbstractThis project is to mark a video sy

2、stem which is based on the android operating system .This system can capture video,handle video,save video,play video and transfer video. Video capture is collecting images and sound from the camera and microphone which bring their own Android .Video processing is encoded images and sounds which are

3、 been collected .Video storage is saving the video which is worked.Video playing is to mark true that the video can be played ,plused,replayed and stoped.Video transmission is transmitted data from the computer to the mobile phone.This design is realized the goal.It is not complex, every functions l

4、ink compact, the essential tolerant designs is realized, and this system basically met needs.Key words: Android system Video capture Video playing目录1.引言42. 嵌入式视频设计总体设计52.1视频嵌入式系统总体设计52.2嵌入式系统的概念62.2.1嵌入式系统的特点62.2.2嵌入式系统的历史72.2.3嵌入式系统的组成73.视频系统硬件设计83.1视频基于硬件的设计框图83.2 ARM Cortex-A8简介83.3 TI OMAP3630处理

5、器特性94.软件开发平台的搭建104.1 java JDK 安装104.2 Eclipse安装以及ADT工具的安装104.3 Android SDK 的安装以及系统的设置114.4 Android真机调试的相关设置125.视频系统的软件设计155.1软件画面布局设计155.1.1视频的刻录布局155.1.2视频的播放布局165.2 两个Activity之间的切换设计185.3视频的刻录功能设计185.4视频的播放功能设计195.5其他功能的设计206.软件调试和运行226.1真机画面的监控226.2视频刻录236.3视频播放236.4调试24谢辞25参考资料25附录261.引言电子行业从单片机

6、到嵌入式系统,特别是近几年嵌入式系统技术的日渐普及,嵌入式系统无疑成为了当前最热门最有发展前途的IT应用领域之一,伴随着巨大的产业需求,我国嵌入式系统产业的人才需求量也是一路高涨,嵌入式开发成为近几年最热门最受欢迎的职业之一。Android是基于Linux平台开源手机操作系统名称,该平台由操作系统、中间件、用户界面和应用软件组成,目前在市场可谓是如日中天。在Android发展的过程中摩托罗拉付出的是核心代码,Google付出的是公关和品牌效应,当然还有它的google app,但是Google掌握了Android Market以及通过Android google apps获得的大量用户。 An

7、droid以其特有的开放性优势越来越受到人们和智能手机厂商的关注,对于第三方软件开发商来说,Android是一个真正意义上的开放性移动设备综合平台,Android系统是免费向开发人员提供的,这样就避免了开发中专利权的障碍。因此就能为第三方软件开发商省下一大笔钱。对于设备制造商来说,Android是一个免费的平台,每制造一台手机时,那些支付给手机系统制造商的费用也省去了,这样就降低了手机的制造成本,同时也就降低了手机价格,提高了市场竞争力。同时Android平台支持各种先进的网络、绘图、3D处理能力,可以用来提供更好的使用者体验。这一系列的优势真正的让Android成为最佳的手机应用平台。此次毕

8、业设计是基于Android平台的嵌入式视频系统的开发,这是就当作我学习基于Android平台开发应用程序的第一步吧!2. 嵌入式视频设计总体设计2.1视频嵌入式系统总体设计1.总体设计流程图如图2.1所示 图2.1 设计流程系统需求分析:根据需求,确定视频系统所要达到的目标,最后制定设计说明。体系结构设计:描述系统对硬件、软件的功能需求,以及包括这两方面的选型等。软硬件设计:根据体系结构设计,对软硬件进行详细设计,其中大部分都集中在软件设计上。系统集成:对系统的软件和硬件集成在一起进行综合调试,发现不足时实施改进。系统测试:对设计好的系统进行测试,检验系统是否满足设计目标。2.体系结构如图2.

9、1.1所示 图2.1.1 体系结构本设计硬件平台的是基于ARM Cortex-A8架构的TI OMPA3630处理器的手机,软件开发平台选择了Android操作平台,通过Eclipse编译视频系统程序。2.2嵌入式系统的概念根据电气和电子工程师协会的定义,嵌入式系统是“控制、监视或者辅助装置、机器和设备运行的装置”。从中可以看出嵌入式系统是软件和硬件的综合体。目前国内一个普遍被认同的嵌入式系统的定义是:以应用为中心、以计算机技术为基础、软件硬件可裁剪、适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用的计算机系统。2.2.1嵌入式系统的特点从上述对嵌入式的概念的理解上看,嵌入式应该还具

10、有以下几个方面的特点:1.系统内核小由于嵌入式系统一般是应用于小型电子装置,系统资源相对比较有限,所以内核较之传统的操作系统要小得多。比如ENEA公司的OSE分布式系统,内核只有5KB而Windows的内核则要大得多。2.专用性强嵌入式系统的个性化能力很强,其中的软件系统和硬件的结合非常的紧密,一般要针对硬件进行系统的移植,即使在同一品牌、同一系列的产品中也需要根据系统硬件的变化和增减不断进行修改。同时,针对不同的任务,往往需要对系统进行较大的更改;程序的编译下载要和系统相结合,这种修改和通用软件的“升级”是完全不同的概念。3.系统精简嵌入式系统一般没有系统软件和应用软件的明显区分,不要求其功

11、能的设计及实现过于复杂,这样一方面利于控制系统成本,同时也利于实现系统的安全。4.高实时性高实时性的操作系统软件是嵌入式软件的基本要求。而且软件要求固化存储,以提高速度。软件代码要求高质量和高可靠性。5.多任务的操作系统嵌入式软件开发要想走向标准化,就必须使用多任务的操作系统。嵌入式系统的应用程序可以没有操作系统而直接在芯片上运行;但是为了合理地调度多个任务,利用系统资源、系统函数以及专家库函数接口,用户必须自行选配RTOS(Real Time Operating System)开发平台,这样才能保证程序执行的实时性、可靠性,并减少相应的开发时间,同时保障软件的质量。 6.专门的开发工具和环境

12、嵌入式系统开发需要专门的开发工具和环境。由于嵌入式系统本身不具备自主开发能力,即使设计完成以后,用户通常也不能对其中的程序功能进行修改,因此必须有一套开发工具和环境才能进行开发,这些工具和环境一般是基于通用计算机上的软硬件设备以及各种逻辑分析仪、混合信号示波器等。开发时往往有主机和目标机的概念,主机用于程序的开发,目标机作为最后的执行机,开发时需要交替结合进行。 2.2.2嵌入式系统的历史纵观嵌入式技术的发展,经历了从简单的处理器到单板机、单片机、再到加载了操作系统的开发板这样一个过程,其经历大致分为以下3个阶段:以单芯片为核心的可编程控制器形式的系统,同时具有检测、伺服、指示设备相配合的功能

13、;以嵌入式CPU为基础、以简单操作系统为系统核心的嵌入式系统;以嵌入式操作系统为标志的嵌入式系统。最后一个也正是我们现在所处的阶段,该阶段嵌入式操作系统能运行于各种不同类型的微处理器,兼容性好;操作系统内核精小、效率高,并且具有高度的模块化和扩展性;具备文件盒目录管理、设备支持、多任务、网络支持、图形窗口以及用户界面等功能;具有大量的应用程序接口,开发应用程序简单;嵌入式应用软件丰富。2.2.3嵌入式系统的组成一个完整的嵌入式系统由硬件和软件俩部分组成如图2.2.1,目前基于各种嵌入式处理器的硬件平台已经有了比较成熟的技术,同时嵌入式操作系统屏蔽了底层硬件的复杂性,使得开发者通过操作系统提供的

14、接口函数就可以完成大部分工作,因此大大简化了嵌入式系统的开发过程,使得嵌入式系统开发者可以从设计硬件的开发平台中解脱出来,将主要精力放在实现特定的应用程序上。此次设计更是由于使用了手机本身作为硬件平台,各项硬件都是俱全的,开发时所遇到的问题更加是十分的切合手机本身,此次开发软件也就成了主体所在。详细的开发说明下面自然涉及到。嵌入式应用程序嵌入式软件嵌入式操作系统嵌入式硬件微处理器外设 图2.2.1嵌入式系统组成结构3.视频系统硬件设计3.1视频基于硬件的设计框图本次设计直接使用手机来进行,硬件方面的准备就显得十分的简单,手机所采用的处理器是德州仪器的TI OMAP3630,视频刻录时是通过50

15、0万像素的摄像头还有麦克风来采集图像和声音,手机自带有MicroSD卡,视频的播放是直接在手机屏幕上显示。视频系统的硬件设计框架如图3.1.1所示: 图3.1.1视频系统的硬件框架3.2 ARM Cortex-A8简介Cortex-A8处理器是ARM公司日前发布最新处理器,它将给消费和低功耗移动产品带来重大变革,使得最终用户可以享受到更高水准的娱乐和创新。在于美国加州举行的第二届ARM开发者年度大会上发布的ARM Cortex-A8处理器最高能达到2000DMIPS,使它成为运行多通道视频、音频和游戏应用的要求越来越高的消费产品的最佳选择。支持智能能源管理(Intelligent Energy

16、 Manger,IEM)技术的ARM Artisan库以及先进的泄漏控制技术使得Cortex-A8处理器实现了非凡的速度和功耗效率。Cortex-A8处理器得到了大量ARM技术的支持,从而能够实现快速的系统设计。这些支持包括:RealView DEVELOPOER软件开发工具,RealView ARCHITECT ESL工具和模型,CoreSight调试和追踪技术,以及对OpenMAX多媒体处理标准的软件库支持。Cortex-A8处理器是ARM的第一款超标量处理器,具有提高代码密度和性能的技术,用于多媒体和信号处理的NEON技术,以及用于高效地支持预编译和即时编译Java及其他字节码语言的Ja

17、zelle®运行时间编译目标(RCT)技术。德州仪器和ARM在第二届ARM开发者年度大会上共同宣布德州仪器第一个获得全新的ARM Cortex-A8处理器的授权。德州仪器同时也是在这一新处理器开发过程中领先的ARM合作伙伴。德州仪器将把Cortex-A8处理器用于其众多下一代超低功耗3G调制解调器以及高性能的OMPATM应用处理器。此次设计手机核心处理器就是德州仪器的TI OMPA3630。3.3 TI OMAP3630处理器特性TI OMAP3系列处理器采用了ARM Cortex-A8架构,可提供比基于ARM 11的处理器多至三倍的性能增益,同时使得3G手持终端具有可与笔记本电脑媲美

18、的生产力以及先进的娱乐功能。OMAP3630应用了更先进的45纳米制造工艺,集成了PowerVR SGX530显示核心,在提供最高1GHz运行主频的同时,能够带来最高75%的图形性能提升以及25%的电力节省。通过图3.3.1,我们可以看到,由于缺少了图形处理器,所以36xx系列中的入门款式:OMAP 3610并未提供高像素视频记录以及视频回放性能,倒是高达720MHz的处理器运行频率,可以成为2010年推出的众多非主打影音功能智能手机的核心;而OMAP 3620以及OMAP 3630两款处理器则都具备着720MHz主频处理器以及DSP处理器,在视频解析能力方面也都达到了720P的水准,不同的则

19、是OMAP 3620型处理器提供了最高VGA分辨率的显示支持,而OMAP 3630型处理器则提供了最高XGA分辨率(1024*768像素)显示支持能力。 图3.3.1 OMAP3介绍OMAP 36x0系列处理器特性:45nm CMOS工艺 ARM Cortex - A8核心处理器IVA2+(图像,视频,音频)多媒体加速器 PowerVR SGX图形核心2D/3D加速(OMAP3610未配备) 兼容OpenGL ES 2.0(除OMAP3610) 电压,频率和功率动态控制TWL4030电源管理/音频编解码器(除OMAP3640,使用TWL5030配套设备)OMAP3630架构可见图3.3.2 图

20、3.3.2 OMAP3630架构图如图OMPA自带Video DAC来转换输出视频,用McBSP多通道缓冲串行口来传入音频的数据,Camera-Serial接口用来输入摄像头采集到的数据。4.软件开发平台的搭建4.1 java JDK 安装JDK是Java语言的原创者推出的原始开发环境。采用JDK开发Java程序能够很快理解程序中各部分代码之间的关系,有利于理解Java面向对象的设计思想。在此之前,我们就必须先完成此项工作及在Windows上安装JDK,首先访问Oracle的官方网站下载页面,网址为JAVA_HOME=C:Program FilesJavajdk1.6.0_27(安装路径)cl

21、asspath=.;%JAVA_HOME%lib之后修改环境变量PATH,在前面加上:%JAVA_HOME%bin;完成后测试一下在命令提示符中输入java -version 会显示图 4.1.1则表示完成了。 图 4.1.1 Java安装测试4.2 Eclipse安装以及ADT工具的安装首先下载Eclipse,直接解压放到了C:Program FilesJavajre6eclipse下,之后打开eclipse设置工作路径:C:Program FilesJavajre6eclipseworkspace下面重要的来了,由于学校校园网不流畅我直接下载了ADT-17.0.0.zip,准备离线安装AD

22、T插件。打开eclipse,选择Help Install New Software.之后然后选择Add.在name项中随便取一个名字如ADT17,之后点击Archiv.找到下载的ADT-17.0.0.zip 见图 4.2.1。点击OK,然后选择Select all之后一路的next和OK最后会根据提示重启下eclipse,则完成了ADT的安装,至于如何看是否完成则是选择 Window Preferences打开首选项面板看是否有Android,有的话就成功了,至于会跳出要求装SDK则在下面进行安装了。 图 4.2.1安装的步骤4.3 Android SDK 的安装以及系统的设置首先下载最新的S

23、DK:android-sdk_r17-windows,直接解压到C:Program FilesJava后修改环境变量PATH,在前面加上:C:Program FilesJavaandroid-sdk-windowstools;然后Window Preferences弹出“Preferences”对话框,单击左侧“Android”列表项,单击右侧“Browse”按钮,选择SDK路径(例如C:Program FilesJavaandroid-sdk-windows),单击“apply”按钮,退出SDK安装提示对话框,单击“OK”按钮,退出“Preferences”对话框。下面是打开Window A

24、ndroid SDK Manager选择:“Tools”下“Android SDK platform-tools” “Extras”下“Google USB driver package” “Android 2.3.3”单击“Install 22 packages”按钮 选中“Accept All” (如果选择“Accept”,可能漏掉“Google USB driver package”) 单击“Install”按钮之后就是无尽的等待,完成后关闭,见图4.3.1。 图4.3.1Android SDK 更新界面SDK装好后还要修改下环境变量PATH,在前面加上:C:Program FilesJ

25、avaandroid-sdk-windowsplatform-tools;以上完成了硬件的基本搭建,下面是关于调试时真机的使用。4.4 Android真机调试的相关设置因为视频的采集牵扯到摄像头的使用,模拟器不好使,所以使用的本人的三星手机,自带的2.3.6版的Android系统。首先真机的模拟先为手机设置一下USB的调试功能在“设置 应用程序 开发 USB调试”设置之后USB连接手机和电脑,并确保成功,如何查看手机是否连接呢,在Window下执行C:adb devices 见图4.4.1 图4.4.1 手机与电脑连接测试设置应用程序为调试模式。操作: 编辑AndroidManifest.xm

26、l 增加调试参数android:debuggable=true, 如下:见图4.4.2 图4.4.2真机调试程序位置执行真机调试操作:ECLIPSE调试对话框中,Target窗口中选择Manual,点击debug按钮,选择真机设备,开始调试。见图4.4.3和图4.4.4图4.4.3 真机调试运行前的设置1 图4.4.4 真机调试运行前的设置25.视频系统的软件设计5.1软件画面布局设计视频的刻录和播放软件工程文件主要包括src文件夹(Java源码)、res文件夹(资源文件)和AndroidMainfest.xml(程序清单)。这个软件要实现视频的刻录和视频的播放,我准备用两个Activity来

27、实现,一个实现视频的刻录,一个实现视频的播放。不同的Activity之间通过Intent进行通信和相互调用。5.1.1视频的刻录布局视频的刻录设置有刻录Button、完成Button还有向另一个Activity跳转的Button。当然还有一个SurfaceView,其布局代码(main.xml)如下: 为了实现屏幕的横放是在AndroidManifest.xml里加入代码:android:screenOrientation=landscape总体情况可见图5.1.1。 图5.1.1视频刻录界面5.1.2视频的播放布局视频的播放设置有一个TextView显示文件目录提示,一个EditText用来

28、输入文件的路径,4个Button分别用来对视频进行播放、暂停、重播和停止,还有一个SurfaceView。总体情况见图5.5.1 ,其布局代码(play.xml)如下: 5.2 两个Activity之间的切换设计两个Activity是通过intent来进行通信和相互调用的。点击播放切换,程序会由第一个Activity跳转到另一个,见图5.1.1,按钮的触发程序如下:Intent intent = new Intent(); intent.setClass(ZxvideoplayActivity.this,playActivity.class); ZxvideoplayActivity.this

29、.startActivity(intent);由于有两个Activity那当两窗口切换的太多时程序终结的时候从哪个开始呢,我在播放切换的时候又加上了如下代码:intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 为第一个窗口也就是含有播放切换的窗口加标识,这个过程会把前面的栈中窗口清理,在之后的第一个窗口的finish();就能直接的退出程序了。5.3视频的刻录功能设计视频的刻录是对视频的采集、处理和存储,其流程如图5.3.1:开始设备初始化照相机和麦克风捕获图像和声音否传输到显示屏刻录是否完成是保存录像 图5.3.1视频刻录流程刻录前的预期准备代码

30、如下:mediaRecorder=new MediaRecorder();mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);mediaRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA); /从麦克风和照相机采集声音和图像mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4); /输出格式mp4mediaRecorder.setAudioEncoder(MediaRecorder.Audio

31、Encoder.DEFAULT); mediaRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.MPEG_4_SP); /音频和视频的编码方式File videoFile = new File(Environment.getExternalStorageDirectory(), System.currentTimeMillis()+.mp4);mediaRecorder.setOutputFile(videoFile.getAbsolutePath(); /按时间保存录好的视频mediaRecorder.setPreviewDisplay(

32、holder.getSurface();/照相机到surfaceViewstart.setEnabled(true);/刻录按钮能用stop.setEnabled(false);/停止按钮不可用mediaRecorder.prepare();/预期准备之后便是按钮的响应了。还有刻录涉及到了几个权限要加入到AndroidManifest.xml中至此刻录基本完成,可见图5.1.1。 5.4视频的播放功能设计视频的播放是对视频的播放、暂停、重播和停止这一系列功能的实现,其流程可见图5.4.1 。 图5.4.1播放流程图视频目录的查询首先是先定义:private EditText filenameT

33、ext;private String filename;然后在屏幕上找到布局时的EditText显示:filenameText = (EditText)this.findViewById(R.id.filename);将找到的视频名放入:filename = filenameText.getText().toString();之后的视频的路径的传输则放在下面的play()函数中;单独的准备的播放函数代码:private void play() throws IOException File videofile = new File(Environment.getExternalStorageD

34、irectory(), filename);/创建一个文件存放视频目录mediaPlayer.reset();/重置为初始状态mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);mediaPlayer.setDisplay(surfaceView.getHolder();/采用surfaceView来显示画面mediaPlayer.setDataSource(videofile.getAbsolutePath();/绝对路径mediaPlayer.prepare();/缓冲mediaPlayer.start();/播放之后是按钮的响应了,可见图5.5.1 。5.5其他功能的设计此程序最基本的容错功能先是sdcard卡的判定:if(!Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)Toast.makeText(playActivity.this, R.string.sdcarderror, 1).show();return ;

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号