学位论文-—ios下视频点播app设计与实现.doc

上传人:教**** 文档编号:93040354 上传时间:2023-06-22 格式:DOC 页数:30 大小:2.66MB
返回 下载 相关 举报
学位论文-—ios下视频点播app设计与实现.doc_第1页
第1页 / 共30页
学位论文-—ios下视频点播app设计与实现.doc_第2页
第2页 / 共30页
点击查看更多>>
资源描述

《学位论文-—ios下视频点播app设计与实现.doc》由会员分享,可在线阅读,更多相关《学位论文-—ios下视频点播app设计与实现.doc(30页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、摘 要苹果iOS是苹果开发的手持设备操作系统。苹果公司最早于2007年1月9日的Macworld大会上发布这个系统,最初设计给iPhone使用,后来陆续套用到iPod touch、iPad以及Apple TV等苹果产品上。近年来,随着iphone和广泛应用,使许多企业发现,手机业务价值,促使越来越多的人开始学习开发手机。苹果手机软件基于Object_C编程语言编程Xcode的环境下发展。手机软件分为许多类型,包括视频类手机软件有很高的地位在手机软件的发展。本文基于iOS开发平台设计并且实现了一款手机视频App,展示如何通过利用Object_C 的工具函数实现对视频的各种处理。论述了视频的播放,

2、异步下载以及断点播放。关键字:视频播放 Dota Object_C AbstractApple iOS is the development of handheld devices operating system.Apple as early as January 9,2007 the Macworld conference this system,originally designed for use in iPhone,subsequently applied to the iPod touch,Apple,and Apple products such as Apple TV.In r

3、ecent years, with the iphone and it is widely used, make many businesses found that mobile phone on business value, prompting more and more people begin to learn the development on mobile phones. Apple mobile phone software based on Object_C programming language under the environment of Xcode develo

4、pment programming. Mobile phone software is divided into many types, including video class mobile phone software have the very high status in the development of mobile phone software.This article is based on the iOS(Internetworking Operation System) is designed and implemented a mobile video App, sh

5、ows how to use Object_C tool function on video processing. Discusses the video playback, asynchronous download and breakpoint.KeywordsVideo Display Dota Object_C目录第一章 绪论51.1 iOS系统概述51.2 iOS系统的构架51.2.1 Cocoa Touch层51.2.2 Media 层61.2.3 Core Services层61.2.4 Core OS层61.3 Object_C的介绍6第二章 总体设计82.1 系统各个功能模

6、块总体设计82.2 iOS的View的生命周期9第三章 详细设计113.1 基础类设计113.2 项目所需系统类库133.3 第三方SDK133.4 App运行首页面143.4.1 视频解说143.4.2 视频解说详情页面163.4.3 视频播放173.5 视频缓存183.6 直播203.7 Dota2 英雄介绍和物品介绍213.7.1 Dota2 英雄介绍213.7.2 Dota2 物品的介绍243.8 设置263.9系统测试283.9.1 功能模块测试283.9.2 功能整体测试28第四章 结论和致谢29第一章 绪论1.1 iOS系统概述iOS操作系统是iPhont、ipod touch以

7、及iPad设备的核心。构架iOS平台的知识与Mac OS X系统同出一辙,iOS平台的许多开发工具和开发技术也源自Mac OS X,都是以UNIX为基础。但开发者无需具备Mac OS X的开发经验就可以编写iOS的应用程序。iPhone软件开发包(SDK)为着手创建iOS应用程序提供所需要的一切。1.2 iOS系统的构架iOS架构和Mac OS的基础架构相似。站在高级层次来看,iOS扮演底层硬件和应用程序的中介。创建的应用程序不能直接访问硬件,而需要和系统接口进行交互。系统接口转而又去和适当的驱动打交道。这样的抽象可以防止应用程序改变底层硬件。iOS实现可以看作是多个层的集合,底层为所有应用程

8、序提供基础服务,高层则包含一些复杂巧妙的服务和技术。 图1-1 iOS的层1.2.1 Cocoa Touch层Cocoa Touch层提供了基本的系统行为支持,而且将你的工作量降到最低,当你想要实现更为复杂的行为和界面时,才考虑向下层探寻技术支持。UIKit框架:UIKit提供了一些程序运行所必须的关键对象,使得App能够捕捉用户输入和在屏幕上显示内容MapKit框架:iOS3.0引入该框架,该框架提供一个可被嵌入到应用程序的地图界面,该界面包含一个可以滚动的地图视图Address Book UI框架:iOS3.0引入该框架,可以利用该框架撰写电子邮件,并将其放入到用户的发件箱排队等候发送Me

9、ssage UI框架:显示创建或者编辑联系人的标准系统界面1.2.2 Media 层包含图形、音频、视频等技术。Quartz Core框架:包含Core Animation 是高级动画制作和混合技术,它使用经过优化的渲染路径实现复杂的动画和视觉效果Media Player框架:应用程序播放视频和音频内容AV Foundation框架:该框架包含的Object_C类可用于播放音频内容Core Graphics框架:(CoreGraphics.framework)包含Quartz 2D绘图API接口。该框架基于C接口,提供绘图功能1.2.3 Core Services层应用程序提供基础系统服务。可

10、能应用程序并不直接使用这些服务。但它们是系统很多部分懒以建构的基础。Foundation框架:为Core Foundation框架的许多功能提供Object_C封装Core Foundation框架:是一组C语言接口,它们为iOS应用程序提供基本数据管理和服务功能Core Location框架:可用于定位某个设备经纬度其他框架:CFNetWork框架、Core Data框架、Core Media框架、Core Telephony框架、Event Kit框架、Mobile Core Services框架、Quick Look框架、Store Kit框架、System Configuration框

11、架1.2.4 Core OS层Core层的底层功能是很多其他技术的构建基础。通常情况下,这些功能不会直接应用与应用程序,而是应用与其他框架。但是,在直接处理安全事务或和某个外设通讯的时候,则必须要应用到该层框架Accelerate框架:iOS4.0引入了Accelerate框架,该框架的接口可用于执行数字、大数字以及DSP算法External Accessory框架:iOS3.0引入了External Accessory框架,通过它来支持iOS设备与绑定附件通信。附件可以通过一个30针的基座接口和设备连接,也可以通过蓝牙连接Security框架:iOS系统不但提供内建的安全功能,还提供Secu

12、rity框架用于保证应用程序所管理之数据的安全。该框架提供的接口可用于管理证书、公钥、私钥以及信任策略。它支持生成加密的安全伪随机数。同时,它也支持对证书和Keychain迷药进行保存,是用户敏感数据的安全仓库1.3 Object_C的介绍Objective-C是非常“实际”的语言。它使用一个用C写成、很小的运行库,只会令应用程序的大小增加很小,和大部分OO系统使用极大的VM执行时间会取代了整个系统的运作相反,ObjC写成的程序通常不会比其原始码大很多。而其函式库(通常没附在软件发行本)亦和Smalltalk系统要使用极大的内存来开启一个窗口的情况相反。扩展的关键字:interface,类型声

13、明,类似于c+中的class,区别在于Object c中的声明与实现是强制分开的,interface关键字用于类型的声明,包括数据成员、方法声明、属性等。方法的参数传递采用中缀符的形式,利用“:”分割参数名和被传递参数,类型的声明以interface开头,以end结束。implementation,对应于interface的类型声明,implementation表示一个类型的实现过程,同样以end结束。class,是一个前向引用声明,类似于C+中的friend友元声明,其作用是告诉编译器其后面的字段代表一个类型名称,尽管不知道类型的具体实现,但是只需要将其作为一个类型名称处理即可。通常在使用复

14、合的结构时可以采用class来减少头文件的相互引用,如果出现循环依赖,则需要依靠class来避免引用的死循环。property,提供了外界对成员变量的访问接口,其本质是为某一个属性提供set和get操作。synthesize,与property对应,将一个外在属性与成员变量相关联,定义在 implementation中,如果属性名与变量名一致则可以省略变量名。Object_C采用引用计数的方法进行内存管理,由于所有的对象都集成与NSObject,因此所有的对象都可以接受NSObject的三个方法:retain方法将对象的引用计数加一并返回该对象,release将引用计数减一,retainCou

15、nt方法返回对象当前的引用计数。当采用new、alloc、copy方法创建一个对象时,它的引用计数被置为1,如果程序中对该对象进行操作,则应根据需要,通过调用retain和release方法来保证该对象在不需要的时候被清除。当一个对象的引用计数被置为0后,系统会自动向对象发送一个dealloc消息,将其占有的资源释放。通常情况下,如果一个对象的初始化过程调用了其他资源,则应该重写改对象的dealloc过程,保证在对象的销毁期正确释放这些资源。类别是为现有的类提供一个新的方法的方法,即使没有一个类的源代码,仍然可以向类中添加一个方法以方便使用。类别的主要目的有3个:将类的实现分散到多个不同的文件

16、或框架中,创建对私有方法的前向引用,向对象添加非正式协议。Object C中的协议类似于java中的接口,通过protocol关键字定义一个或多个需要遵从协议的对象实现的方法。第二章 总体设计2.1 系统各个功能模块总体设计iOS开发是基于Object_C语言,使用iOS SDK在Xcode开发环境下进行开发,其应用与iOS系统的移动设备上,本课题主要是本地应用,加入少量网络解析和分享功能。2.1.1 功能总体设计根据系统功能分析,可以分为五大模块:视频解说、视频缓存、直播、Dota2、设置。 图2-1 功能总体设计图2.1.2 主要页面设计页面一览表显示出了本程序的主要页面以及设计的类名,概

17、要的描述了页面的主要功能。表 2-1-2 页面一览表NO页面名称设计类名页面概要1程序启动页面RootViewController程序运行后,最开始进入的界面2视频解说页面VideoViewController可查看各个解说的视频3视频缓存页面VideoCacheViewController下载存储4直播页面TvViewController观看当前能看到的视频5Dota2页面DotaViewControllerDota2的英雄简介和物品简介6设置页面SettingViewController2.1.3功能一览表功能一览表显示出了项目的主要功能的实现,以及所需技术或所需添加的第三方SDK,简要的

18、描述了功能概要。表 2-1-3 功能一览表NO功能名称功能概要公共方法涉及页面1视频播放调用网上的视频文件播放,使用自定义的AVPlayer否直播页面和视频解说页面2网络平台分享使用微信的第三方接口否Dota2页面2.2 iOS的View的生命周期ViewController的职责,对内管理与之关联的View,对外跟其他的ViewController通信和协调。对于与之关联的View,ViewController总是在需要的时候才加载视图,并在不需要的时候卸载视图,所以也同时担当了管理应用资源的责任。理解ViewController的生命周期,能够有效的管理应用资源,ViewControlle

19、r的生命周期图:图2-2 UIView生命周期图第三章 详细设计3.1 基础类设计基础类中设计了一些公用方法功能,以及一些界面的实例化,主要有网络,网络监测,页面坐标大小设置。1) 微信分享微信分享,存在Dota2模块中的英雄详情页面和物品详情页面,英雄详情页面,主要分享英雄的图片以及英雄的简介,而物品详情页面分享的是物品的图片以及物品的简介,分享到微信朋友圈,没有设置链接。微信分享的AppKey: WXApi registerApp:wxd930ea5d5a258f4f;微信分享的验证: -(void) onResp:(BaseResp*)resp if(resp isKindOfClass

20、:SendMessageToWXResp class) NSString *strMsg; if (resp.errCode = 0) strMsg = 分享到微信朋友圈成功; else strMsg = 分享到微信朋友圈失败; UIAlertView *alert = UIAlertView alloc initWithTitle:strMsg message:nil delegate:nil cancelButtonTitle: 确定 otherButtonTitles:nil,nil; alert show; 微信分享: WXMediaMessage *message = WXMedia

21、Message message; message.title = myLab.text; /把myLabel的内容添加到消息中message setThumbImage:UIImage imageNamed:icon2x.png;/设置发送的图片样式 WXWebpageObject *ext = WXWebpageObject object; ext.webpageUrl = ;/测试链接 message.mediaObject = ext; SendMessageToWXReq* req = SendMessageToWXReq alloc init; req.bText = NO; req

22、.message = message; req.scene = WXSceneTimeline; /分享场景为朋友圈 WXApi sendReq:req;2) 网络监测网络监测,监测有没有网络,如果没有网络则网络不请求数据,只要有网络不管是3G还是Wifi都进行网络请求。+ (BOOL) connectedToNetwork Reachability *r = Reachability reachabilityWithHostName:; /通过百度测试网络 BOOL isReachable=YES; switch (r currentReachabilityStatus) /当前的链接状态

23、case NotReachable: / 没有网络连接 NSLog(没有网络); isReachable=NO; NSUserDefaults standardUserDefaults setObject:NSNumber numberWithBool:isReachable forKey:isConnected; NSUserDefaults standardUserDefaults synchronize; break; case ReachableViaWWAN: / 使用3G网络 NSLog(正在使用3G网络); break; case ReachableViaWiFi: / 使用Wi

24、Fi网络 NSLog(正在使用wifi网络); break; return isReachable; return YES;3.2 项目所需系统类库1) CoreGraphicss.framework(CoreGraphics.framework)包含Quartz 2D绘图API接口。该框架基于C接口,提供绘图功能。所有Xcode创建的工程都自带的一个类库。2) Foundation.framework 和 UIKit.frameworkios中,Cocoa的框架中最重要最基本的两个框架是Foundation和UIkit,和界面无关的基本类的属于Foundation框架,UIKit框架是和界面

