欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    ios下视频点播app设计与实现大学本科毕业论文.doc

    • 资源ID:91629268       资源大小:2.59MB        全文页数:30页
    • 资源格式: DOC        下载积分:9金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要9金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    ios下视频点播app设计与实现大学本科毕业论文.doc

    摘 要苹果iOS是苹果开发的手持设备操作系统。苹果公司最早于2007年1月9日的Macworld大会上发布这个系统,最初设计给iPhone使用,后来陆续套用到iPod touch、iPad以及Apple TV等苹果产品上。近年来,随着iphone和广泛应用,使许多企业发现,手机业务价值,促使越来越多的人开始学习开发手机。苹果手机软件基于Object_C编程语言编程Xcode的环境下发展。手机软件分为许多类型,包括视频类手机软件有很高的地位在手机软件的发展。本文基于iOS开发平台设计并且实现了一款手机视频App,展示如何通过利用Object_C 的工具函数实现对视频的各种处理。论述了视频的播放,异步下载以及断点播放。关键字:视频播放 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 recent 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 development 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, shows 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 系统各个功能模块总体设计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以及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实现可以看作是多个层的集合,底层为所有应用程序提供基础服务,高层则包含一些复杂巧妙的服务和技术。 图1-1 iOS的层1.2.1 Cocoa Touch层Cocoa Touch层提供了基本的系统行为支持,而且将你的工作量降到最低,当你想要实现更为复杂的行为和界面时,才考虑向下层探寻技术支持。UIKit框架:UIKit提供了一些程序运行所必须的关键对象,使得App能够捕捉用户输入和在屏幕上显示内容MapKit框架:iOS3.0引入该框架,该框架提供一个可被嵌入到应用程序的地图界面,该界面包含一个可以滚动的地图视图Address Book UI框架:iOS3.0引入该框架,可以利用该框架撰写电子邮件,并将其放入到用户的发件箱排队等候发送Message 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层应用程序提供基础系统服务。可能应用程序并不直接使用这些服务。但它们是系统很多部分懒以建构的基础。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框架1.2.4 Core OS层Core层的底层功能是很多其他技术的构建基础。通常情况下,这些功能不会直接应用与应用程序,而是应用与其他框架。但是,在直接处理安全事务或和某个外设通讯的时候,则必须要应用到该层框架Accelerate框架:iOS4.0引入了Accelerate框架,该框架的接口可用于执行数字、大数字以及DSP算法External Accessory框架:iOS3.0引入了External Accessory框架,通过它来支持iOS设备与绑定附件通信。附件可以通过一个30针的基座接口和设备连接,也可以通过蓝牙连接Security框架:iOS系统不但提供内建的安全功能,还提供Security框架用于保证应用程序所管理之数据的安全。该框架提供的接口可用于管理证书、公钥、私钥以及信任策略。它支持生成加密的安全伪随机数。同时,它也支持对证书和Keychain迷药进行保存,是用户敏感数据的安全仓库1.3 Object_C的介绍Objective-C是非常“实际”的语言。它使用一个用C写成、很小的运行库,只会令应用程序的大小增加很小,和大部分OO系统使用极大的VM执行时间会取代了整个系统的运作相反,ObjC写成的程序通常不会比其原始码大很多。而其函式库(通常没附在软件发行本)亦和Smalltalk系统要使用极大的内存来开启一个窗口的情况相反。扩展的关键字:interface,类型声明,类似于c+中的class,区别在于Object c中的声明与实现是强制分开的,interface关键字用于类型的声明,包括数据成员、方法声明、属性等。方法的参数传递采用中缀符的形式,利用“:”分割参数名和被传递参数,类型的声明以interface开头,以end结束。implementation,对应于interface的类型声明,implementation表示一个类型的实现过程,同样以end结束。class,是一个前向引用声明,类似于C+中的friend友元声明,其作用是告诉编译器其后面的字段代表一个类型名称,尽管不知道类型的具体实现,但是只需要将其作为一个类型名称处理即可。通常在使用复合的结构时可以采用class来减少头文件的相互引用,如果出现循环依赖,则需要依靠class来避免引用的死循环。property,提供了外界对成员变量的访问接口,其本质是为某一个属性提供set和get操作。synthesize,与property对应,将一个外在属性与成员变量相关联,定义在 implementation中,如果属性名与变量名一致则可以省略变量名。Object_C采用引用计数的方法进行内存管理,由于所有的对象都集成与NSObject,因此所有的对象都可以接受NSObject的三个方法:retain方法将对象的引用计数加一并返回该对象,release将引用计数减一,retainCount方法返回对象当前的引用计数。当采用new、alloc、copy方法创建一个对象时,它的引用计数被置为1,如果程序中对该对象进行操作,则应根据需要,通过调用retain和release方法来保证该对象在不需要的时候被清除。当一个对象的引用计数被置为0后,系统会自动向对象发送一个dealloc消息,将其占有的资源释放。通常情况下,如果一个对象的初始化过程调用了其他资源,则应该重写改对象的dealloc过程,保证在对象的销毁期正确释放这些资源。类别是为现有的类提供一个新的方法的方法,即使没有一个类的源代码,仍然可以向类中添加一个方法以方便使用。类别的主要目的有3个:将类的实现分散到多个不同的文件或框架中,创建对私有方法的前向引用,向对象添加非正式协议。Object C中的协议类似于java中的接口,通过protocol关键字定义一个或多个需要遵从协议的对象实现的方法。第二章 总体设计2.1 系统各个功能模块总体设计iOS开发是基于Object_C语言,使用iOS SDK在Xcode开发环境下进行开发,其应用与iOS系统的移动设备上,本课题主要是本地应用,加入少量网络解析和分享功能。2.1.1 功能总体设计根据系统功能分析,可以分为五大模块:视频解说、视频缓存、直播、Dota2、设置。 图2-1 功能总体设计图2.1.2 主要页面设计页面一览表显示出了本程序的主要页面以及设计的类名,概要的描述了页面的主要功能。表 2-1-2 页面一览表NO页面名称设计类名页面概要1程序启动页面RootViewController程序运行后,最开始进入的界面2视频解说页面VideoViewController可查看各个解说的视频3视频缓存页面VideoCacheViewController下载存储4直播页面TvViewController观看当前能看到的视频5Dota2页面DotaViewControllerDota2的英雄简介和物品简介6设置页面SettingViewController2.1.3功能一览表功能一览表显示出了项目的主要功能的实现,以及所需技术或所需添加的第三方SDK,简要的描述了功能概要。表 2-1-3 功能一览表NO功能名称功能概要公共方法涉及页面1视频播放调用网上的视频文件播放,使用自定义的AVPlayer否直播页面和视频解说页面2网络平台分享使用微信的第三方接口否Dota2页面2.2 iOS的View的生命周期ViewController的职责,对内管理与之关联的View,对外跟其他的ViewController通信和协调。对于与之关联的View,ViewController总是在需要的时候才加载视图,并在不需要的时候卸载视图,所以也同时担当了管理应用资源的责任。理解ViewController的生命周期,能够有效的管理应用资源,ViewController的生命周期图:图2-2 UIView生命周期图第三章 详细设计3.1 基础类设计基础类中设计了一些公用方法功能,以及一些界面的实例化,主要有网络,网络监测,页面坐标大小设置。1) 微信分享微信分享,存在Dota2模块中的英雄详情页面和物品详情页面,英雄详情页面,主要分享英雄的图片以及英雄的简介,而物品详情页面分享的是物品的图片以及物品的简介,分享到微信朋友圈,没有设置链接。微信分享的AppKey: WXApi registerApp:"wxd930ea5d5a258f4f"微信分享的验证: -(void) onResp:(BaseResp*)resp if(resp isKindOfClass: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 = WXMediaMessage 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.message = message; req.scene = WXSceneTimeline; /分享场景为朋友圈 WXApi sendReq:req;2) 网络监测网络监测,监测有没有网络,如果没有网络则网络不请求数据,只要有网络不管是3G还是Wifi都进行网络请求。+ (BOOL) connectedToNetwork Reachability *r = Reachability reachabilityWithHostName:"" /通过百度测试网络 BOOL isReachable=YES; switch (r currentReachabilityStatus) /当前的链接状态 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: / 使用WiFi网络 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框架是和界面相关的。 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框架 (MobileCoreServices.framework)。此框架定义统一类型标识符 (UTIs)使用的底层类型。8)CFNetwork.framework;CFNetwork 只是对 BSD socket 的进行了轻量级的封装,但在 iOS 中使用 CFNetwork 有一个显著的好处,那就是 CFNetwork 与系统级别的设置(如:天线设置)以及 run-loop 结合得很好。每一个线程都有自己的 run-loop,因此我们可以 CFNetwork 当中事件源加入到 run-loop 中,这样就可以在线程的 run-loop 中处理网络事件了。BTW,大名鼎鼎的 ASIHttpRequest 库就是基于 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 是2VideoCachViewController 下载视频的详情UIViewController 是3TvViewController 直播的介绍列表 UIViewController 是4DotaViewController Dota2英雄和物品综合页面UIViewController 是5SettingVIewController 用户设置页面UIViewController 是表3-4-1-3 页面动作事件表项目NO.动作处理名处理内容项目动作1ViewDidLoadViewDidLoad页面初始化初始化页面控件2ViewWillAppearViewWillAppearViewWillAppear设置UITabBar分为5个大模块 3AppDelegate系统自带 页面跳转分别跳转到各个模块关键代码:UITabBar创建关键代码:NSString *path = NSBundle mainBundlepathForResource:"Data_TabBar" ofType:"plist" /设置plist文件的路径NSDictionary*dic=NSDictionarydictionaryWithContentsOfFile:path; /把plist文件转为字典NSMutableArray *controllerArray = NSMutableArray allocinit; /初始化可变数组 for (int i = 0; i < dic.count; i +) /遍历字典 NSString* key = NSString stringWithFormat:"item %d",i; NSDictionary* dict = dic objectForKey:key; NSString *className = dict objectForKey:CLASS_NAME_KEY; Class class = NSClassFromString(className); if (class) RootViewController *rvc = class allocinitWithDictionary:dict; UINavigationController *nc = UINavigationController allocinitWithRootViewController:rvc; controllerArray addObject:nc; /把导航条添加到数组中 UITabBarController *tbc = UITabBarController allocinitautorelease;/初始化TabBar tbc.viewControllers = controllerArray; self.window.rootViewController = tbc; /把TabBar添加到底层页面上视频解说跳转视频详情页面代码: VideoItem *item = self.mDataArray objectAtIndex:indexPath.row; VideoDetailViewController *vdvc = VideoDetailViewController allocinit; vdvc.uid = item.id;/传参 vdvc.name = item.name; vdvc setHidesBottomBarWhenPushed:YES; / self.navigationController pushViewController:vdvc animated:YES;/页面跳转3.4.2 视频解说详情页面图 3-4-2-1 视频解说详情页面视频解说详情页面实现上拉加载,可以浏览此解说的所有近期视频。表3-4-2-2 视屏解说详情页面参数、功能表项目NO.页面项目类型(继承的类)项目名摘要类型必须1VideoDetailItem视频解说的模型 NSObject 是2VideoDetailCell视频解说列表UITableViewCell 是3VideoDetailViewController视频解说页面UIViewController 是表3-4-2-3 视频解说详情页面动作事件表项目NO.动作处理名处理内容项目动作1ViewDidLoadViewDidLoad页面初始化初始化页面控件2didselecttouch跳转页面跳转到下一个页面 关键代码: if (scrollView.contentOffset.y + scrollView.frame.size.height >= 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(updateData:); 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播放按钮开始播放视频 3clickButtontouch返回按钮返回视频解说详情页面关键代码:AVURLAsset* asset = AVURLAsset assetWithURL:url;asset loadValuesAsynchronouslyForKeys:NSArray arrayWithObject:"tracks" completionHandler: AVKeyValueStatus status = asset statusOfValueForKey:"tracks" error:nil; if (status = AVKeyValueStatusLoaded) /判断状态 AVPlayerItem*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 currentTime = _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.timeLabel reloadInputViews;);3.5 视频缓存3-8-1 视频缓存页面视频缓存是缓存视频下载完成以及没有完成的下载管理页面。表3-5-1-2 视频缓存页面参数、功能表项目NO.页面项目类型(继承的类)项目名摘要类型必须1MediaItem视频缓存模型NSObject 是2CacheCell视频缓存CellUITableViewCell 是3VideoCacheViewController视频缓存页面UIViewController 是表3-5-1-3 视频缓存页面动作事件表项目NO.动作处理名处理内容项目动作1ViewDidLoadViewDidLoad页面初始化初始化页面控件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页面跳转跳转到直播

    注意事项

    本文(ios下视频点播app设计与实现大学本科毕业论文.doc)为本站会员(知****量)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

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

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开