HTTP-FLV交互抓包理解

本文详细介绍了RTMP和FLV流媒体传输协议的工作原理,对比了HTTP-FLV与HLS的不同之处,并通过Wireshark抓包分析展示了RTMP推流结合HTTP-FLV播放的实际应用过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

关于rtmp和flv特别要看这个:
https://zhuanlan.zhihu.com/p/83454344

详细介绍

HTTP-FLV
HTTP-FLV,即将音视频数据封装成 FLV,然后通过 HTTP 协议传输给客户端。
HLS 其实是一个 “文本协议”,而并非流媒体协议。那么,什么样的协议才能称之为流媒体协议呢?
流(stream): 数据在网络上按时间先后次序传输和播放的连续音/视频数据流。之所以可以按照顺序传输和播放连续是因为在类似 RTMP、FLV 协议中,每一个音视频数据都被封装成了包含时间戳信息头的数据包。而当播放器拿到这些数据包解包的时候能够根据时间戳信息把这些音视频数据和之前到达的音视频数据连续起来播放。MP4、MKV 等等类似这种封装,必须拿到完整的音视频文件才能播放,因为里面的单个音视频数据块不带有时间戳信息,播放器不能将这些没有时间戳信息数据块连续起来,所以就不能实时的解码播放。

最近使用到rtmp推流,通过http-flv来播放,今天抓包分析了一下:
在这里插入图片描述通过抓包发现,只有一次http 请求-回复,其余全部为tcp
https://blog.youkuaiyun.com/ai2000ai/article/details/80306735
发现跟上连接的不一致,我抓包只发现一个http请求,没有http回复
这个是10090-》49130发送的第一个66包

如果对wireshark解析TCP的几种状态 (SYN, FIN, ACK, PSH, RST, URG)不了解,可以参考:
https://blog.youkuaiyun.com/u012478275/article/details/99624506
SYN表示建立连接,
FIN表示关闭连接,
ACK表示响应,
PSH表示有 DATA数据传输,
RST表示连接重置。

抓包结果分析可以看出客户端http请求了服务器一次,

在这里插入图片描述

GET /live/ai_1.flv HTTP/1.1
Host: 127.0.0.1:9990
Accept: */*
Accept-Language: en_US
User-Agent: VLC/3.0.9.2 LibVLC/3.0.9.2
Range: bytes=0-

http 服务器回复200ok
在这里插入图片描述

HTTP/1.1 200 OK
Connection: keep-alive
Content-Type: video/x-flv; charset=utf-8
Date: å
, 4æ 10 2021 11:27:04 GMT
Keep-Alive: timeout=15, max=100
Server: ZLMediaKit-5.0(build in Apr  6 2021 17:05:55)

接着服务器发送flv数据流,关于flv格式可以参考:
https://blog.youkuaiyun.com/tingtings324/article/details/88067671
https://zhuanlan.zhihu.com/p/28722048
在这里插入图片描述(flv签名)

服务器依次发送:
在这里插入图片描述在这里插入图片描述在这里插入图片描述(上面的这个是flv的元文件)

onMetaDatadurationfileSize	framerate@9height@~server-ZLMediaKit-5.0(build in Apr  6 2021 17:05:45)videocodecid@width@	
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值