苹果上的Http Live Stream(HLS)技术初探

news/2024/11/15 6:41:27/
最近在做RTMP转HLS的流媒体服务器项目。需要重新了解Http Live Stream(HLS)技术,于是,总结了一些相关技术细节,如下。

苹果的视频数据流播放技术要求

        一如苹果的强势作风,苹果对其旗下的iPhone、iPod、iPad、Apple TV各种设备上的视频数据播放有强制的技术限制。首先,说说音视频数据的数据压缩格式要求。

        1.必须使用H.264的编码压缩格式。iPhone 3G或者更新版本、iPod touch 第二代或者更新的版本可以选择支持H.264 Baseline 3.1 ,为了兼容这些设备的旧版本,则需要支持H.264 Baseline 3.0。对iPad,Apple TV 2 或者更新的版本,可以选择使用Baseline profile 3.0,Baseline profile 3.1或者是Main profile 3.1。其选择原则可以总结为:大屏幕的视频数据使用Main Profile3.1;小屏幕的视频数据使用Baseline profile 3.1,为了兼容旧版本的平台,需要同时支持Baseline Profile的3.0版本。

        2.音频编码压缩格式

        HE-AAC/AAC-LC,stereo或者是MP3(MPEG-1 Audio Layer 3),stereo。

        其次,说说视频流播放技术要求

        1.视频流时长超过十分钟或者视频流五分钟内数据流量超过5MB需要强制使用Http Live Stream技术方案。

        2.如果应用在无线蜂窝网络(2g/3g等网络)中使用Http Live Stream,至少需要提供一个在64kbps或者更低带宽下的视频数据流(例如,提供一个版本只保留声音与静态图片)。

        3.不满足要求的软件将被下架。

        可以说,Http Live Stream技术(下文简称为HLS)是苹果视频播放方案的核心。

什么是HLS

        维基百科把HLS定义为苹果公司实现的一种完全基于HTTP的媒体流协议。要理解HLS,先看看HLS的典型组网结构。在苹果公司的技术文档描述中HLS组网由三部分组成,后台服务器端Server 、分发模块Distribution 、以及客户端Client。


        后端Server生成用于最终用于传输的媒体数据,原始的语音视频数据(例如H.264的视频和AAC的音频)被打包成MPEG-2的传输数据流(MPEG transport stream,由于定义在MPEG-2规范的第一部分,又叫做MPEG-2 transport stream)。MPEG-2的传输数据流被分割成一块一块,例如,每一块存储在一个后缀为ts的媒体文件中。与此同时,生成一个对应的文件后缀为m3u8的索引文件。

        媒体流索引文件与对应的一系列媒体文件存放在分发模块Distribution 中,分发模块Distribution是一个标准的Web 服务器,通过标准的HTTP访问,客户端Client可以获取到媒体流的索引文件,并通过索引文件逐个获取媒体流的分块ts文件。客户端Client据此可以拼接出完整的视频流,显示给最终的用户。相对于其他移动平台上使用的基于UDP协议的RTSP媒体数据流播放方案,分发模块Distribution仅仅使用HTTP连接传输所有的数据,使其多媒体数据流能够最广泛的穿越各种边缘网络的网关、路由器、网络代理设备。此外,分发模块Distribution可以和各种数字内容分发的前端机器合作,提供缓存、媒体数据的分布式存储等。

        索引文件的一个典型例子:


        这里总结一下支持HLS的非PC客户端,苹果公司所出的所有设备,包括iPhone、iPad、iPod、Apple TV均内置支持HLS,并且只支持HLS(不支持其他平台使用的RTSP媒体数据流)。Google的Android 3.0以后的版本也支持HLS。

        在网页中访问HLS视频数据流代码如下:


        下面以苹果平台上的多媒体“实时”转码功能软件airplay video软件为实例,对HLS多媒体数据流进行抓包分析。

视频数据的“实时”转码功能

        移动互联网上的终端只具有有限的多媒体编解码能力,其原因分析起来,一来受限于平台的多媒体能力支持,二来受限于版权授权的限制,像PC电脑特别是国内的PC电脑上,几乎无限制的在系统上安装了各种编解码器,具有几乎是无限的视频编解码能力。于是,苹果平台上有一类软件能完成下面的功能,PC电脑上安装一个服务器,客户端运行在iPad/iPhone等移动互联网终端上,运行在PC电脑上的模块负责把多媒体数据流“实时”转换成

        移动互联网终端能支持的码流,Air Vedio/Air Play it就是这类应用。这类应用受限与苹果平台只支持HLS,势必也只能使用HLS方案。

        下面的抓包在Air Vedio的服务器端PC侧进行抓包。下面这个HTTP请求是获取HLS多媒体流的索引文件。


下面这个http请求获取HLS的媒体分块文件。


http://www.ppmy.cn/news/690780.html

相关文章

app live photo_玩好手中 6S 的 Live Photo 功能,你还需要这两款 App

我们都晓得新款的 iPhone 6s 增加了 Live Photo 的新功能,简单而言,就是当你在该模式下拍摄照片的时候,会同时拍摄一张 jpg 图片和一个3秒(45帧)的 MOV 文件,当你使用 3D touch 按压图片的时候,会看到静态图片变为一段…

Live reload

曾几何时客户端上的开发同学有多么羡慕前端开发同学的 Live Reload ,尤其是 iOS 平台,动辄链接 5 分钟,极大的影响了开发效率,这次 苹果官方 给开发者带来了此项功能。 但 One More Thing ,在 Xcode 中不仅仅可以通过…

app live photo_让照片动起来,一招教你将 Live Photos 变成动图

目前,利用 Live Phontos 功能拍摄的动态照片,在苹果的多数 i 系列设备上都能查看,包括所有的 iPhone,iPad 和 iPod touch,并且在 Mac 的 OS X 系统中的“信息”应用上也可以查看。 如何拍摄和查看 Live Photos? 拍摄 Live Photos 其实非常简单,很多小伙伴可能已经无意识…

微软live服务器地址,在Mail中设置windows Live hotmail方法

Mail是苹果系统的内置软件,是一款非常棒的软件,用起来很自然,起码和outlook比起来给人的感觉是这样。接下来是小编为大家收集的在Mail中设置windows Live hotmail方法,希望能帮到大家。 在Mail中设置windows Live hotmail方法 在过…

苹果手机的照片.live格式如可打开

在Win10下面显示 打开 .livp 苹果实况照片: 可以用WINRAR 直接提取“.livp文件(视其为压缩文件)”,内含两个文件,一个JPEG一个MOV,请看下图显示

导航机器人硬件配置及其常用功能

系列文章目录 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 TODO:写完再整理 文章目录 系列文章目录前言电磁线,磁条,滑轨方案碰撞杆和超声波传感器测距红外,结构光传感器测距编码器odom传感器imu传感器uwb,gnss(gps,rtk),千寻视觉及深度相机传感器…

继承和组合的区别

什么是继承 继承是面向对象三大基本特征之一(继承,封装,多态),继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类…

某些手机搜索不到蓝牙外设的原因

发射频偏造成的, 需要修改晶振的匹配电容.