首页 > 解决方案 > 使用多隔离 ts 创建 m3u8

问题描述

我有一个要求,每 3 秒录制一个 mp4(mp4 文件是连续的)。使用 ffmpeg,我在每生成 3s mp4 后将 mp4 文件转换为 ts 文件。所以现在我有很多 3s ts 文件(ts 文件是连续的,并且在播放器中播放)。然后我生成一个 m3u8 文件,其中包含有关这些 ts 文件的信息。现在一切看起来都很好,但是当我使用播放器播放 m3u8 文件时,总是在播放第一个 ts 文件后阻塞。

我认为 m3u8 中的 ts 文件(可能是时间戳?)之间一定存在某种关系,而我的没有这些关系,所以在播放第一个 ts 文件后我的 m3u8 块。

我对ts和m3u8不太了解,谁能告诉我m3u8中ts文件之间的关系,或者我怎样才能生成正确的m3u8文件?

标签: videoffmpeghttp-live-streamingm3u8mpeg2-ts

解决方案


你的 m3u8 文件是什么样的?像这样的东西?

#EXTM3U
#EXT-X-TARGETDURATION:6
#EXT-X-ALLOW-CACHE:YES
#EXT-X-KEY:METHOD=AES-128,URI="http://example.com/path/to/resource.mp4/crypt.key?id=somekey"
#EXT-X-PLAYLIST-TYPE:VOD
#EXT-X-VERSION:3
#EXT-X-MEDIA-SEQUENCE:1
#EXTINF:6.000,
http://example.com/path/to/resource.mp4/segment1_0_a.ts
#EXTINF:6.000,
http://example.com/path/to/resource.mp4/segment2_0_a.ts
#EXTINF:6.000,
http://example.com/path/to/resource.mp4/segment3_0_a.ts
#EXTINF:1.992,
http://example.com/path/to/resource.mp4/segment4_0_a.ts
#EXT-X-ENDLIST

如有疑问,请阅读文档:https ://datatracker.ietf.org/doc/html/draft-pantos-http-live-streaming-23#section-3


推荐阅读