直播协议HTTP-FLV标准解读与技术实现
HTTP-FLV
HTTP-FLV,即将音视频数据封装成FLV,然后通过HTTP协议传输给客户端。
这里首先要说一下,HLS其实是一个“文本协议”,而并不是一个流媒体协议。那么,什么样的协议才能称之为流媒体协议呢?
流(stream): 数据在网络上按时间先后次序传输和播放的连续音/视频数据流。之所以可以按照顺序传输和播放连续是因为在类似 RTMP,FLV协议中, 每一个音视频数据都被封装成了包含时间戳信息头的数据包。而当播放器拿到这些数据包解包的时候能够根据时间戳信息把这些音视频数据和之前到达的音视频数据连续起来播放。MP4,MKV等等类似这种封装,必须拿到完整的音视频文件才能播放,因为里面的单个音视频数据块不带有时间戳信息,播放器不能将这些没有时间戳信息数据块连续起来,所以就不能实时的解码播放。
延迟分析
理论上(除去网络延迟外),FLV可以做到仅仅一个音视频tag的延迟。
相比RTMP的优点:
可以在一定程度上避免防火墙的干扰 (例如, 有的机房只允许 80 端口通过)。可以很好的兼容HTTP 302跳转,做到灵活调度。可以使用HTTPS做加密通道。很好的支持移动端(Android,IOS)。
抓包分析
打开网宿的HTTP-FLV流:
http://175.25.168.16/pl3.live.panda.tv/live_panda/d4e0a83a7e0b0c6e4c5d03774169fa3e.flv?wshc_tag=0&wsts_tag=57e233b1&wsid_tag=6a27c14e&wsiphost=ipdbm
HTTP/1.1 200 OK
Expires: Wed, 21 Sep 2016 07:16:02 GMT
Cache-Control: no-cache
Content-Type: video/x-flv
Pragma: no-cache
Via: 1.1 yc16:3 (Cdn Cache Server V2.0)
Connection: close
发现响应头中出现Connection: close 的字段,表示网宿采用的是短连接,则直接可以通过服务器关闭连接来确定消息的传输长度。
如果HTTP Header中有Content-Length,那么这个Content-Length既表示实体长度,又表示传输长度。而HTTP-FLV这种流,服务器是不可能预先知道内容大小的,这时就可以使用Transfer-Encoding: chunked模式来传输数据了。
如下的响应就是采用的Chunked的方式进行的传输的响应头:
HTTP/1.1 200 OK
Server: openresty
Date: Wed, 21 Sep 2016 07:38:01 GMT
Content-Type: video/x-flv
Transfer-Encoding: chunked
Connection: close
Expires: Wed, 21 Sep 2016 07:38:00 GMT
Cache-Control: no-cache
直播协议HTTP-FLV标准解读与技术实现相关推荐
- 直播平台源码搭建教程盘点直播技术中的编解码、直播协议、网络传输与简单实现
直播平台源码搭建教程盘点直播技术中的编解码.直播协议.网络传输与简单实现 Live CheatSheet | 直播技术理论基础与实践概论 音视频直播的基本流程都是采集 → 编码推流 → 网络分发 → ...
- 一文盘点直播技术中的编解码、直播协议、网络传输与简单实现
本文节选自 Live CheatSheet | 直播技术理论基础与实践概论,很多内容非作者原创,而是对 Live Links 中列举出的多篇文章的盘点总结,更多直播相关内容可以前往 xCompass ...
- 【转】一文盘点直播技术中的编解码、直播协议、网络传输与简单实现
首页 > 基础知识 > [转载]一文盘点直播技术中的编解码.直播协议.网络传输与简单实现 [转载]一文盘点直播技术中的编解码.直播协议.网络传输与简单实现 十一月 2, 2018 Live ...
- 直播技术中的编解码、直播协议、网络传输与简单实现
Live CheatSheet | 直播技术理论基础与实践概论 音视频直播的基本流程都是采集 → 编码推流 → 网络分发 → 解码 → 播放这五大环节,其中又会涉及平台硬件.编解码.网络传输.服务并发 ...
- 直播技术学习笔记(直播协议+流媒体服务器+音视频处理+FFmpeg)
直播协议 RTMP(Real Time Messaging Protocol) 简介 Time Messaging Protocol,实时消息传送协议 RTMP是Adobe公司为Flash播放器和服务 ...
- 盘点直播直播平台软件开发技术中的编解码、直播协议、网络传输与简单实现
盘点直播直播平台软件开发技术中的编解码.直播协议.网络传输与简单实现 编解码 视频封装格式就是我们通常所说的 .mp4,.flv,.ogv,.webm 等,它其实就是一个盒子,用来将实际的视频流以一定 ...
- 直播协议HLS技术要点分析:分段生成与m2u8文件
1.概述: HTTP Live Streaming(HLS)是苹果公司(Apple Inc.)实现的基于HTTP的流媒体传输协议,可实现流媒体的直播和点播,主要应用在iOS系统,为iOS设备(如iPh ...
- 标准解读系列之三:智慧高速建设需要什么样的技术架构?
文章版权所有,未经授权请勿转载或使用 智慧高速公路是以多维状态感知.多源信息融合等手段对高速公路运行状态进行智能感知,为运营方提供智慧化的监测.应急.养护.运维.决策能力,为交通管理方提供智慧化交通管 ...
- 关于直播视频平台与监控视频平台技术架构方案
关于直播视频平台与监控视频平台技术架构方案 前言 讲个大实话,直播平台复杂在直播端(也就是播放端),而监控平台复杂在接入端(前端设备或平台). 至于技术难点,难者自知. 一.直播平台(想尽一切办法来降 ...
最新文章
- 解决docker(ERROR: No such container: )错误
- About Javascript MVC
- aac蓝牙编解码协议_蓝牙音频编码哪个音质好?今天我们来逐一解读
- Google Maglev 牛逼的网络负载均衡器(转)
- 从零开始学习OpenGL ES之五 – 材质
- 【深度学习】sigmoid - 二次代价函数 - 交叉熵 - logistic回归 - softmax
- URL编解码、Big Endian和Little Endian
- Apache CXF负载平衡和故障转移
- Coursera机器学习笔记(一) - 监督学习vs无监督学习
- 跟angular2学一键开启项目--关于上个react-redux项目的一键调试
- 从梯度下降到ADMM-学习记录
- React Native Modal组件 Android覆盖状态栏
- 几款好用的串口和网络调试助手
- 大地测量控制点坐标转换技术规范
- Ceph Calamari软件包介绍
- 【免费使用】【redis】【数据库】快速使用redislabs免费套餐 注册和配置redis 缓存 数据库 nosql
- spring boot 搭建的一个企业级快速开发脚手架
- guava 各个版本下载地址
- sas人行申请表操作笔记
- 简单的播放AVI方法:CAnimateCtrl类
热门文章
- .Net 事件类型的实现和推荐做法
- CodeForces - 1535C Unstable String(思维)
- 兰州大学第一届『飞马杯』程序设计竞赛 - ★★飞马祝福语★★(动态dp)
- CodeForces - 1252K Addition Robot(线段树维护矩阵)
- 牛客 - 奇怪的背包问题增加了(贪心)
- BZOJ2956 (模积和)
- 进程隐藏与进程保护(SSDT Hook 实现)(二)
- C++中的mutable关键字
- 开源浪潮下程序员的职业规划和成长
- 手写实现Spring(IOC、DI),SpringMVC基础功能