flv格式

基于Nginx的媒体服务器技术-线上公开课

荒凉一梦 提交于 2020-03-26 01:25:52
国内应用比较多的开源流媒体服务器nginx-rtmp-module一直存在功能少、集群化难度大等问题。在LiveVideoStack线上分享中,PingOS 开源项目组开发工程师、UCloud RTC研发工程师朱建平详细介绍了基于nginx-rtmp-module的PingOS流媒体服务器在http-flv、http-ts、hls+、多进程、转推、回源以及集群化部署方面的技术实现细节。 文 / 朱建平 整理 / LiveVideoStack 直播回放 https://www2.tutormeetplus.com/v2/render/playback?mode=playback&token=006643cdea15499d96f19ab676924e88 1. Nginx流媒体扩展:http-flv、http-ts、hls+ 最初始的nginx-rtmp-module相关模型与包括SRS在内的多数流媒体服务器实际上是一样的(1个生产者,n个消费者)。Nginx存一个问题:它仅仅做了RTMP的消费模型,如果想扩展 http-flv或http-ts的形式会较为困难。由于rtmp-session仅供RTMP协议使用,如果想扩展http-flv,首先我们需要了解其基础分发模型(如上图所示):所有的生产者与消费者都会被挂载到同一个stream中,生产者负责从网络端接收数据

通过RTMP play分析FLV格式详解

五迷三道 提交于 2020-03-23 12:17:07
最近做了一个rtmp中转服务程序,通过实践,熟悉rtmp play和push中各类格式,这里总结一下。 程序github地址: https://github.com/runner365/rtmp_relay rtmp play接收报文分析 第一帧收到的报文: 1) 0x46 4c 56: 可参考文后:参考一 字符FLV头 2) 0x01 05 Version TypeFlagsReserved TypeFlagsAudio TypeFlagsReserved TypeFlagsVideo 这个解析的时候,一般不用管 3)0x00 00 00 09 FLV header offset: 也就是从开头9字节后,才是FLV真正的报文头。 4)0x00 00 00 00 这个是第1帧的PreviousTagSize0(前帧长度),因为是第一帧,所以肯定是0; 5)0x08 可参考文后:参考二,参考三 帧开头第一字节:0x08表示音频,0x09表示视频 6)0x00 00 04 帧payload长度:因为音频第一帧是ASC,所以只有4字节。 7) 0x 00 00 00 00 timestamp,时间戳 8) 0x 00 00 00 streamid,流ID 9) 0x AF 00 13 90 音频payload: 0xaf00开头的后面是asc flag,

打包AAC码流到FLV文件

人盡茶涼 提交于 2020-03-07 02:30:36
AAC编码后数据打包到FLV很简单。 1. FLV音频Tag格式 字节位置 意义 0x08, // 0, TagType 0xzz, 0xzz, 0xzz, // 1-3, DataSize, 0xzz, 0xzz, 0xzz, 0xzz, // 4-6, 7 TimeStamp | TimeStampExtend 0x00, 0x00, 0x00, // 8-10, StreamID 0xzz, // 11, AudioTag Header 0x0b, // 12, AACPacketType (如果不是AAC编码 没有这个字节) 0xzz ... 0xzz // 音频数据 2. AudioTagHeader 音频Tag头一般由一个字节定义(AAC用两个字节),第一个字节的定义如下: 音频格式 4bits | 采样率 2bits | 采样精度 1bits | 声道数 1bits| 音频格式 4bits 0x00 = Linear PCM, platform endian 0x01 = ADPCM 0x02 = MP3 0x03 = Linear PCM, little endian 0x04 = Nellymoser 16-kHz mono 0x05 = Nellymoser 8-kHz mono 0x06 = Nellymoser 0x07 = G.711 A-law

FLV文件格式官方规范详解

