HTTP-FLV详解及分析(二)

简介: HTTP-FLV详解及分析

HTTP-FLV详解及分析(一 )https://developer.aliyun.com/article/1472362


6、flv.js 网页播放

前面我们已经解决了跨域问题

html.flv 文件内容如下:

worker_processes  1;
#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;
#error_log  logs/error.log  debug;
#pid        logs/nginx.pid;
events {
    worker_connections  1024;
}
# 添加RTMP服务
rtmp {
    server {
        listen 1935; # 监听端口
        chunk_size 4000;
        application live {
            live on;
      gop_cache on;
      hls on;
      hls_path html/hls;
        }
    }
}
# HTTP服务
http {
    include       mime.types;
    default_type  application/octet-stream;
    #access_log  logs/access.log  main;
    server {
        listen       8080; # 监听端口
 
 location /flv {
      flv_live on;
      chunked_transfer_encoding on; 
      add_header 'Access-Control-Allow-Origin' '*';
     add_header "Access-Control-Allow-Credentials" "true";
     add_header "Access-Control-Allow-Methods" "*";
     add_header "Access-Control-Allow-Headers" "Content-Type,Access-Token";
     add_header "Access-Control-Expose-Headers" "*";  
    }
    location /stat.xsl {
            root html;
        }
    location /stat {
            rtmp_stat all;
            rtmp_stat_stylesheet stat.xsl;
        }
    location / {
            root html;
        }
    }
}

因此双击 flv.html 文件,可以看到网页播放成功

三、FLV 格式简介

1、简介

FLV(Flash Video)是现在非常流行的流媒体格式,由于其视频文件体积轻巧、封装播放简单等特点,使其很适合在网络上进行应用,目前主流的视频网站无一例外地使用了 FLV 格式。另外由于当前浏览器与 Flash Player 紧密的结合,使得网页播放 FLV 视频轻而易举,也是 FLV 流行的原因之一。

FLV 是流媒体封装格式,我们可以将其数据看为二进制字节流。总体上看,FLV 包括文件头(File Header:9 字节)和文件体(File Body)两部分,其中文件体由一系列的 Tag 及 Tag Size 对组成。

注意这个大小关系:PreviosTagSize = TagDataSize + 11;

2、FLV 格式解析

先来一张图,这是上面我们播放的视频文转换为 FLV 文件

使用 Notepad++ 进行查看二进制数据(注:这里要求 Notepad++ 安装了 HexEditor 插件

可以参考我以前的博客:notepad++安装HexEditor插件查看二进制文件

SampleVideo_1280x720_20mb.flv 文件二进制内容如下:

①、header

头部分由以下几部分组成:Signature(3 Byte)+Version(1 Byte)+Flags(1 Bypte)+DataOffset(4 Byte)

  • signature 占 3 个字节:固定 FLV 三个字符作为标示。一般发现前三个字符为 FLV 时就认为他是 flv 文件。
  • Version 占 1 个字节:标示 FLV 的版本号。 这里我们看到是 1
  • Flags 占 1 个字节:内容标示。第 0 位和第 2 位,分别表示 video 与 audio 存在的情况。(1 表示存在,0 表示不存在)。截图看到是 0x05,也就是 00000101,代表既有视频,也有音频。
  • DataOffset 4 个字节:表示 FLV 的 header 长度。 这里可以看到固定是 9

②、body

FLV 的 body 部分是由一系列的 back-pointers( 后向指针) + tag 构成

  • back-pointers固定 4 个字节,表示前一个 tag 的 size。
  • 从上图可以看到前一个 tag 的 size 为 0
  • tag分三种类型:video、audio、scripts。
  • tag 组成tag type[1B]+tag data size[3B]+Timestamp[3B]+TimestampExtended[1B]+stream id[3B]+tag data
  • type1 个字节。8 为 Audio,9 为 Video,18 为 scripts
  • 从上图可以看到 type0x123 = 18 --> scripts
  • tag data size3 个字节。表示 tag data 的长度:从 streamd id 后算起。
  • 从上图可以看到 tag data size0x123 = 297
  • Timestreamp3 个字节。 时间戳
  • 从上图可以看到 Timestreamp0x000000 = 0
  • TimestampExtended1 个字节。 时间戳扩展字段
  • 从上图可以看到 TimestampExtended0x00 = 0
  • stream id 3 个字节。 总是 0
  • tag data 数据部分
  • tag 头伪代码

四、FLV Adobe 官方标准

FLV 文件格式标准是写在 F4V/FLV file format spec v10.1 的附录 E 里面的 FLV File Format。

1、单位说明


HTTP-FLV详解及分析(三)https://developer.aliyun.com/article/1472364

目录
相关文章
|
6天前
|
缓存 网络协议 数据库连接
C/S架构中HTTP错误状态码原因分析及解决办法
HTTP(Hypertext Transfer Protocol)是用于在客户端和服务器之间传输数据的协议。当在浏览器或其他HTTP客户端中访问网页时,可能会发生各种访问报错。我们需要根据网页提供的错误状态码分析错误原因,以找到相对应的解决办法。
49 0
|
6天前
|
移动开发 JSON 监控
网络协议解析:在员工上网监控软件中实现HTTP流量分析
随着企业对员工网络活动的监控需求不断增加,开发一套能够实现HTTP流量分析的网络协议解析系统变得愈发重要。本文将深入探讨如何在员工上网监控软件中实现HTTP流量分析,通过代码示例演示关键步骤。
232 0
|
7月前
|
API
SAP Spartacus UI 通过 HTTP Interceptor 给请求添加 Authorization 字段的源代码分析
SAP Spartacus UI 通过 HTTP Interceptor 给请求添加 Authorization 字段的源代码分析
34 1
|
6天前
|
编解码 索引
HTTP-FLV详解及分析(三)
HTTP-FLV详解及分析
32 0
|
6天前
|
移动开发 网络协议 应用服务中间件
HTTP-FLV详解及分析(一)
HTTP-FLV详解及分析
31 0
|
6天前
|
网络协议
Wireshark中的http协议包分析
Wireshark可以跟踪网络协议的通讯过程,本节通过http协议,在了解Wireshark使用的基础上,重温http协议的通讯过程。 TCP(Transmission Control Protocol,传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议。 HTTP(HyperText Transfer Protocol,超文本传输协议)是一种用于分布式、协作式和超媒体信息系统的应用层协议,是万维网的数据通信的基础。 下图是访问百度页面的头部文件的Wireshark数据包截取图,以下几点说明如下:
Wireshark中的http协议包分析
|
7月前
|
移动开发 网络协议
HTTP/2 协议(抓包分析 HTTP/2 握手是如何被建立的)
HTTP/2 协议(抓包分析 HTTP/2 握手是如何被建立的)
101 0
|
7月前
|
网络协议 索引
HTTP/2 协议(帧、消息、流简单的抓包分析)
HTTP/2 协议(帧、消息、流简单的抓包分析)
127 0
|
7月前
|
Web App开发 XML 应用服务中间件
Http failure response 0 Unknown error 错误分析
Http failure response 0 Unknown error 错误分析
65 0
|
8月前
|
网络协议 安全 前端开发
【JavaWeb】知识总结Ⅷ(HTTP协议, GET请求包, POST请求包, 响应包的分析)
1. http 是 TCP/IP 协议的一个应用层协议,http 也是我们 web 开发的基础. http协议特点: 2.基于请求响应模型的:一次请求对应一次响应 3.http协议是无状态的协议:对于事务处理没有记忆能力。每次请求-响应都是独立的 · 缺点:多次请求之间不能共享数据 (java中使用会话技术解决session、cookie) · 优点:速度快