iOS视频流开发(1)—视频基本概念

手机比PC的优势除了便携外,她最重要特点就是可以快速方便的创作多媒体作品。照片分享,语音输入,视频录制,地理位置。一个成功的手机APP从产品形态上都有这其中的一项或多项,比如instagram,微信。如果把Web2.0的交互体验照搬到手机上就是死路一条。

微视频可以说把手机的视频录制和碎片时间两个特点发挥到了极致,视频相关的APP现在无温不火的原因我认为跟坑爹的运营商有关。虽然现在移动网络流量小速度慢,但是不妨碍我们先把技术积累做起来。

视频实质:

纯粹的视频(不包括音频)实质上就是一组帧图片,经过视频编码成为视频(video)文件再把音频(audio)文件有些还有字幕文件组装在一起成为我们看到的视频(movie)文件。1秒内出现的图片数就是帧率,图片间隔越小画面就越流畅,所以帧率越高效果就越好,需要的存储空间也就越多。

视频编码:

因为不进行编码的视频数据量非常大,会造成存储和传输上的困难,所以视频文件都需要在录制完成后进行编码。视频编码主要从两个维度压缩数据。1、单张图像某一区域相邻像素相似,比如一片红色只记录红色色值和区域,不用记录这个区域的每一个像素点。2、相邻图像之间内容相似,因为相邻两帧要制造连续的效果,所以两帧之间的内容一般非常接近。目前主流的视频编码技术都是用图像编码方法对第一帧进行编码,然后用某种方式描述接下来的帧相对于附近的帧有什么区别。

视频格式:

MP4、MOV、AVI、RMVB这些播放格式其实都是封装格式,除了RMVB比较特殊外,其他格式内封装的视频编码格式都是H264,H264以高压缩率闻名于世,压缩效率比MEPG-2提升一倍多,但是世上没有两全其美的事,H264的解码难度提高了3倍多。

视频码率:

视频文件的大小除以是视频的时长定义为码率。很多人搞不清楚码率和分辨率跟视频质量的关系,包括本人。码率可以理解为取样率,单位时间内取样率越大,精度就越高,同时体积也越大。当视频没有经过编码时,如果分辨率越高,那么视频图像的细节越清晰。但如果视频经过编码,被限制在一定码率内,编码器就必须舍弃掉一部分细节。所以分辨率和码率都同清晰度有关。

软解码和硬解码:

对H264的视频解码给CPU造成了很大负担,所以手机工程师把这部分工作交给了更善于进行处理简单工作但是数据量较大的GPU,GPU解码就是所谓的硬解码,CPU解码就是软解码。iOS提供的播放器类使用的是硬解码,所以视频播放对CPU不会有很大的压力,但是支持的播放格式比较单一,一般就是MP4、MOV、M4V这几个。

HTTP Live Streaming:

HTTP Live Streaming(缩写是 HLS)是一个由苹果公司提出的基于HTTP的流媒体网络传输协议。它的工作原理是把整个流分成一个个小的基于HTTP的文件来下载,每次只下载一些。当媒体流正在播放时,客户端可以选择从许多不同的备用源中以不同的速率下载同样的资源,允许流媒体会话适应不同的数据速率。支持的视频流编码为H.264。我们在视频网站上看到的M3U8后缀的播放链接就是使用HLS协议的视频。HLS优点,1、看完一段缓存一段,防止只看一段视频但是把整个视频文件都缓存下来的用户,减少服务器压力和节省流量。2、根据用户网速切换不同的码率,兼顾流程性和清晰度。
HLS支持情况:iOS 3.0及之后的版本,Android 3.0及之后的版本,HTML5。

终端播放格式的选取:

Android由于3.0之后才支持HLS,所以Android2.3只能用MP4,Android4.0、iOS、HTML5可以用m3u8,而不支持HTML5的浏览器只能用flash播放swf,而iOS又不支持flash。由于以上原因,目前无法实现一个播放地址在所有的平台都通用。

iOS视频播放:

iOS提供MPMoviePlayerController和AVPlayer类进行视频的播放,关于视频播放开发的相关内容由于篇幅有限在下一篇文章中展开。

iOS视频流开发(2)—视频播放

时间: 2025-01-02 00:56:48

iOS视频流开发(1)—视频基本概念的相关文章

iOS视频流开发(2)—视频播放

承上篇,iOS视频流开发(1)-视频基本概念   本篇文章主要介绍iOS视频播放需要用到的类 MPMoviePlayerController MP简介 iOS提供MPMoviePlayerController类进行播放,支持流媒体和文件播放.MPMoviePlayerController足够强大,几乎不用写几行代码就能完成一个播放器.视频内容会渲染到他的View上,这个View可以移动.缩放,放在任何用户想放的地方,而在缩放移动的过程中视频都可以正常的播放,完全不受影响. 通常我们在ipad上会

