gpt4 book ai didi

ffmpeg 手动生成 m3u8 和分段

转载 作者:行者123 更新时间:2023-12-03 22:16:56 26 4
gpt4 key购买 nike

我们正在开发一个应用程序,其中应该为给定的 mp4 视频动态生成 m3u8 文件。有人可以让我们知道如何动态生成具有精确持续时间的 mp4 文件作为分段器。在我们的例子中,ffmpeg 分段器创建了可变长度的分段,并且是十进制大小。例如:
#EXTM3U
#EXT-X-版本:3
#EXT-X-TARGETDURATION:7
#EXT-X-PLAYLIST-TYPE:VOD

#EXTINF:5.005,
test.mp4.ts?start=0.000&end=5.005
#EXTINF:6.715,
test.mp4.ts?start=5.005&end=11.720
#EXTINF:6.548,

有人可以帮助我们创建这样的 m3u8 文件而不创建任何段。我们将根据要求手动创建分割。

此外,当我们手动创建片段时,当视频进入下一个片段时,会有一个小的卡顿(闪烁)。当我在网上阅读时,它说可能是由于连续性计数器。有人可以帮我们解决这个问题吗

谢谢。

最佳答案

解决方案一

您可以使用 -hls_flags single_file将所有段存储在一个 ts文件。生成的播放列表将包含每个片段的长度和偏移量,客户端将自行请求它们。
6s 的示例分割:

ffmpeg -i input -c:v libx264 -r 25 -g 75 -sc_threshold 0 -c:a libfdk_aac -hls_time 6 -hls_playlist_type vod -hls_flags single_file out.m3u8

#EXTM3U
#EXT-X-VERSION:4
#EXT-X-TARGETDURATION:6
#EXT-X-MEDIA-SEQUENCE:0
#EXT-X-PLAYLIST-TYPE:VOD
#EXTINF:6.000000,
#EXT-X-BYTERANGE:1397404@0
out.ts
#EXTINF:6.000000,
#EXT-X-BYTERANGE:1049416@1397404
out.ts
#EXTINF:6.000000,
#EXT-X-BYTERANGE:1423348@2446820
out.ts
[...]
#EXT-X-ENDLIST
EXT-X-BYTERANGE在版本 4 中受支持.如果您需要版本 3您需要将此播放列表转换为 3 版本一个并制作一个处理程序以使用正确的 MIME 类型返回正确的范围:
#EXTINF:6.000000,
handler?file=out.ts&offset=xxx&length=yyy

解决方案二

使用 nginxnginx-vod-module也可以做 DASH 和其他

关于ffmpeg 手动生成 m3u8 和分段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31069002/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com