问题描述
我正在创建一个主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值: