苹果上的Http Live Stream(HLS)技术初探
最近在做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 Live Stream(HLS)技术初探相关推荐
- Oracle Stream Replication技术
Stream 是Oracle 的消息队列(也叫Oracle Advanced Queue)技术的一种扩展应用. Oracle 的消息队列是通过发布/订阅的方式来解决事件管理.流复制(Stream re ...
- 字节跳动将双月OKR调整为季度;马斯克批OpenAI违背初心:被微软控制,只顾赚钱;苹果上新348元省电保护膜|极客头条
「极客头条」-- 技术人员的新闻圈! CSDN 的读者朋友们早上好哇,「极客头条」来啦,快来看今天都有哪些值得我们技术人关注的重要新闻吧. 整理 | 梦依丹 出品 | CSDN(ID:CSDNnews ...
- 字节跳动将双月OKR调整为季度;马斯克批OpenAI违背初心:被微软控制,只顾赚钱;苹果上新348元省电保护膜|极客头条...
「极客头条」-- 技术人员的新闻圈! CSDN 的读者朋友们早上好哇,「极客头条」来啦,快来看今天都有哪些值得我们技术人关注的重要新闻吧. 整理 | 梦依丹 出品 | CSDN(ID:CSDNnews ...
- 四天工作制究竟香不香;复旦发布类ChatGPT模型Moss;苹果上新348元省电保护膜 | EA周报...
EA周报 2023年2月24日 每个星期1分钟,元宝带你喝一杯IT人的浓缩咖啡,了解天下事.掌握IT核心技术. 周报看点 1.周鸿祎:ChatGPT可能两三年内就会产生自我意识威胁人类 2.余承东:华 ...
- 华强北又给苹果上了一课,成功破解美版iPhone 14 eSIM !
每年出新款iPhone的时候,就是华强北"大展身手"的时候.甭管苹果官方整出多强的技术,华强北总能带给大家新的惊喜. 这次,北美版iPhone14系列全系取消实体卡槽,仅支持eSI ...
- .obj格式的文件怎么显示在html_怎么才能把安卓手机备忘录便签里的文件转到苹果上?...
晨曦把之前的华为手机换成了苹果手机,试用了两天新手机后,晨曦表示这款苹果手机确实非常好用,所以她准备把一些重要的手机数据转移到苹果手机中继续使用了.晨曦使用了一款手机搬家工具把联系人.短信.图片等数据 ...
- Kindle资源-史上最全60GB的Kindle技术电子书资源网盘打包下载
Kindle资源-史上最全60GB的Kindle 技术资源网盘打包下载 Kindle资源-史上最全60GB的Kindle电子书资源,主要格式是azw3和mobi,排版质量都很好,需要百度云网盘链接的加 ...
- struts2 common-fileupload上传文件大小限制 - hanxin830311 - JavaEye技术网站
struts2 common-fileupload上传文件大小限制 Java代码 1. org.apache.commons.fileupload.FileUploadBase$SizeLimitEx ...
- 2022阿里云码上公益“第益课”大学生技术公益实践计划活动说明
简介:简介: 2022年,码上公益联合共青团杭州市余杭区团委.杭州师范大学.浙江工商大学.浙江大学.阿里巴巴公益.阿里云开发者学堂.宜搭发起"第益课"高校技术公益实践计划,为高校学 ...
最新文章
- 制度缺陷,美国96%受访公司的人工智能项目陷于停顿,难怪封堵
- SQL Server 查找统计信息的采样时间与采样比例
- 在本地库不连接远远程库的情况下操作远程库-----sql server
- 操作系统的实现(0)
- logon dialog 的弹出逻辑debug出来了,有很多有用的代码片段
- 融资12亿后倒闭 这家机器人公司宣布全体裁员
- 一个人开长途车旅游安全吗?
- java JVM剖析
- C# 执行外部命令的代码
- 下载faceScrub人脸数据库(单线程版本)
- stat /bin/bash: no such file or directory“: unknown.
- 在O(1)的时间内删除链表节点
- UE4项目的命名规则
- 小米路由器mini刷lede_小米 mini 路由器刷 openwrt
- Docker-day1-安装+使用+常用镜像命令
- c语言编程中的大于号怎么打,excel表格中怎么输入比较运算符号(大于、小于号)?...
- office文件转换为pdf文件
- 如何设置省略号对其序号 html,CSS实现单行、多行文本溢出显示省略号(…)
- 利用js制作一个简单的QQ农场小游戏
- 【R语言】——火山图绘制