云录事件:m3u8和ts下载及解析
业务中云录事件是通过若干ts文件和一个m3u8文件实现的,固件端开始录像时生成m3u8文件,随着录制的进行生成若干ts文件,并上传至s3,事件录制结束后再上传一次m3u8文件覆盖之前的m3u8文件。
业务中云录事件是通过若干ts文件和一个m3u8文件实现。
固件端开始录像时生成m3u8文件,随着录制的进行生成若干ts文件,并上传至s3,事件录制结束后再上传一次m3u8文件覆盖之前的m3u8文件。
这种云录事件业务场景属于典型的 边录制、边上报、边生成云端播放资源 的物联网/视频云业务流。
核心流程是:摄像机本地录制 → 上传封面图/m3u8/ts → MQTT 上报事件 → 服务端汇总处理。
- 设备本地录制 TS/M3U8,即本地编码、切片,走的是 HLS 流程。
- 文件通过 HTTP上传到 S3
- 事件信息通过 MQTT 上报(包括开始结束时间、封面图、云存视频地址和检测相关信息等)
- 服务端处理这些信息并供业务使用(通知、事件类型的丰富展现等)
这套体系是本地主动上传式云录(也叫前端式云存),设备主导切片和上传,云端只是“存储+事件消费”。
S3大致目录是:Amazon S3 > 存储桶 > cloud-storage-x > xxxx > cloud > 设备sn > 1751680018226/,目录包含以下内容:
playlist.m3u8
segment01.ts
segment02.ts
segment03.ts
使用postman下载m3u8文件
一、设置cookie:
在Header中设置cookie,注意:
- 不是添加多个 Cookie 头,而是将多个 Cookie 合并为一个 Cookie 头,用英文分号 ; 分隔。
- 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;

二、发送请求
配置好url和cookie后,点击 “Send and Download”
不能点“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。
火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。
更多推荐
所有评论(0)