25、相关的。 3)AVFoundation.framework该框架包含的Object_C类可用于播放音频内容。4)QuartzCore.frameworkQuartz核心框架(QuartzCore.framework)包含CoreAnimation接口,Core Animation是一种高级动画和合成技术。5) MediaPlayer.framework用于视频的播放框架。6) Libsqlite3.dylib数据库的框架。7)MobileCoreServices.framework;Mobile Core Services 框架 iOS 3.0引入了Mobile Core Services框架

26、 (MobileCoreServices.framework)。此框架定义统一类型标识符 (UTIs)使用的底层类型。8)CFNetwork.framework;CFNetwork 只是对 BSD socket 的进行了轻量级的封装,但在 iOS 中使用 CFNetwork 有一个显著的好处,那就是 CFNetwork 与系统级别的设置(如:天线设置)以及 run-loop 结合得很好。每一个线程都有自己的 run-loop,因此我们可以 CFNetwork 当中事件源加入到 run-loop 中,这样就可以在线程的 run-loop 中处理网络事件了。BTW,大名鼎鼎的 ASIHttpReq

27、uest 库就是基于 CFNetwork 封装的。3.3 第三方SDK数据库解析 FMDB微信分享 libWeChatSDK.a,WXApi.h,WXApiObject.h 网络监测 Reachability 3.4 App运行首页面3.4.1 视频解说图 3-4-1-1 视频解说人员列表首页面是整个程序的根视图,可以进入功能界面,并包括整个程序的设置页面,点击页面中最下面的图标可以进入别的页面。表3-4-1-2 页面参数、功能表项目NO.页面项目类型(继承的类)项目名摘要类型必须1VideoViewController 视频解说员的名字列表 UIViewController 是2VideoC