我怕爱的太早我们不能终老 提交于 2020-03-01 22:37:05
——如果要学习一个新的知识点,官方手册可能是最快的途径。查看网上其他人的总结也许入门更快,但是要准确,深入,完整,还是要看官方手册。 以下内容来自对官方文档Video File Format Specification Version 10的分析总结。过程中借助ffmpeg实际转换了一个flv文件用例研究。 一个FLV文件,每种类型的tag都属于一个流,也就是一个flv文件最多只有一个音频流,一个视频流,不存在多个独立的音视频流在一个文件的情况。(mp4好像是可以的) 另外,FLV文件格式所用的是大端序。 注:下面的数据type中,UI表示无符号整形,后面跟的数字表示其长度是多少位。比如UI8,表示无法整形,长度一个字节。UI24是三个字节。UB表示位域,UB5表示一个字节的5位。可以参考c中的位域结构体。 FLV头 Field type Comment 签名 UI8 ’F’(0X46) 签名 UI8 ‘L’(0X4C) 签名 UI8 ‘V’(0x56) 版本 UI8 FLV的版本。0x01表示FLV 版本是1 保留字段 UB5 前五位必须是0 是否有音频流 UB1 音频流是否存在标志 保留字段 UB1 必须是0 是否有视频流 UB1 视频流是否存在标志 文件头大小 UI32 FLV版本1时填写9,表明的是FLV头的大小,为后期的FLV版本扩展使用。包括这四个字节。

FFmpeg从入门到出家(FLV文件结构解析)

我是研究僧i 提交于 2020-02-26 12:29:24
FLV(FLASH VIDEO),是一种常用的文件封装格式,目前国内外大部分视频分享网站都是采用的这种格式。其标准定义为《Adobe Flash Video File Format Specification》。RTMP协议也是基于FLV视频格式的。 FLV的文件格式在该规范中已阐述清楚,本章节不再重复描述,而是结合下面的示例具体阐述如何分析FLV文件。 图3. FLV文件结构示例1 图4. FLV文件结构示例2 FLV文件的分析工具有很多,这里给大家推荐FLV Parser这个小软件,通过它可以很容易的看到文件的组成结构。 3.1 文件结构 从整个文件上看,FLV是由Header和File Body组成,如下图所示: 图5. FLV文件总体结构 1.FLV Header - 长度为9,其结构的标准定义参见标准定义见E.2 The FLV header; FLV File Body - 由一连串的PreviousTagSize + Tag构成。previousTagSize是4个字节的数据,表示前一个tag的size。标准定义参见E.3 The FLV File Body。 以图3. FLV文件结构示例1为例分析整体结构: 1.位置0x00000000 - 0x00000008, 共9个字节,为FLV Header,其中: ◦0x00000000 - 0x00000002 :

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

橙三吉。 提交于 2020-02-22 22:27:54
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 服务器->

关于视频的一些概念

南楼画角 提交于 2020-02-05 00:42:18
http://www.samirchen.com/video-concept/ 关于视频的一些概念 2016-01-28 视频相关概念 视频文件格式 文件格式这个概念应该是我们比较熟悉的,比如我们常见的 Word 文档的文件格式是 .doc ,JPG 图片的文件格式是 .jpg 等等。那对于视频来说,我们常见的文件格式则有: .mov 、 .avi 、 .mpg 、 .vob 、 .mkv 、 .rm 、 .rmvb 等等。文件格式通常表现为文件在操作系统上存储时的后缀名,它通常会被操作系统用来与相应的打开程序关联,比如你双击一个 test.doc 文件,系统会调用 Word 去打开它。你双击一个 test.avi 或者 test.mkv 系统会调用视频播放器去打开它。 同样是视频,为什么会有 .mov 、 .avi 、 .mpg 等等这么多种文件格式呢?那是因为它们通过不同的方式实现了视频这件事情,至于这个不同在哪里,那就需要了解一下接下来要说的「视频封装格式」这个概念了。 视频封装格式 视频封装格式,简称视频格式,相当于一种储存视频信息的容器,它里面包含了封装视频文件所需要的视频信息、音频信息和相关的配置信息(比如:视频和音频的关联信息、如何解码等等)。一种视频封装格式的直接反映就是对应着相应的视频文件格式。 下面我们就列举一些文件封装格式: AVI 格式 ,对应的文件格式为

h264和aac封装flv

