如何确定m3u8播放列表的CODECS值?

问题描述

我正在创建一个主m3u8文件,以允许两个流视频的自适应流。两者都具有可读的编解码器名称MPEG-4 AVC(第10部分)(avc1)

如何将其转换为应显示在我的主m3u8播放列表文件中的CODECS值,如以下示例所示:

#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=1755600,CODECS="avc1.42001f,mp4a.40.2",RESOLUTION=354x240

如何获取替换avc1.42001f,mp4a.40.2的值

Apple的规范说“有效格式标识符是RFC 6381 [RFC6381]定义的ISO文件格式名称空间中的标识符”,但我不知道如何阅读RFC 6381文档。

解决方法

每个编解码器字符串都是特定于编解码器的。对于音频,mp4a表示其mpeg音频40表示其mpeg 4.0(我认为),最后一个整数是“音频对象类型”。 AAC-LC为2。完整列表可在此处找到。 https://wiki.multimedia.cx/index.php/MPEG-4_Audio#Audio_Object_Types

对于视频,在您的示例情况下,视频编解码器为h.264,也称为“高级视频编解码器”,也称为avc1。十六进制字符串是3个字节,代表编解码器配置文件,标志和级别。这些可以在SPS的前3个字节中找到。

其他编解码器不同。

,

根据此处评论者的建议,我优化了Google搜索,最后找到了一篇博客文章,解释了代码的构造方式:

对此文的评论使我进入mp4box.js实用程序,该实用程序加载文件并提供大量信息,包括CODECS值:

mp4box.js info showing CODECS