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

问题描述 投票:0回答:3

我正在创建一个主 m3u8 文件以允许两个流视频的自适应流。两者都有可读的编解码器名称 MPEG-4 AVC (part 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 文档。

ffmpeg video-streaming http-live-streaming
3个回答
4
投票

每个编解码器字符串都是特定于编解码器的。对于音频,

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 个字节中找到。

其他编解码器不同。


2
投票

根据这里评论者的建议,我改进了谷歌搜索,最终找到了一篇解释代码如何构建的博客文章:

这篇文章的评论让我找到了 mp4box.js 实用程序,它加载一个文件并提供大量信息,包括 CODECS 值:


0
投票

您可以查阅ffmpeg代码https://git.ffmpeg.org/gitweb/ffmpeg.git/blob/HEAD:/libavformat/hlsenc.c,搜索'write_codec_attr'(但不幸的是它不在任何公共接口中)

© www.soinside.com 2019 - 2024. All rights reserved.