http-flv是什么

http-flv是以http为传输协议,flv媒体格式为内容的方式实时下载flv音视频帧。为什么选择flv格式而非mp4?原因是mp4必须要有moov box或者moof box才能播放,而moov box和moof box 中主要存储的是帧的索引,在实时直播过程中所有未产生的帧都是无法预测的,所以moov和moof都不能提前生成,也就很难做到实时的效果。当然moof box有点特殊,可以重复出现,这样就能每隔几帧就生产一个moof box下发给客户端,也是可以做到直播效果的,这种方式被人们广泛称为http-fmp4,DASH协议就是是利用moof实现的。

flv文件不同之处在于,播放器只要获取到其中的metadata、avc-header、aac-header后就可以顺序播放接下来的所有帧。所以服务器只需要在客户端连接的时候顺序发送metadata、avc-header\aac-header后连续不断地发送音视频帧播放器就会不停接收并且播放flv内容了。

sequenceDiagram
播放器->>服务器: http://ip/app/stream.flv
服务器->>播放器: 返回flv-header
服务器->>播放器: 返回metadata
服务器->>播放器: 返回avc-header
服务器->>播放器: 返回aac-header
服务器->>播放器: 返回video-frame
服务器->>播放器: 返回audio-frame
服务器->>播放器: ...
服务器->>播放器: ...
服务器->>播放器: ...

具体涉及到的flv-header、metadata、avc-header\aac-header是什么这里不做讨论,感兴趣的朋友可以搜索一下“video_file_format_spec_v10”

http是如何下发flv数据的

上面说到的下发过程是基于http下载进行的,但是一般http下载的时候都会在http头中添加content-length参数,该参数是为了告诉客户端需要接收多少字节的数据。但是作为直播,我们是无法预知要传输多长数据的,所以content-length参数一定不能出现,只要没有这个参数,客户端就会一直接收服务器发送的数据直到tcp连接断开。

既然没有了content-length,是不是就意味着直接下发原始flv流就行了呢?答案是否定的,因为在没有content-length的情况下大部分客户端都希望服务器支持chunked编码,把需要发送的数据打包成一段一段的数据。具体chunked编码是怎么回事网上有很多文章做详细介绍,这里就不再累述。以上所提到的所有内容都在easydss服务器上做了完整的支持。


EasyDSS流媒体服务器

EasyDSS流媒体服务器具有高效的视频管理功能,支持一站式的上传、转码、直播、回放、嵌入、分享功能,具有多屏播放、自由组合、接口丰富等特点。该系统完全由C语言研发实现,能够最大限度的挖掘硬件和网络的潜能,实现在一台普通服务器上支持超过5000个并发播出。系统支持HTTP、HLS、RTMP等播出协议,面向Windows、Android、iOS 、Mac等终端提供稳定流畅的直播、点播、时移、回看服务,广泛应用到互联网教学、互联网电视、IPTV、VOD、视频聊天和各种互联网直播/点播。详细EasyDSS文档及资料获取:http://www.easydss.com

