HTTP Live Streaming 分析
技术含量:
常用的流媒体协议主要有 HTTP 渐进下载和基于 RTSP/RTP 的实时流媒体协议,这二种基本是完全不同的东西,目前比较方便又好用的我建议使用 HTTP 渐进下载的方法。在这个中 apple 公司的 HTTP Live Streaming 是这个方面的代表。它最初是苹果公司针对iPhone、iPod、iTouch和iPad等移动设备而开发的流.现在见到在桌面也有很多应用了, HTML5 是直接支持这个。
我们可以看看 HTTP Live Streaming 是怎么样工作的。平时的直播技术中,播放模式中必须等待整个文件下载完才行,在 HLS 技术中 Web 服务器向客户端提供接近实时的音视频流。但在使用的过程中是使用的标准的 HTTP 协议,所以这时,只要使用 HLS 的技术,就能在普通的 HTTP 的应用上直接提供点播和直播。
要详细了解原理,我们先看看这个所需要的步骤。
视频采集 ->编码器 -> 流分割 -> 普通 web 服务(索引文件和视频文件) -> 客户端
内容准备的过程大约二种,一是视频采集,编码器首先将摄像机实时采集的音视频数据压缩编码为符合特定标准的音视频基本流,也可以拿编码完了的文件,有一点必须保证,就是一定要使用H.264视频和AAC音频,因为发明这个的是苹果公司,只支持这个。然后给这些封装成成为符合MPEG-2(MPEG 2 TS、MPEG2 PS之所以使用这个,主要是因为声音和视频会交织在一起,也会有关键帧来让视频可以直接播放).
流分割部分在这个中,比起 RTSP 之类和普通点播的最大不同,就是他会给 MPEG-2 分割成很多个 ts 的文件。分割过程大多是按时间来切,根据国外的资料,建议切 10s 一个的文件,如果码流高可以 5 秒一次。在分割还有一点不同,就是这时流分割器会生成一个含有指向这些小TS文件指针的索引文件
所以这个文件也必须在 web 服务器上,不能少。每多 10s 时,就会多一个 ts 文件,所以索引也会根着修改成最新的几段视频。
最后,这些切分了的小的一系列的 ts 文件,放到普通的 web 服务器中就行了。这时在 CDN 中也是一样,因为请求这些文件会使用标准的 HTTP 协议。索引文件后缀是.m3u8 ,索引文件采用扩展的M3U播放列表格式,其实就一文本。
内部的视频的地址会是如下
http://media.example.com/s_96ksegment1.ts
http://media.example.com/s_96ksegment2.ts
http://media.example.com/s_96ksegment3.ts
所以这时可以直接做 Cache 和直接放到 Web 服务器中,简单方便。
如果 MIME 的信息输出不对的话,记的要修改这加入 ts 和 m3u8 的后缀支持
.m3u8 application/x-mpegURL
.ts video/MP2T
最后就是客户端,如果是 HTML 直接在 HTML5 中直接支持这种视频可以使用如下标签
<video tabindex="0" height="480" width="640">
<source src="/content1/content1.m3u8">
</video>
如果是应用客户端(Safari QuickTime之类),就得装软件来支持,客户端会根据选择的流的索引来下载文件,当下载了最少二段后开始播放。直接 m3u8 的索引结束。另外,HTTP可以设计成的自适应比特率流,在不同网络环境,选择下载不同码流的视频。
所以整个 HTTP Live Streaming 无论是直播还是点播,都能做到近似实时的方式来进行流播放。理论的最小时延是每个切片的长.
目前本协议加入了 IETF 的草案建议
http://tools.ietf.org/id/draft-pantos-http-live-streaming-01.txt
如果网站也想使用这种来做视频请看 iPhone HTTP 流与 FFMpeg 和开放的源 Segmenter
http://www.ioncannon.net/programming/452/iphone-http-streaming-with-ffmpeg-and-an-open-source-segmenter/
Akamai
http://iphone.akamai.com/
白皮书 (http://www.akamai.com/dl/akamai/iphone_wp.pdf)
HTTP Live Streaming 分析相关推荐
- Online Internet Traffic Monitoring System Using Spark Streaming 基于Spark Streaming的在线网络交通监管系统
基于Spark Streaming的在线网络交通监管系统 摘要 由于爆炸增长的网络流量数据,网络管理者必须能够监管整个网络的状况并高效地管理网络资源.传统的网络分析方法通常是单机执行,而这种方式因 ...
- 漫谈流式计算的一致性
参考, http://data-artisans.com/high-throughput-low-latency-and-exactly-once-stream-processing-with-apa ...
- python动态柱状图_Python+matplotlib绘制动态更新的柱状图
Python+matplotlib绘制极坐标柱状图(南丁格尔玫瑰图) Python使用折线图.柱状图.热力图比较不同班级相同学号学生的成绩 问题描述:有些学校的学号最后两位是根据入学成绩顺序排的,那么 ...
- 解读2015之大数据篇:大数据的黄金时代
2015年,整个IT技术领域发生了许多深刻而又复杂的变化,InfoQ策划了"解读2015"年终技术盘点系列文章,希望能够给读者清晰地梳理出技术领域在这一年的发展变化,回顾过去,继续 ...
- 开源大数据周刊-第22期
摘要: 本周关注:大数据部门.数据科学家.机器学习发展与机遇.spark2.0 Structured Streaming.Hbase运维.Sqoop.Flink的第一本书籍. 阿里云E-Mapredu ...
- 互联网摸鱼日报(2022-12-21)
互联网摸鱼日报(2022-12-21) InfoQ 热门话题 数字化转型到了要结果的时候,容器拿什么兑现? 颠覆开发模式的创新发布背后,我看见了云计算的下一个十年 NGINX Sprint China ...
- 比读文档更易上手的Spark入门教程来啦!
Spark 开创至今,已经走过了近 12 年.12 年间,时代的脚步不断前进,我们看到互联网不断发展,各种初创公司崭露头角,在公司日常业务中需要处理的数据量也飞速增长.数据中心也从云下逐渐迁往云上,从 ...
- 人工智能导论课堂笔记
人工智能导论 时间:2022年10月19日下午 班级:2022级人工智能应用技术1班 作业问题: Python安装注意事项 1.下载Python3.X的版本,如:3.10, 3.9, 3.8,不推荐下 ...
- Spark-ML-基于云平台和用户日志的推荐系统
架构: 数据收集:spark stareming从Azure Queue收集数据,通过自定义的spark stareming receiver,源源不断的消费流式数据. 数据处理: spark sta ...
最新文章
- centos php sftp 扩展,Linux(CentOS)上配置 SFTP
- 【Linux系统编程】 文件描述符的复制:dup()和dup2()
- 【史上最详细】动态规划:矩阵连乘问题(C++实现,含备忘录方法)
- 小波阈值去噪法基础理论
- Docker认识、安装及使用(windows7)
- JAVA编程心得-JAVA实现CRC-CCITT(XMODEM)算法
- Git Specification
- android批量文件上传(android批量图片上传)
- linux中禁用Root帐户的4种方法
- 查看mysql二进制日志
- C++ string获取字符串元素:[]和at()
- php 递归函数 示例,php递归函数使用示例详解
- JAVA导出txt文件
- vue element web 表单设计工具
- debug断点调试进不去
- MATLAB 绘制堆叠柱状图
- [音视媒体制作]小巧的音频处理工具 GoldWave 进阶教程
- python实战:合并多个不同样式的excel的sheet到一个文件中
- ios的Safari浏览器下视频播放问题
- 图解IFRS9 金融工具(9) 套期会计概述