最近在做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)技术初探相关推荐

  1. Oracle Stream Replication技术

    Stream 是Oracle 的消息队列(也叫Oracle Advanced Queue)技术的一种扩展应用. Oracle 的消息队列是通过发布/订阅的方式来解决事件管理.流复制(Stream re ...

  2. 字节跳动将双月OKR调整为季度;马斯克批OpenAI违背初心:被微软控制,只顾赚钱;苹果上新348元省电保护膜|极客头条

    「极客头条」-- 技术人员的新闻圈! CSDN 的读者朋友们早上好哇,「极客头条」来啦,快来看今天都有哪些值得我们技术人关注的重要新闻吧. 整理 | 梦依丹 出品 | CSDN(ID:CSDNnews ...

  3. 字节跳动将双月OKR调整为季度;马斯克批OpenAI违背初心:被微软控制,只顾赚钱;苹果上新348元省电保护膜|极客头条...

    「极客头条」-- 技术人员的新闻圈! CSDN 的读者朋友们早上好哇,「极客头条」来啦,快来看今天都有哪些值得我们技术人关注的重要新闻吧. 整理 | 梦依丹 出品 | CSDN(ID:CSDNnews ...

  4. 四天工作制究竟香不香;复旦发布类ChatGPT模型Moss;苹果上新348元省电保护膜 | EA周报...

    EA周报 2023年2月24日 每个星期1分钟,元宝带你喝一杯IT人的浓缩咖啡,了解天下事.掌握IT核心技术. 周报看点 1.周鸿祎:ChatGPT可能两三年内就会产生自我意识威胁人类 2.余承东:华 ...

  5. 华强北又给苹果上了一课,成功破解美版iPhone 14 eSIM !

    每年出新款iPhone的时候,就是华强北"大展身手"的时候.甭管苹果官方整出多强的技术,华强北总能带给大家新的惊喜. 这次,北美版iPhone14系列全系取消实体卡槽,仅支持eSI ...

  6. .obj格式的文件怎么显示在html_怎么才能把安卓手机备忘录便签里的文件转到苹果上?...

    晨曦把之前的华为手机换成了苹果手机,试用了两天新手机后,晨曦表示这款苹果手机确实非常好用,所以她准备把一些重要的手机数据转移到苹果手机中继续使用了.晨曦使用了一款手机搬家工具把联系人.短信.图片等数据 ...

  7. Kindle资源-史上最全60GB的Kindle技术电子书资源网盘打包下载

    Kindle资源-史上最全60GB的Kindle 技术资源网盘打包下载 Kindle资源-史上最全60GB的Kindle电子书资源,主要格式是azw3和mobi,排版质量都很好,需要百度云网盘链接的加 ...

  8. struts2 common-fileupload上传文件大小限制 - hanxin830311 - JavaEye技术网站

    struts2 common-fileupload上传文件大小限制 Java代码 1. org.apache.commons.fileupload.FileUploadBase$SizeLimitEx ...

  9. 2022阿里云码上公益“第益课”大学生技术公益实践计划活动说明

    简介:简介: 2022年,码上公益联合共青团杭州市余杭区团委.杭州师范大学.浙江工商大学.浙江大学.阿里巴巴公益.阿里云开发者学堂.宜搭发起"第益课"高校技术公益实践计划,为高校学 ...

最新文章

  1. 制度缺陷,美国96%受访公司的人工智能项目陷于停顿,难怪封堵
  2. SQL Server 查找统计信息的采样时间与采样比例
  3. 在本地库不连接远远程库的情况下操作远程库-----sql server
  4. 操作系统的实现(0)
  5. logon dialog 的弹出逻辑debug出来了,有很多有用的代码片段
  6. 融资12亿后倒闭 这家机器人公司宣布全体裁员
  7. 一个人开长途车旅游安全吗?
  8. java JVM剖析
  9. C# 执行外部命令的代码
  10. 下载faceScrub人脸数据库(单线程版本)
  11. stat /bin/bash: no such file or directory“: unknown.
  12. 在O(1)的时间内删除链表节点
  13. UE4项目的命名规则
  14. 小米路由器mini刷lede_小米 mini 路由器刷 openwrt
  15. Docker-day1-安装+使用+常用镜像命令
  16. c语言编程中的大于号怎么打,excel表格中怎么输入比较运算符号(大于、小于号)?...
  17. office文件转换为pdf文件
  18. 如何设置省略号对其序号 html,CSS实现单行、多行文本溢出显示省略号(…)
  19. 利用js制作一个简单的QQ农场小游戏
  20. 【R语言】——火山图绘制

热门文章

  1. 校园管理系统模板、毕业设计模板
  2. 5G一周热闻:华为夺联通5G大单,首张5G电话卡发放
  3. 关于cnn在语音识别、环境音识别中的实际运用问题
  4. 发那科pmc地址分配_(完整版)FANUC PMC 地址表
  5. 网址是什么?URL 又是什么?
  6. 时钟壁纸代码python_Python实现系统桌面时钟 | 学步园
  7. 仿淘宝商城项目(分布式)
  8. MATLAB中eps使用
  9. Aapche POI txt 导入excel
  10. ucore lab1 实验报告