EasyDSS高性能RTMP、HLS(m3u8)、HTTP-FLV、RTSP流媒体服务器同步输出http-flv协议流是怎么实现的?的更多相关文章

  1. EasyDSS高性能RTMP、HLS(m3u8)、HTTP-FLV、RTSP流媒体服务器的视频直播录像、检索、回放方案

    需求背景: 近期遇到客户反馈对于直播摄像机录像功能是有一定的需求点的,其实EasyDarwin团队早就研发出对应功能,只是用户对于产品没有足够了解,因此本篇将对录像功能来做一次介绍. 首先,录像就是对 ...

  2. EasyDSS高性能RTMP、HLS(m3u8)、HTTP-FLV、RTSP流媒体服务器与EasyDSS流媒体解决方案的不同

    背景分析 众所周知,立足于视频软件的开发,我们的产品很多.经常有客户问到我们产品的差别以及某个产品在某个系统架构中的具体定位,因此我想通过一系列的博客说明一下,不同产品之间的区别,以及在具体架构中自身 ...

  3. EasyDSS高性能RTMP、HLS(m3u8)、HTTP-FLV、RTSP流媒体服务器解决方案之Nodejs调用bat或sh脚本

    关于EasyDSS流媒体服务器 EasyDSS商用流媒体服务器解决方案是一套集流媒体点播.转码与管理.直播.录像.检索.时移回看于一体的一套完整的商用流媒体服务器解决方案,EasyDSS高性能RTMP ...

  4. EasyDSS高性能RTMP、HLS(m3u8)、HTTP-FLV、RTSP流媒体服务器web前端:vue组件之间的传值,父组件向子组件传值

    前端方面,EasyDSS流媒体服务器与EasyNVR有着根本的不同.EasyNVR使用的是传统的js来进行开发,而EasyDSS使用的是webpack+vue来进行开发的,了解vue+webpack的 ...

  5. EasyDSS高性能RTMP、HLS(m3u8)、HTTP-FLV、RTSP流媒体服务器前端源码重构(六)- webpack-dev-server 自适应支持手机端访问

    关于EasyDSS EasyDSS商用流媒体服务器解决方案是一套集流媒体点播.转码与管理.直播.录像.检索.时移回看于一体的一套完整的商用流媒体服务器解决方案,EasyDSS高性能RTMP流媒体服务器 ...

  6. Nginx搭建flv mp4流媒体服务器[转]

    Nginx搭建flv mp4流媒体服务器 作者:二蛋 时间:December 1, 2014 分类:Note 环境:Centos 6.4 32bit 一.安装依赖包 1.安装zlib wget htt ...

  7. (转)CentOS6.5安装Darwin Streaming Server搭建RTSP流媒体服务器

    参考: 1,CentOS6.5安装Darwin Streaming Server搭建RTSP流媒体服务器 http://www.yimiju.com/articles/567.html

  8. EasyDSS高性能RTMP、HLS(m3u8)、FLV、RTSP流媒体服务器运行遇到getpwnam(_xxxxx_)错误的解决办法

    EasyDSS RTMP流媒体服务器是什么? EasyDarwin如何支持点播和RTMP/HLS直播?EasyDSS! getpwnam("xxxxx") 近期有EasyDSS流媒 ...

  9. EasyDSS高性能RTMP/FLV/HLS(m3u8)/RTSP流媒体服务器技术的HTTP QueryString URL的C++实现方案

    EasyDSS支持HTTP GET接口访问,我们需要获取url的各种参数信息 比如 http://ip:port/action?a=1&b=2&c=3 我们需要知道对应的a.b.c的值 ...

随机推荐

  1. Kali下的内网劫持(四)

    在前面我都演示的是在Kali下用命令行的形式将在目标主机上操作的用户的信息捕获的过程,那么接下来我将演示在Kali中用图形界面的ettercap对目标主机的用户进行会话劫持: 首先启动图形界面的ett ...

  2. C++(四十九) — set、multiset 容器的基本操作

     1.set的基础知识 set的特性是:所有元素都会根据元素的键值自动排序,set的元素不像map那样可以同时拥有实值(value)和键值(key),set元素的键值就是实值,实值就是键值.set不允 ...

  3. 快捷定位目录 z武器

    z的源码在这里:https://github.com/rupa/z/blob/master/z.sh 1.把源码复制到你的用户目录下的z.sh文件, 2.然后用vim打开.bashrc这个目录,在最后 ...

  4. 摘:JAVA JXL API的详细使用

    转自:http://www.cr173.com/html/10377_1.html 1 开发调研1.1 需求描述MS的电子表格(Excel)是Office的重要成员,是保存统计数据的一种常用格式.作为 ...

  5. 网络基础知识(http请求)

    http请求的过程 域名解析----TCP连接 ----发送请求-----响应请求----获取html代码----浏览器渲染 TCP是主机对主机层的控制传输协议,提供可靠的连接服务 TCP的三次握手 ...

  6. jQuery的下载以及使用

    一.概述 1.版本选择 jquery官网 jQuery的版本有很多,大家在选择版本的时候,一般原则是越新越好,但其实不然,jQuery版本是在不断进步和发展的,最新版是当时最高技术水平,也是最先进的技 ...

  7. 题解 UVa11461

    题目大意 多组数据,每组数据给出两个正整数 \(a,b\),请求出 \(a,b\) 之间的完全平方数的个数. 分析 前缀和即可. #include<bits/stdc++.h> using ...

  8. Redis-基础介绍

    Redis 基础介绍 一.Redis介绍 二.Redis和Memecache的不同 三.Redis的最佳应用场景: 四.Redis支持的键值类型 五.安装Redis 六.Redis启动方式 七.Red ...

  9. 19-ESP8266 SDK开发基础入门篇--C# TCP客户端编写 , 连接和断开

    https://www.cnblogs.com/yangfengwu/p/11130428.html 渐渐的看过去,,,好多节了... 这节做一个C# TCP客户端 新建项目啥子的就不详细截图写了,自 ...

  10. 利用 PHP CURL zip压缩文件上传

    $postData['file'] = "@".getcwd()."/../attachment/qianbao/{$customer_id}.zip"; $t ...