流媒体-ios开发手机视频客户端,不知道再怎么嵌入一个视频播放窗口

问题描述 ios开发手机视频客户端,不知道再怎么嵌入一个视频播放窗口 要给一个网站做一个ios的视频播放器,视频资源从它的网站下载,听说要用到流媒体技术,不知道怎么回事,怎么在代码中嵌入一个播放器啊,怎么把网站发来的数据包解析成视频文件呢?

iPhone与iPad开发实战——iOS 经典应用剖析--视频

iPhone与iPad开发实战--iOS 经典应用剖析视频 观看地址:http://v.51work6.com/courseInfoRedirect.do?action=courseInfo&courseId=241038         ios作为一款为移动终端打造的手持设备操作平台,其引领技术前沿.时尚前沿.拥有自主知识产权,引起业界的高度关注.在2011年股市动荡"经济寒流"中,苹果公司一跃成为全球市值第一的公司. 苹果公司对其软件商店的大力度的监管以及全球的开发性,调动

iOS 视频流在线播放问题

问题描述 iOS 视频流在线播放问题 这种格式的视频里怎么在线播放http://kzy2015.wicp.net:4267/zh/api/webapi/DownScenicAreaFile/6?filetype=1&ScenicAreaId=4&fuid=19&fsbm=oAqU3dIetpiM6HeehcVC

iOS应用开发入门指南 - 编写 Objective-C 代码

如果你刚开始接触 iOS 或 Mac OS X 编程,首先要学习一点编程语言 Objective-C 入门知识.Objective-C 并不是一门复杂的语言,经过一段时间的接触,你就能体会到它的优雅.Objective-C 语言实现了严格的面向对象编程.它扩展了标准 ANSI C 语言,增加了定义类和方法的语法.它还推行类和接口的动态扩展性,使任何类都能适配和采用. 如果你已经掌握了 ANSI C 语言,下面的内容能够帮助你掌握 Objective-C 的基本语法.如果你有其他面向对象编程语言的

《iOS 9 开发指南》——第1章,第1.1节IOS开发入门

第1章 IOS开发入门 iOS 9 开发指南 iOS是一个强大的系统,被广泛地应用于苹果公司的系列产品iPhone.iPad和iTouch设备中.iOS通过这些移动设备展示了一个多点触摸界面及众多内置传感器的界面.本章将带领大家认识iOS系统,为读者步入本书后面知识的学习打下基础. 1.1 iOS系统介绍 iOS 9 开发指南 图片 1 知识点讲解:光盘:视频\知识点\第1章\ iOS系统介绍.mp4 iOS是由苹果公司开发的手持设备操作系统.苹果公司最早于2007年1月9日的Mac World

Spring框架开发实践--视频

Spring框架开发实践--视频 下载地址:http://v.51work6.com/courseInfoRedirect.do?action=courseInfo&courseId=240578 本教程首先介绍了Spring框架的历史及一个简单的Spring小例子.然后介绍了Spring中基础构建--Bean,JavaEE分层开发及四层体系结构,最后按照体系结构分层介绍Spring的各个方面,其中包括了:Spring与数据持久层技术.Spring与服务层.Spring与WEB层和Spring与

《iOS 8开发指南》——第6章,第6.1节MVC模式基础

第6章 使用Xcode编写MVC程序 iOS 8开发指南 在本书前面的内容中,已经学习了面向对象编程语言Objective-C的基本知识,并且探索了Cocoa Touch.Xcode和Interface Builder编辑器的基本用法.虽然我们已经使用了多个创建好的项目,但是还没有从头开始创建一个项目.在本章的内容中,将向读者详细讲解"模型-视图-控制器"应用程序的设计模式,并从头到尾创建一个iOS应用程序的过程,为读者步入本书后面知识的学习打下基础. 6.1 MVC模式基础 iOS

《iOS 8开发指南(第2版)》——第6章,第6.1节MVC模式基础

6.1 MVC模式基础 iOS 8开发指南(第2版) 当我们开始编程时,会发现每一个功能都可以用多种编码方式来实现.但是,究竟哪一种方式才是最佳选择呢?在开发iOS应用程序的过程中,通常使用的设计方法被称为"模型-视图-控制器"模式,这种模式被简称为MVC,通过这种模式可以帮助我们创建出简洁.高效的应用程序. 6.1.1 诞生背景 在创建与用户交互的应用程序时,首先必须考虑如下3点. 用户界面:我们必须提供让用户能够与之交互的东西,例如,按钮和文本框等. 对用户输入进行处理并做出反应.