video - 使用多隔离 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文件?
解决方案
你的 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
推荐阅读
- json - 如何根据JQ中Json中元素的值过滤对象数组
- javascript - 未定义的查询函数
- mongodb - 将 csv 导入 mongodb 时大小增加
- c# - 如何对两个表使用相同的模型。或 db 最佳实践
- python - 如何将数据从 Web 表写入文件。数值变化很快
- scala - scala spark - 基于可变日期匹配数据帧
- java - 试图通过Tomcat内部的骆驼调用外部HTTP Post请求
- arduino - 几分钟后我的 NodeMCU 和我的 ESP01 都关闭了
- ssh - 从集群内部访问 Vagrant VM(运行 Centos/7 的 Vitualbox)
- java - python和java之间发送短信