




已阅读5页,还剩43页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
安徽大学本科毕业论文(设计、创作)题目:基于ios平台的实时视频流播放系统 学生姓名: 学号: 院(系): 计算机科学与技术学院 专业:计算机科学与技术入学时间: 2008 年 09 月导师姓名: 陈思宝 职称/学位:副教授 导师所在单位: 计算机科学与工程系 完成时间: 2012年 05 月基于ios平台的实时视频流播放系统摘要 2007年6月苹果公司公布了第一版名为“iphone run os x”的ios操作系统,截止去年ios设备已经占据了全球移动操作系统的44%份额,如今ios设备已经风靡全球。本文是基于ios平台的实时视频流播放系统设计。在低端pc上通过vmware workstation运行mac os x,然后安装iphone sdk 3.0,使用它集成的xcode实现ios的实时视频播放体验。对于初学者来说是踏入iphone程序开发的必要准备。让研究者在学习objective-c语言的同时慢慢体会到ios的精髓,打好未来成为ios程序员的基础。关键词:ios;xcode;iphone sdk 3.0;vmware ;objective-c;视频播放;play system of real-time video stream on ios platformabstractin june 2007 apple inc released the first edition called the iphone run os x in the ios operating system.the end of last ios devices have occupied 44 percent share of the global mobile operating system. ios device has swept the globe. this article is play system of real-time video stream on ios platform design. on the low-end pc running mac os x with vmware workstation, then install the iphone sdk 3.0, it integrates xcode and enjoy the ios real-time video playback experience. for beginners it is the necessary preparations into the iphone application development. researchers in learning objective-c language, gradually began to feel the essence of the ios and lay the basis of ios programmers.keywords: ios;xcode;iphone sdk 3.0;vmware;objective-c;video player目 录1 绪论31.1 本课题研究的背景31.2 本课题研究的意义31.3 本论文的研究思路和工作安排32 视频播放平台和技术32.1 objective-c简介32.2 ios系统概述及其架构32.2.1 ios的系统架构32.2.2 frame work-应用程序框架32.3 vmware中安装虚拟的mac os x32.4 xcode和iphone sdk的获取和安装32.5 网络实时视频流及传输33 iphone应用程序开发的学习和系统的实现33.1 helloapple33.1.1 系统伪装成10.5.733.1.2 第一个程序helloapple33.2 mediaplayer framework播放视频影片34 结论3主要参考文献3附录a3附录b3附录c3附录d3致谢31 绪论本课题研究的是基于ios平台的实时视频流播放控制,在windows 7系统下使用vmware安装虚拟的mac os,通过xcode和iphone sdk在虚拟机里体验iphone应用程序的开发。同时熟悉objective-c的编程优点和网络实时视频流的传输协议。1.1 本课题研究的背景ios最早于2007年1月9日的苹果macworld展览会上公布,随后于同年的6月发布的第一版ios操作系统,当初的名称为“iphone runs os x”。最初,由于没有人了解“iphone runs os x”的潜在价值和发展前景,导致没有一家软件公司、没有一个软件开发者给“iphone runs os x”开发软件或者提供软件支持。于是,苹果公司时任ceo斯蒂夫.乔布斯说服各大软件公司以及开发者可以先搭建低成本的网络应用程序(web app)来使得它们能像iphone的本地化程序一样来测试“iphone runs os x”平台。北京时间6月7日凌晨,苹果2011年度的wwdc大会,scott forstall正式公布了ios系统的设备至今已经销售了2亿台,占全球移动操作系统44%的份额。11.2 本课题研究的意义随着ios的流行,越来越多的人体验到了其所带来的科技魅力,但是对一部分人来说一件时尚的ios设备略显奢侈,也给研究者带来了一定的不方便。本课题主要研究在低端的pc上通过vmware来实现ios的视频播放体验。对于初学者来说也是踏入iphone程序开发的必要准备,让研究者在学习的同时慢慢体会到ios的精髓,打好未来成为ios程序员的基础。1.3 本论文的研究思路和工作安排首先在自己的pc上面安装vmware workstation 7.0,通过网络下载mac os x leopard 10.5.5。其次自学objective-c,熟悉该语言的特点和编程方法,初步学习iphone程序开发基础教程。最后一步步实现系统的完成。第一阶段:2011年12月09日2011年12月20日;选题,撰写开题,报告。第二阶段:2012年02月16日2012年03月15日;收集、查阅相关文献资料,与指导老师取得联系,开发环境的搭建,撰写初稿。第三阶段:2012年04月21日2012年05月15日;收集资料,修改初稿,总结经验,与指导老师交流解决疑难,撰写二稿。第四阶段:2011年05月16日2012年05月30日;修改二稿,撰写三稿,将上一阶段存在的问题进一步修改、总结、完善,增加论文的科学性。2 视频播放平台和技术2.1 objective-c简介1980年初,布莱德确斯(brad cox)在其公司step stone发明了objective-c,它以一种叫做smalltalk-80的语言为基础。objective-c建立在c语言之上,意味着它是在c语言基础上添加了扩展而创造出来的能够创建和操作对象的一门新的程序设计语言。objective-c是在c语言的基础上,加入面向对象特性扩充而成的编程语言。目前,objective-c主要应用于mac os x和ios这两个next step的衍生系统,而在next step和open step中它更是基本语言。objective-c可以在任何支持gcc的平台上进行编译,因为gcc原生支持objective-c。objective-c是c语言的严格母集合,意指任何原始的c语言程式都可以通过objective-c编译器而不需修改,也允许 objective-c 使用任何原始的c语言代码。objective-c 形容自己为覆盖于c语言上的一层薄纱,这是因为objective-c的原意就是在原始c语言主体上加入面向对象的特性。objective-c的面向对象语法源于smalltalk讯息传递风格。所有其他非面向对象的语法,包括变量,前处理器(preprocessing),流程控制,函数声明与调用皆与c语言完全一致。objective-c 面向对象最大的特色是讯息传递(message passing)模型。在objective-c里,物件不呼叫方法,而是互相传递讯息,这与今日的主流c+式面向对象风格差异甚大。此二种风格的差异主要在于程序如何看待呼叫方法/传送讯息这个动作。c+里类与方法的关系非常明确,一个方法必定属于一个类,且于编译期(compile time)就已经紧密绑在一起,你不可能呼叫一个不存在类里的方法。但在objective-c,类与讯息的关系较为松散,所有方法都被视为对讯息的回应,而呼叫方法则视为对类发送讯息。所有讯息处理直到执行期(runtime)才会动态决定,并交由类自行决定如何处理收到的讯息。也就是说,一个类不保证一定会回应收到的讯息,如果类收到了一个无法处理的讯息,程式并不会出错,它只会抛出一个exception。在2006年苹果全球开发者会议中,apple发布了“objective-c 2.0”,其增加了“现代的垃圾收集,语法改进,运行时性能改进,以及64位支持。2007年10月发布的mac os x v10.5中包含了objective-c 2.0的编译器。objective-c是非常“实际”的语言。它用一个很小的、用c写成的运行库,使得应用程式变的很小,与此相比,大部分系统需要极大的运行时来执行。她写成的程式通常不会比其源代码和函数库(通常无需包含在软件发行版本中)大太多,不会像smalltalk系统,即使只是打开一个窗口也需要很大的容量。由于objective-c的动态类型特征,objective-c不能对方法进行内联(inline)一类的优化,使得objective-c的应用程序一般比类似的c或c+程序更小。目前, objective-c是mac os x的首要开发语言,也是gnu step 在linux 和其它平台上的开发语言。 objective-c是ansi c的超集,扩展了c语言,它具备面向对象设计的能力,如类消息和继承。objective-c程序可以利用现有的c语言代码,使其可以利用现有的软件架构。这也是为什么objective-c过去多年间能够成为一种流行的用户界面开发语言而且至今没有消亡,因为一方面用它可以实现底层系统编程,另一方面可以利用动态架构进行开发。objective-c 和c+的比较 : 单一继承: objective-c不支持多重继承(同java和smalltalk),而c+语言支持多重继承。 动态: objective-c是动态定型(dynamically typed),所以它的类库比c+要容易操作。objective-c 在运行时可以允许根据字符串名字来访问方法和类,还可以动态连接和添加类。 c+跟从simula 67(一种早期oo语言)学派,而objective-c属于smalltalk学派。 在c+里,对象的静态类型决定你是否可以发送消息给它,而对objective-c来说,这是由动态类型来决定。22.2 ios系统概述及其架构2.2.1 ios的系统架构ios的系统架构分为四个层次:核心操作系统层(core os layer)、核心服务层(core services layer)、媒体层(media layer)和可触摸层(cocoa touch layer)。表1:mac os x和ios系统架构层次对比mac os xioscocoacocoa touchmediamediacore servicescore servicescore oscore os从上表中我们可以发现mac os x与ios的系统架构层次只有最上面一层不同,由cocoa框架换成了cocoa touch,因此开发ios应用程序与开发mac os x程序是相似的,现在就让我们来具体看看每层所包含的内容。其实ios是基于unix的,所以我们完全可以相信这个操作系统,要知道从系统的稳定性上来说它要比其他操作系统的产品好很多。位于ios系统架构最下面的一层是核心操作系统层,它包括内存管理、文件系统、电源管理以及一些其他的操作系统任务。它可以直接和硬件设备进行交互。核心操作系统层包括以下这些组件:表2:核心操作系统层组件os x kernelmach 3.0bsdsocketspower mgmtfile systemkeychaincertificatessecuritybonjour第二层是核心服务层,我们可以通过它来访问ios的一些服务。它包括以下这些组件:表3:核心服务层组件collectionsaddress booknetworkingfile accesssqlitecore locationnet servicesthreadingpreferencesurl utilities第三层是媒体层,通过它我们可以在应用程序中使用各种媒体文件,进行音频与视频的录制,图形的绘制,以及制作基础的动画效果。它包括以下这些组件:表4:媒体层核心组件core audioopenglaudio mixingaudio recordingvideo playbackjpg,png,tiffpdfquartzcore animationopengl es最上面一层是可触摸层,这一层为我们的应用程序开发提供了各种有用的框架,并且大部分与用户界面有关,本质上来说它负责用户在ios设备上的触摸交互操作。它包括以下这些组件:表5:可触摸层核心组件multi-touch eventscore motioncameraview hierarchylocalizationalertsweb viewsimage pickermulti-touch controls在cocoa touch层中的很多技术都是基于objective-c语言的。objective-c语言为ios提供了像集合、文件管理、网络操作等支持。像uikit框架,它为应用程序提供了各种可视化组件,比如像窗口(window)、视图(view)和按钮组件(uibutton)。cocoa touch层中的其他框架,对我们在应用程序中的开发来说也是非常有用的,如访问用户通信录功能框架、获取照片信息功能的框架、负责加速感应器和三维陀螺仪等硬件支持的框架。2.2.2 frame work-应用程序框架什么是框架?本质上来说它是帮助我们完成各种特定功能的软件库。我们编写的应用程序项目,都是从cocoa touch层开始的,具体来说就是从uikit framework开始的。当在编写程序的过程中需要用到一些特殊功能的时候,我们应该从框架的最顶端技术开始寻找相应的框架,只有在上层结构无法解决时,才能使用其下层的技术。其实,顶层的框架已经涵盖了我们绝大多数需要的功能。3表6:一些常用的ios sdk 框架框架名称功能addressbook.framework提供访问存储核心数据库中用户联系人信息的功能addressbookui.framework提供一个用户界面,用于显示存储在地址簿中的联系人信息audiotoolbox.framework提供音频录制和回放的底层api,同时也负责管理音频硬件audiounit.framework提供一个接口,让我们的应用程序可以对音频进行处理avfoundation.framework提供音频录制和回放的底层api,同时也负责管理音频硬件cfnetwork.framework访问和配置网络,像http、ftp和bonjour servicescorefoundation.framework提供抽象的常用数据类型,如 unicode strings、xml、url等coregraphics.framework提供2d绘制的基于c的apimediaplayer.framework提供播放视频和音频的功能corelocation.framework使用gps和wi-fi获取位置信息opengles.framework提供简洁而高效的绘制2d和3d图形的opengl api子集2.3 vmware中安装虚拟的mac os x表7:我的电脑配置名称型号处理器(cpu)英特尔 酷睿2 双核 t6400 2.00ghz 笔记本处理器主 板仁宝 30f8 (英特尔 4 series - ich9m 笔记本芯片组)内 存2 gb ( 海力士 ddr2 800mhz )硬 盘西数 wdc wd2500bevt-60zct1 ( 250 gb / 5400 转/分 )显 卡nvidia geforce 9200m gs ( 256 mb / 惠普 )显示器lg lpl0129 ( 14 英寸 )光驱东芝-三星 cddvdw ts-l633a dvd刻录机我的电脑(windows 7系统)cpu是core2的t6400,无法支持硬件vt技术,不能安装mac os x 10.6 雪豹操作系统和10.7 lion系统,只能采用10.5.5 leopard。虚拟机的版本是vmware 7.0汉化破解版。windows 7+vmware 7.0+mac os x leopard on vmware.支持intel和amd的cpu.第1步:解压下载的压缩包(8g)到指定的文件夹图1:解压后的文件夹第2步:打开vmware 选择打开已存在的虚拟机或分组 选择 打开后就进入欢迎页面图2:打开虚拟机的界面第3步:选择已存在的虚拟机图3:打开解压后的文件(已存在的虚拟机)第4步:选择后缀为.vmx的文件图4:打开后缀为.vmx的虚拟机第5步:打开虚拟机图5:打开已存在的虚拟机第6步:查看虚拟机的配置图6:虚拟机的设置(下载时已经设置好)第7步:设置一个共享文件夹与主机共享文件图7:共享文件夹的设置(路径全为英语)第8步:进入虚拟的mac os x 10.5.5图8:打开虚拟机电源后的登陆界面第9步:查看系统版本图9:系统版本10.5.5(后面要伪装10.5.7)特别提醒:1.虚拟机里无法直接升级系统所以选择软件升级下载完毕后也无法升级2.安装vmware tools 后才可以看见共享文件夹图样,wmware tools 可以点击右上角的图样进行下载和安装,按照提示下载后重启,即可看见共享的文件夹图样,双击该图样可以找到自己设定的共享文件夹,来共享主机的文件夹。当然在此之前也要设置主机的文件夹属性改为共享。右击文件夹-属性共享共享(s)-选择共享用户为vmware user第10步:主机共享文件夹的设置图10:主机文件夹共享设置过程第11步:虚拟机打开共享文件夹图11:打开虚拟机里的共享文件夹2.4 xcode和iphone sdk的获取和安装第1步:登陆苹果开发者网站图12:打开苹果开发者网页第2步:注册账号后登陆图13:注册账号后登陆界面第3步:下载iphone_sdk_3.0_leopard_9m2736_final.dmg后将该镜像文件放到共享的文件夹里面并在虚拟机里的共享文件夹,打开安装图14:安装sdkiphone_sdk_3.0需要安装在leopard 10.5.7版本上才可以,而我们的虚拟mac 是10.5.5所以需要伪装一下系统到10.5.7(伪装过程见3.1)2.5 网络实时视频流及传输流媒体传输分两类:实时流媒体 和 顺序流媒体一般来说,如果视频为现场直播,或使用专用的流媒体服务器,或应用如rtsp等专用实时协议,即为实时流媒体传输;如果使用普通的http服务器,将音视频数据以从头至尾方式发送,则为顺序流媒体传输。实时流传输既可传输实况直播,也可传输完整的音视频文件(专用协议流式)。顺序流媒体不可用于实况直播,仅能传输完整的音视频文件(http渐进式)。表8:流媒体传输比较区别实时流顺序流音视频数据源实时从录制设备上采集,或(使用专用协议传输的)文件可播放的音视频文件服务器类型专用流媒体服务器,如:quicktime streaming serverreal serverwindows media serverflash media server普通的http服务器,或ftp服务器传输协议专用协议hls或rtmp等一般的http协议,传输网页的协议相同跳播可随机访问任意片段在给定时刻,用户只能观看已下载的那部分,而不能跳到还未下载的部分主流的流媒体协议主要有: rtmp, hls, rtsp等。表9:主流流媒体协议区别rtmphlsrtsp全称real time message protocolhttp live streamreal time streaming protocol上层协议tcp或httphttprtp,rtcp软件模型csbscs研发主要来自adobeapplemicrosoft针对客户端支持flash类产品的浏览器支持html5的浏览器支持html5的浏览器播放器视频格式要求flv, f4vmp4无服务器要求专用flash服务器flash media serverred5普通http服务器专用rtsp流媒体服务器实况直播要求专用编码器上传flash media encoder专用编码器上传apple开发工具与服务器相关,自定义上传文件播放要求flv ,f4v文件即可,服务器会自动分解为f4f 数据文件f4x索引文件ts数据文件,m3u8索引文件与服务器相关,与播放器相关http渐进式下载原理(仅支持文件播放)http边下载边播放,严格意义上讲,不是直播协议。他的原理是先下载文件的基本信息,音频视频的时间戳,再下载音视频数据,以播放mp4为例,先下载文件头,根据文件头指引下载文件尾,然后再下载文件的音视频数据。图15:mp4文件播放播放方式:1.浏览器调用系统播放器播放2.使html5的video标签,浏览器支持直接播放苹果支持的hls原理(实况直播 文件点播)图16:苹果hls原理服务器端有三个组件:其一:编码器(media encoder), 用于将设备输出的格式转为h264和aac,并封装为mpeg-2传输流;其二:流分段器(stream segmenter), 用于实况直播,将mpeg-2流分割为多个小片段后输出;其三:文件分段器(file segmenter), 用于文件点播,将文件分隔为多个小片段后输出;数据经以上三部分处理后为.ts文件(媒体数据)及.m3u8文件(媒体数据索引)存在于服务器之上。 客户端访问.m3u8后按索引下载.ts文件进行播放。下面为某m3u8文件内容:#extm3u#ext-x-targetduration:30#extinf:30,76/sample_100k-1.ts#extinf:30,76/sample_100k-2.ts#extinf:30,76/sample_100k-3.ts#ext-x-endlist根据这个文件,播放器会依次下载sample_100k-1.ts,sample_100k-2.ts,sample_100k-3.tshls的文件点播1.使用苹果开发工具“文件分段器”将基于h264和aac或mp的mpeg4分段,生成.ts和.m3u8文件,存储于普通服务器上。2.苹果应用程序或苹果浏览器可以通过访问.m3u8文件获取到索引,并下载所需要的数据片段来播放。hls的实况直播1.使用苹果开发工具“流分段器”将基于h264、aac、mp3的mpeg2传输流分段,可使用其它工具将mpeg4音视频文件加载到mpeg2传输流当中。生成.ts和.m3u8文件,存储于普通服务器上。2. 苹果应用程序或苹果浏览器可以通过访问.m3u8文件获取到索引,并下载所需要的数据片段来播放。53 iphone应用程序开发的学习和系统的实现3.1 helloapple3.1.1 系统伪装成10.5.7第1步:打开虚拟机的硬盘选择资源库文件夹里面的coreservices文件夹右键选择显示简介图17: coreservices文件夹的右键“显示简介”第2步:找到简介界面的右下角的锁型双击打开输入密码()图18:“显示简介”的共享与权限修改第3步:修改所有的权限为读与写图19:修改权限为读与写第4步:打开coreservices找到systemversion.plist文件,同样的方法修改它的权限 为读与写图20:找到systemversion.plist后修改权限第5步:打开systemversion.plist后修改系统版本为10.5.7图21:修改系统版本并保存第6步:查看修改后的系统版本信息图22:系统版本信息修改为.2 第一个程序helloapple第1步:打开硬盘后选择developer文件夹后打开applications文件夹图23:打开applications文件夹第2步:选择xcode打开图24:打开xcode第3步:选择filenew project图25:新建工程第4步:在弹出的对话框中输入helloapple后save图26:新建helloapple保存第5步:在xcode中双击helloappleviewcontroller.xib文件,interface builder自动执行打开该文件,通过tools选项添加对象的属性,关联,特征的集成窗口(library和attributes inspector)图27:打开helloappleviewcontroller.xib文件第6步:从library中选择input & values,在列表中选择lable,将其拖拽到view窗口中图28:在view中添加lable第7步:在lable的属性里面text输入:helloapple图29:在lable中输入helloapple第8步:设置字体图30:字体设置第9步:同样的方法添加text field和uibutton调整位置图31:添加text field和uibutton第10步:保存图32:保存第11步:点击build and go图33:执行第12步:点击home键设置模拟器图34:点击home键返回第13步:设置模拟器的键盘输入法图35:输入法设置第14步:设置输入法完毕后重新运行程序并输入图36:重新执行程序3.2 mediaplayer framework播放视频影片第1步:打开xcode图37:打开xcode第2步:新建工程图38:选择新建工程第3步:选择基于view-based图39:基于view-based的程序第4步:命名后保存图40:命名为mediaplayer1并保存第5步:保存以后显示该project,选择framework右键单击,选择add-existing framework命令,添加mediaplayer.framework图41:添加mediaplayer.framework到framework文件夹第6步:查看resources文件夹图42:resources文件夹第7步:打开movieplayerviewcontroller.m文件添加如下代码:- (void)loadview movieplayer = mpmovieplayercontroller alloc initwithcontenturl: nsurl urlwithstring:/animations/kuril_2_small.mov ;nsnotificationcenter *notificationcenter = nsnotificationcenter defaultcenter ; notificationcenter addobserver: self selector:selector(movieplayerplaybackdidfinish: ) name: mpmovieplayerplaybackdidfinishnotification object: movieplayer ;movieplayer.play;-(bool)shouldautorotatetointerfaceorientation:(uiinterfaceorientation)interfaceorientatin return (interfaceorientation = uiinterfaceorientationportrait);- (void)didreceivememorywarning super didreceivememorywarning;- (void)dealloc super dealloc ;-(void)movieplayerplaybackdidfinish:(nsnotification*)notification nslog(playback finished!n);end第8步:修改代码图43:修改movieplayerviewcontroller.m文件后保存第9步:保存完毕后执行build & go图44:执行该程序第10步:iphone模拟器运行,加载视频中图45:加载视频第11步:视频文件边加载边播放图46:视频播放第12步:点击模拟器右上角的放大图标放大该视频图47:放大播放第13步:在视频播放过程中可以点击上方的进度条进行快进或者快退,视频播放完毕自动关闭该程序,播放时可以点击左上角的done图标结束播放过程图48:播放时点击done关闭程序第14步:使用系统自带的quicktime播放下载后的该视频图49:quicktime播放该视频视频来源:/animations/kuril_2_small.mov第15步:修改movieplayerviewcontroller.h中的网址播放其他视频图50:其他视频图51:苹果官网mac book视频视频来源:/movies/us/apple/mac/macbook/2008/designvideo/apple_new_macbook_video_20081014_640x360.mov?width=640&height=3604 结论苹果ios的迅速发展绝不是偶然这和其本身出众的优点有很大的关系ios设备可以说是使用人群年龄覆盖范围最大的。从一两岁的小娃娃,到七八十岁的老人,都可以凭借自己的直觉去操作。菜单设计简单易懂,数码设备变得不再复杂和难以使用。 它的每一个图标,按钮,每一种颜色的搭配,都精致漂亮。并且,在打开,关闭,切换各种应用的时候,在各级菜单的切换过程中,在屏幕横竖旋转的过程中,都带有各种优雅而不花哨的转场动画效果。举例,如联系人中,文字滑动到软件底部或顶部都会有一定的反弹效果,这种反弹力的感受极为微妙,弹力过大过小都会让人感觉不舒服,过大给人感觉不真实,过小显得比较生硬。弹力的速度也有考究,在反弹开始阶段,速度快,越近接软件边缘,速度越慢,最后柔和的与软件边缘接触。在未越狱未破解的原版系统里,说ios是最稳定的应该不为过。死机,系统崩溃这些词很少能和ios设备联系起来,相信这也是很多企业用户选择ios设备的原因之一。6本文查阅了很多资料,对基于ios的实时视频流播放系统的设计和实现等作了详细的介绍。在对实时视频流的研究基础上,结合ios系统的应用现状,以及现有计算机视频技术的发展和应用等,建立了在windows 7系统下体验ios的功能。并对该系统的实现方法、体系结构等作了分析研究,阐述了系统的实现技术:objective-c,vmware workstation和iphone sdk作为开发工具,最后实现了该播放系统的控制实例。具体来说,主要完成了以下工作:(1)阐述了hls技术和objective-c功能特性,选用xcode 和iphone sdk主要开发工具。(2)对播放系统的实现,vmware的运行进行了详细的介绍(3)对基于ios的程序开发从最简单的程序进行一步步的学习和深入(4)根据对iphone应用程序开发教程的学习最终实现了实时视频流的播放。通过本文的研究,基本上实现了网络实时视频流的播放,运行效果好。对实现在低端pc上体验ios的提供了重要的参考价值。vmware和iphone sdk等技术不失为实现基于该播放系统的有力工具,同时具有一定的应用价值。但是,由于多方面的原因,本课题的研究还有很多不足之处,今后的工作主要体现在以下一些方面:(1)对hls技术了解不够深入。(2)播放系统功能还有待加强。48主要参考文献1 baidu 百科,ios简介s/ol.(2012-5-10)2009-12-15 /view/158983.htm2mark dalrymple ,scott knaster .learn objective-c on the macm北京:人民邮电出版社.2009.3刘铭 朱鲄 王佳。iphone 程序开发基础教程m。北京:电子工业出版社,2007.4 jackhwei,罗索工作室s/ol.2011-12-16 /a/201112/15487.html5kiis,百度博客 eb/ol .2011-09-23 /stealth_space/blog/item/26c39a3939fd18d41cbaa19796.html6xhing,苹果核eb/ol.2011-10-08 /thread-29632-1-1.html7陈靖隆. 基于http live streaming protocol的移动流媒体系统设计与实现d.广州:华南理工大学.2011 附录ahttp live streaming (m3u8 streaming) (m3u8) m3u/m3u8 是一种在电脑上面用来记录多媒体播放列表的文件格式,它最初是由 winamp 这个音乐播放程序采用的,但现在已经有非常多的应用程序支持这一多媒体播放列表索引格式一个 m3u/m3u8 文件是一个纯文本文件,用来指示一个或多个媒体文件的位置,播放器根据此点来播放媒体文件。文件的每一行都只能有一个规格或者表示一种属性,可以有如下格式:1)文件的绝对路径:c:my musicsample.mp32)文件的相对路径:/music/sample.mp33)文件的 urlm3u/m3u8 同时拥有“注释”的功能,使用 # 字符来表示一行注释的开始,但是在这里,“注释”并不会被忽略,而是承担了相当于标签的功能,有指定的格式和要求。如果媒体文件经过了加密,则 ext-x-key 标签提供了客户端解密所必需的信息,它的格式如下:#ext-x-key:method=,uri=method 参数用来指示服务器端所采用的加密算法,如果 uri 参数不为空,它表示客户端可以去该参数值表示的地址去或者解密所需要的密钥。http live streaming protocol 1.0 版本里面定义了上述标签的两个值:none和 aes-128,。如果标签的值为 none 则表示没有对媒体数据进行加密,若未aes-128 则表示采用了 128 位的对称加密算法对媒体进行了加密。m3u/m3u8 文件同时可以对多个视频流进行索引,以支持同一内容的不同码率 的视频流传输,可以适应不同的带宽、网络状况或者客户端设备。如果客户端设备的网络或者带宽状况发生了改变,http live streaming protocol 支持其在不同的流中进行动态切换,客户端可以使用启发式方法来决定在什么情况下应该切换到哪一媒体流,一个比较简单的方法是根据当前某一时间段之内的网络流量来决定。m3u/m3u8 索引文件通过包含一个特殊的标签 ext-x-stream-inf 来表示不同码率或者带宽要求的媒体流的 m3u8 索引文件的 uri 属性。7图52:m3u8索引文件图示附录bhttp live streaming (m3u8 streaming)(mpeg2-ts) mpeg2-ts是一种封装格式,所有的video,audio以及辅助信息(pat,pmt)都被封装成为188 bytes的ts_packet.在ts中用pid来区分不同的stream.其中有一些特殊的pid,如pat的pid固定是0x0000.标准是:iso13818-1优点是每个包都有固定大小,在网络传输中和文件切割时比较方便;缺点是因为每个包都是188 bytes,所以必然会有padding;从而浪费一定的空间,当sample比较小的时候浪费是比较严重的,此时能够通过将多个sample压缩进行打包的方式来实现。在http live streaming中只需要实现部分标准。pat(program_association_table):是由program_association_section构成pes_packet():用来打包es的格式。其中比较重要的信息有dts、pts信息。详细信息请查阅iso13818-1标准。在mpeg2-ts中pid是一个很重要的概念,pid是流的唯一标示符,相同的pid指定的是相同类型的内容。服务器和客户端端是通过pid来实现复用和解复用的。客户端的解码过程:1.找到ts_packet的开始位0x47。3.找到pid为0x0000的pat,将pat进行解包,得到每个项目对应的pmt pid(在m3u8 streaming中只有一路节目)。4.根据pat解包得到的pmt pid得到pmt,同理将pmt进行解包得到es pid和对应的类型。5.根据pmt解包得到的es pid,将该路流解包得到pes_packet,从而得到es流和dts,pts。此时就能送到decoder去解码了。服务器端的编码过程:1.更具pmt pid来生成pat,并打包成ts_packet来写入文件。2.根据es的pid和类型生成pmt,并打包成ts_packet来写入文件。4.接收video/audio sample,并将一个或者多个sample打包成为pe
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025打印机租赁合同
- 专车知识培训总结报告课件
- 2026届成都市金堂县金龙中学数学九上期末监测试题含解析
- 专家沟通理论知识培训课件
- 湖北省武汉蔡甸区五校联考2026届数学七上期末监测模拟试题含解析
- 收益权分拆交易行业发展趋势分析
- 2025年北京市茶叶买卖合同
- 2025年珠海市住房公积金个人住房借款及担保合同补充协议
- 邮储银行昆明市宜良县2025秋招英文面试20问及高分答案
- 中国银行锦州市北镇市2025秋招笔试英语选词填空题专练50题及答案
- 医疗机构医疗质量安全专项整治行动自查自纠报告
- 中建土建劳务招标标准清单编制参考
- 待灭菌物品的装载
- 2025年职业病诊断医师考核试题(答案)
- 中学窗帘采购项目方案投标文件(技术文件)
- 湖北省老年教育管理办法
- 人教新版(PEP)四年级上册单元测试卷 Unit1 Helping at home (含听力音频听力原文及答案)
- 渔政执法快艇管理办法
- 2025年中远海运集团招聘笔试备考题库(带答案详解)
- 2025至2030光纤电缆(光缆)行业发展趋势分析与未来投资战略咨询研究报告
- 洗衣房衣物洗涤操作规范
评论
0/150
提交评论