云录事件:m3u8和ts下载及解析

业务中云录事件是通过若干ts文件和一个m3u8文件实现。

固件端开始录像时生成m3u8文件,随着录制的进行生成若干ts文件,并上传至s3,事件录制结束后再上传一次m3u8文件覆盖之前的m3u8文件。

这种云录事件业务场景属于典型的 边录制、边上报、边生成云端播放资源 的物联网/视频云业务流。

核心流程是:摄像机本地录制 → 上传封面图/m3u8/ts → MQTT 上报事件 → 服务端汇总处理。

  1. 设备本地录制 TS/M3U8,即本地编码、切片,走的是 HLS 流程。
  2. 文件通过 HTTP上传到 S3
  3. 事件信息通过 MQTT 上报(包括开始结束时间、封面图、云存视频地址和检测相关信息等)
  4. 服务端处理这些信息并供业务使用(通知、事件类型的丰富展现等)

这套体系是本地主动上传式云录(也叫前端式云存),设备主导切片和上传,云端只是“存储+事件消费”。

S3大致目录是:Amazon S3 > 存储桶 > cloud-storage-x > xxxx > cloud > 设备sn > 1751680018226/,目录包含以下内容:
playlist.m3u8
segment01.ts
segment02.ts
segment03.ts

使用postman下载m3u8文件
一、设置cookie:

在Header中设置cookie,注意:

  1. 不是添加多个 Cookie 头,而是将多个 Cookie 合并为一个 Cookie 头,用英文分号 ; 分隔。
  2. cookie信息来自aws,原始信息是这样的,CloudFront-Signature=str; Domain=down-cn.aosulife.com; HttpOnly,需要把每个 Cookie 的键值提取出来,去掉其中的 Path=…、Expires=…、Domain=…、HttpOnly、Secure 等属性,然后用英文分号加空格 ; 连在一起,拼成一整行:
AWSALB=str1; AWSALBCORS=str2; CloudFront-Policy=str3; CloudFront-Signature=str4; CloudFront-Key-Pair-Id=str5;

云录事件:m3u8和ts下载及解析_第1张图片
二、发送请求
配置好url和cookie后,点击 “Send and Download”
云录事件:m3u8和ts下载及解析_第2张图片
不能点“Send”

三、打开m3u8文件

Mac下载后在Downloads目录下,是一个bin文件,response.bin,把后缀改成m3u8,response.m3u8。

1、用 VLC 播放

  • 确保:segment01.ts ~ segment04.ts 和 response.m3u8 在同一个目录
  • 打开 VLC → 文件 → 打开文件 → 选择 response.m3u8
  • 就可以播放了

2、用 ffmpeg 合并为一个完整视频

ffmpeg -i response.m3u8 -c copy output.mp4
  • .m3u8 和 .ts 都在当前目录,命令会自动识别并合成。
  • 它会自动拉取 .ts 文件并合成一个 output.mp4,不依赖播放签名、Cookie、VLC。

3、可以用文本编辑器,例如,Sublime Text打开:

#EXTM3U
#EXT-X-VERSION:3
#EXT-X-TARGETDURATION:20
#EXT-X-MEDIA-SEQUENCE:1
#EXTINF:4.001,
segment01.ts
#EXTINF:4.000,
segment02.ts
#EXTINF:3.999,
segment03.ts
#EXTINF:0.600,
segment04.ts
#EXT-X-ENDLIST

这段 .m3u8 文件是一个标准的 HLS(HTTP Live Streaming)媒体播放列表。

行号 内容 含义
1 #EXTM3U 固定标识,表示这是一个 M3U 播放列表(UTF-8 编码)
2 #EXT-X-VERSION:3 使用的 HLS 协议版本为 3(支持 EXTINF 小数秒等特性)
3 #EXT-X-TARGETDURATION:20 每个分片最长可能为 20 秒(播放器用于预加载缓冲)
4 #EXT-X-MEDIA-SEQUENCE:1 第一个分片的序列号是 1(可用于点播/回放定位)
5 #EXTINF:4.001, 下一个视频分片 segment01.ts 的播放时长为 4.001 秒
6 segment01.ts 视频分片文件,播放这个文件
7 #EXTINF:4.000, segment02.ts 的时长为 4 秒
8 segment02.ts 视频分片
9 #EXTINF:3.999, segment03.ts 的时长
10 segment03.ts 视频分片
11 #EXTINF:0.600, segment04.ts 时长仅为 0.6 秒,可能是最后一段
12 segment04.ts 视频分片
13 #EXT-X-ENDLIST 表示播放列表结束(点播视频的标志)

这个 m3u8 是点播播放列表(VOD),因为结尾有 #EXT-X-ENDLIST。

你可能感兴趣的:(AWS,WebRTC,aws,webrtc,云计算)