28、achViewController 下载视频的详情UIViewController 是3TvViewController 直播的介绍列表 UIViewController 是4DotaViewController Dota2英雄和物品综合页面UIViewController 是5SettingVIewController 用户设置页面UIViewController 是表3-4-1-3 页面动作事件表项目NO.动作处理名处理内容项目动作1ViewDidLoadViewDidLoad页面初始化初始化页面控件2ViewWillAppearViewWillAppearViewWillAppear设置

29、UITabBar分为5个大模块 3AppDelegate系统自带 页面跳转分别跳转到各个模块关键代码:UITabBar创建关键代码:NSString *path = NSBundle mainBundlepathForResource:Data_TabBar ofType:plist; /设置plist文件的路径NSDictionary*dic=NSDictionarydictionaryWithContentsOfFile:path; /把plist文件转为字典NSMutableArray *controllerArray = NSMutableArray allocinit; /初始化可变

30、数组 for (int i = 0; i = scrollView.contentSize.height) if (isRefresh = NO) isRefresh = YES; _currentPage += 10; NSString *url = NSString stringWithFormat: Video_Detail_Url,_uid,_currentPage; LCHttpManager sharedManager addGetTask:url Tag:Video_Detail_tag; /网络请求 self addMessage:url selector:selector(u

31、pdateData:); 3.4.3 视频播放图 3-4-3-1 视频播放主要是视频播放功能。表3-4-3-2 视频播放页面参数、功能表项目NO.页面项目类型(继承的类)项目名摘要类型必须1PlayView视频播放界面上面的ViewUIView 是2PlayViewBottom视频播放界面底部的ViewUIView 是3PlayMediaViewController播放界面UIViewController 是表3-4-3-3 视频播放页面动作事件表项目NO.动作处理名处理内容项目动作1ViewDidLoadViewDidLoad页面初始化初始化页面控件2playStarttouch播放按钮开始

32、播放视频 3clickButtontouch返回按钮返回视频解说详情页面关键代码:AVURLAsset* asset = AVURLAsset assetWithURL:url;asset loadValuesAsynchronouslyForKeys:NSArray arrayWithObject:tracks completionHandler: AVKeyValueStatus status = asset statusOfValueForKey:tracks error:nil; if (status = AVKeyValueStatusLoaded) /判断状态 AVPlayerIt

33、em*playerItem= AVPlayerItem playerItemWithAsset:asset; _player = AVPlayer allocinitWithPlayerItem:playerItem; _playerView setPlayer:_player;/关联播放器和屏幕 _player addPeriodicTimeObserverForInterval:CMTimeMake(1, 1) queue:dispatch_queue_create(0, 0) usingBlock:(CMTime time)/设置进度 CMTime 帧数 帧率 CMTime curren

34、tTime = _player.currentItem.currentTime;/当前时间 CMTime duration = _player.currentItem.duration; if (CMTimeGetSeconds(duration) 0.0) Float pro= CMTimeGetSeconds(currentTime)/CMTimeGetSeconds(duration);/进度 dispatch_async(dispatch_get_main_queue(), _proSilder setValue:pro animated:YES; _playerViewTop.tim

35、eLabel reloadInputViews;);3.5 视频缓存3-8-1 视频缓存页面视频缓存是缓存视频下载完成以及没有完成的下载管理页面。表3-5-1-2 视频缓存页面参数、功能表项目NO.页面项目类型(继承的类)项目名摘要类型必须1MediaItem视频缓存模型NSObject 是2CacheCell视频缓存CellUITableViewCell 是3VideoCacheViewController视频缓存页面UIViewController 是表3-5-1-3 视频缓存页面动作事件表项目NO.动作处理名处理内容项目动作1ViewDidLoadViewDidLoad页面初始化初始化页

36、面控件2didselecttouch删除按钮删除下载的所有关键代码:- (void)removeAllUser BOOL res = _db open; /打开数据库 if (res = NO) NSLog(打开失败); FMResultSet* set = _db executeQuery:select * from User; /通过用户名删除所有数据库 while (set next) /遍历删除 NSString *titleName = set stringForColumn:titleName; if (titleName) res = _db executeUpdate:delete from User where titleName = ?,titleName; 3.6 直播3-6-1 直播的列表表3-6-2 直播列表参数、功能表项目NO.页面项目类型(继承的类)项目名摘要类型必须1TvItem直播模型NSObject 是2TvCell直播列表CellUITableViewCell 是3TvViewController直播页面UIViewController 是表3-6-3 直播页面动作事件表项目NO.动作处理名处理内容项目动作1ViewDidLoadViewDidLoad页面初始化初始化页面控件2didselecttouch页面跳转跳转到

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com