You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过FFmpeg判断M3U8链接为直播流还是完整文件?

判断M3U8链接是完整文件还是直播流的FFmpeg实用方法

1. 依托M3U8规范标签判断

M3U8的原生标签是最直接的判断依据:

  • 完整点播文件:通常包含#EXT-X-PLAYLIST-TYPE:VOD标签,明确标识为固定内容的视频点播;同时播放列表结尾一般带有#EXT-X-ENDLIST,表示没有更多分片会被添加。
  • 直播流:不会出现#EXT-X-PLAYLIST-TYPE:VOD标签,若为事件型直播(直播结束后保留内容)可能带有#EXT-X-PLAYLIST-TYPE:EVENT,但直播过程中不会有#EXT-X-ENDLIST,且分片会持续新增。

2. 用FFmpeg/ffprobe命令直接探测

提取播放列表类型

执行命令直接获取M3U8的播放属性:

ffmpeg -i <你的M3U8链接> -v trace 2>&1 | grep "playlist_type"
  • 返回playlist_type=vod:确定是完整点播文件
  • 返回playlist_type=event或无匹配结果:大概率是直播流(EVENT流在直播过程中仍会新增分片)

检测媒体时长

用ffprobe获取媒体时长,直播流通常无法返回固定时长:

ffprobe -v error -show_entries format=duration <你的M3U8链接>
  • 返回具体数值(如duration=3600.000000):是完整点播文件
  • 返回duration=N/A或数值持续增长:为直播流

对比分片列表变化

间隔一段时间两次执行以下命令,统计分片数量:

ffmpeg -i <你的M3U8链接> -f dump 2>&1 | grep "#EXTINF" | wc -l
  • 两次结果一致:是固定分片的点播文件
  • 第二次结果大于第一次:说明分片在持续新增,是直播流

3. 特殊情况处理

部分站点的M3U8可能未严格遵循规范,比如点播内容未添加EXT-X-PLAYLIST-TYPE标签,此时可以结合固定时长+EXT-X-ENDLIST标签共同判断,提升准确率。

内容的提问来源于stack exchange,提问作者karurosagu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 21:54:14