我想从ts文件列表中创建“ m3u8”文件。我该怎么办?
我确实在Google中搜索并阅读了ffmpeg的文档,但未找到任何内容。
答案 0 :(得分:2)
不清楚您要询问以下哪种情况,所以这是两种情况的快速答案:
1)如果您从包含内容的单个文件开始 这是最常见的情况。通常,从源材料创建可播放的HLS流需要执行三个步骤。
FFMpeg可以完成所有这三个操作。
2)如果您从.ts文件的集合开始 如果您确实是从.ts文件的集合开始的,则可以按照上一个答案中的说明手工构建m3u8文件,也可以编写脚本来完成。
在任何一种情况下,.ts文件都有一些注意事项:
如果段文件不属于不间断序列(就像它们是从单个源剪辑中转码以用于HLS)一样,则需要在段之间插入EXT-X-DISCONTINUITY标签没有相同的编码特性或没有单调增加的PTS(表示时间戳)值。
虽然分段的长度不必全部相同,但最长的分段不得超过EXT-X-TARGETDURATION标记中指定的(整数)秒。
所有段的最大比特率不得超过EXT-X-TARGETDURATION标记中指定的值。
构建m3u8文件后,通过验证程序运行它可以发现任何问题。这比挠头想知道为什么HLS流在播放器/浏览器上播放效果差或不一致要容易得多。
答案 1 :(得分:0)
您可能想要一个HLS结构。 documentation at Apple(Apple发明了IIRC,随后被广泛采用)有很多,例如a draft RFC和page with example streams。
HLS包含两个级别:主M3U8引用其他M3U8,而其他M3U8依次引用.ts
文件。您可以省略主M3U8,而仅提供“第二级”。
从may look something like this开始,
#EXTM3U
#EXT-X-TARGETDURATION:10
#EXT-X-MEDIA-SEQUENCE:1
#EXTINF:10, no desc
media-000001.ts
#EXTINF:10, no desc
media-000002.ts
#EXTINF:10, no desc
media-000003.ts
EXT-X-TARGETDURATION
指定每个.ts
文件的长度(它们都必须具有相同的长度)。它可能是相对路径,也可能是绝对路径。