我们正在开发一个应用程序,其中应该为给定的mp4视频动态生成m3u8文件。有人可以告诉我们如何动态生成mp4文件,并具有与分段器完全相同的持续时间。在我们的例子中,ffmpeg segmenter是创建的可变长度段,并且是十进制大小的。例如: #EXTM3U #EXT-X-VERSION: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文件,而无需创建任何细分。我们将根据要求手动创建细分。
当我们手动创建片段时,当视频进入下一个片段时会出现小的口吃(闪烁)。当我在网上看到它时,它说它可能是由于连续性计数器。也有人可以帮我们解决这个问题
感谢。
答案 0 :(得分:3)
解决方案1
您可以使用-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
解决方案2
将nginx
与nginx-vod-module一起使用,也可以使用DASH和其他