| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 系统运维 -> 【流媒体协议】图解 FLV 协议 快速入门 -> 正文阅读 |
|
[系统运维]【流媒体协议】图解 FLV 协议 快速入门 |
文章目录推荐一个零声学院免费公开课程,个人觉得老师讲得不错,分享给大家:Linux,Nginx,ZeroMQ,MySQL,Redis,fastdfs,MongoDB,ZK,流媒体,CDN,P2P,K8S,Docker,TCP/IP,协程,DPDK等技术内容,立即学习 前言FLV 是FLASH VIDEO的简称,FLV流媒体格式是随着Flash MX的推出发展而来的视频格式。由于它形成的文件极小、加载速度极快,使得网络观看视频文件成为可能,它的出现有效地解决了视频文件导入Flash后,使导出的SWF文件体积庞大,不能在网络上很好的使用等问题。 rtmp 和 http-flv内部使用 flv协议封装 h264和 AAC音视频包。 FLV协议非常简单,接下来通过几张图快速掌握 flv封装协议。 FLV 格式FLV 由 FLV header 跟 FLV file body 两部分组成,而 FLV file body 又由多个 FLV tag组成,FLV tag由 tag header + tag body组成。
FLV header
FLV BodyFLV file body很有规律,由一系列的TagSize和Tag组成。
FLV tagFLV tag 分为三类
Tag head占11个字节 Video TagVideo类型表明Data中存储的是视频数据,由 Video Tag Header(5个字节)和 Video Data组成。视频的编码类型可以是H264、H265等等。 Audio TagAudio类型表明Data中存储的是音频数据,由 Audio Tag Header(2个字节)和 Audio Data组成。音频的编码类型可以是aac、mp3等。 Script TagScript Data Tags通常用来存放跟FLV中音视频相关的元数据信息(onMetaData),比如时长、长度、宽度等。它的定义相对复杂些,采用AMF(Action Message Format)封装了一系列数据类型,比如字符串、数值、数组等。 FLV格式整体图 obs 打包 FLV参考上面的协议介绍,对照 obs打包 FLV tag源码,可以更好的掌握 FLV 文件协议。 源码文件 obs-studio\plugins\obs-outputs\flv-mux.c 打包 FLV header 和 Script Tag打包 FLV header 和 Script Tag
打包 Video Tag打包 Video Tag
打包 Audio Tag打包 Audio Tag
总结FLV协议本身不算复杂,理解上的困难,更多时候来自音视频编解码相关的知识,比如H.264、AAC相关知识,建议不懂的时候自行查下。此外,FLV的字节序为大端序,在做协议解析的时候一定要注意。
|
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/16 5:43:52- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |