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

如何通过ffmpeg获取HLS流的avc1.77.30类型Codec信息?

获取HLS流中AVC1格式的Codec标识

要拿到avc1.77.30这类符合HLS标准的Codec标识,你可以通过两种方式实现:直接解析播放列表提取服务器给出的字段,或者用ffprobe提取编解码参数后拼接成对应格式。

方式1:直接从HLS播放列表提取

既然服务器已经在播放列表的EXT-X-STREAM-INF字段中明确给出了CODECS值,最直接的方法是提取该字段:

用curl+grep提取

curl -s "你的HLS播放列表URL" | grep -oP 'CODECS="\K[^"]+'

执行后会直接输出avc1.77.30,mp4a.40.2。

用ffmpeg提取

如果依赖ffmpeg工具,也可以通过日志提取:

ffmpeg -i "你的HLS播放列表URL" -v trace 2>&1 | grep -oP 'CODECS="\K[^"]+'

方式2:用ffprobe提取参数后拼接

如果需要从TS片段本身获取,需要提取H.264的profile和level,再拼接成avc1格式:

1. 获取基础参数

执行以下命令获取视频流的profile和level:

ffprobe -v error -select_streams v:0 -show_entries stream=profile,level -of compact=p=0:nk=1 -i "你的TS文件或HLS URL"

输出示例:Main,30,对应profile为Main,level为3.0。

2. 映射profile到十进制值

根据H.264的profile对应关系,把名称转换成十进制数值:

  • Baseline → 66
  • Main → 77
  • High → 100
  • High 10 → 110
  • High 4:2:2 → 122
  • High 4:4:4 Predictive → 144

3. 拼接成avc1格式

用avc1.<profile十进制值>.<level>的格式拼接,比如示例中的Main,30就拼成avc1.77.30。

进阶:用JSON格式批量提取

如果需要更结构化的输出,用JSON格式便于脚本处理:

ffprobe -v error -select_streams v:0 -show_entries stream=profile,level -of json -i "你的TS文件或HLS URL"

输出示例:

{
    "streams": [
        {
            "profile": "Main",
            "level": 30
        }
    ]
}

为什么默认ffprobe只显示h264?

默认情况下ffprobe只会输出编解码器的通用名称(如h264),不会自动转换成HLS标准要求的avc1.xx.xx格式,必须手动提取profile和level参数进行拼接,或者直接从播放列表获取服务器预定义的标识。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 10:21:02