ⅰ亾dé卋堺 提交于 2020-02-04 00:34:15
flv格式解析 FLV是一个二进制文件,简单来说,其是由一个文件头(FLV header)和很多tag组成(FLV body)。tag又可以分成三类:audio,video,script,分别代表音频流(0x8),视频流(0x9),脚本流(0x12),而每个tag又由tag header和tag data组成。 flv官方标准文档 分析之前推荐一个flv分析工具: flv分析工具 工具的使用说明和出处: 使用说明 以一个具体的flv文件为例具体分析: 文件头由9bytes组成: [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kbntqCE6-1580714898238)(https://i.loli.net/2020/01/20/SADYzaEdRkWUGQ9.png)] 前3个bytes是文件类型,总是“FLV”,也就是(0x46 0x4C 0x56)。第4btye是版本号,目前一般是0x01。第5byte是流的信息,倒数第一bit是1表示有视频(0x01),倒数第三bit是1表示有音频(0x4),有视频又有音频就是0x01 | 0x04(0x05),其他都应该是0。最后4bytes表示FLV 头的长度,3+1+1+4 = 9。 FLV header后面就是FLV body,FLV body中包含很多个FLV tag,tag的分类有三种

Python实现FLV视频拼接

只愿长相守 提交于 2020-01-25 00:28:44
文章摘要 本文简单说明了FLV文件的格式,以此为出发点,使用 Python 实现 FLV视频 的 拼接 。 一.FLV文件格式 关于FLV文件格式的解析网上有诸多文章,在这里就简单介绍一下需要了解的部分,以便读者更好地明白各段代码的功能。 FLV文件是由文件头(Header)和文件体(Body)按顺序拼接而成。审查FLV内容时,以二进制方式读取内容。 Header:文件头表明了文件的封装格式为FLV,存储对象为音频、视频或两者。 以下为FLV文件的Header,共 9 个字节: b'FLV\x01\x05\x00\x00\x00\t' 前 3 个字节(FLV)说明这是一个FLV文件 第 4 个字节(\x01)为版本号,固定为 1 第 5 个字节(\x05)表明存储对象,需将其转化成二进制(00000101)查看,左、右边的 1 分别表示文件含有音频和视频 后 4 个字节(\x00\x00\x00\t)表示文件头的长度,其值固定为 9 Body:文件体由若干个 Tag 组成,除了第一个,每个 Tag 是由头部( 11 字节)、主体(不定长)和尾部( 4 字节)组成。第一个 Tag 只有尾部。 Tag 又分为 3 类,脚本(scripts)、音频(audio)和视频(video)。通常第 2 个 Tag 为脚本类型,且只有一个,后续的都是音视频类型。 以下为脚本 Tag 的部分

从0到1打造直播 App

 ̄綄美尐妖づ 提交于 2020-01-06 05:43:10
转自http://dev.qq.com/topic/5811d42e7fd6ec467453bf58 概要 分享内容: 互联网内容载体变迁历程,文字——图片/声音——视频——VR/AR——…….。从直播1.0秀场时代(YY),2.0游戏直播(斗鱼、虎牙、熊猫)到如今全民直播3.0泛生活娱乐时代(映客、花椒),国外直播app(Meerkat 、Periscope),随着VA/AR/MR提出的沉浸式视听体验,直播4.0时代很快就能到来。 在这个全民娱乐的时代,直播已经火得不要不要的,各大公司都有自己的直播产品。本文主要从直播的一些基本知识,一步步打造直播app。直播那么火的背后有什么样的技术支撑呢? 先将这些APP按照视频网站按照视频网站、弹幕视频、直播平台、在线秀场、移动短视频、移动直播来划分类别。再按照内容和社交这个维度来进行区分,可以明显看出视频网站、弹幕网站和直播平台更偏内容,他们对内容的需求更加高,用户在上面进行社交沉淀相对比较浅。 而后面三者更加偏向社交,他们强调人而不强调内容。所以短期内不会有大的竞争关系,只是前三类、后三者之间的竞争会出现。 大体框架 大体框架 基本是下图这个套路: 录制->编码->网络传输->解码->播放 以上为直播的整体流程,根据该流程分为以下技术点: 怎样录制直播视频 怎样实时上传直播视频 怎样播放直播视频 直播间的用户是如何交互 一