我们正在开发一个应用程序,其中应该为给定的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,
Run Code Online (Sandbox Code Playgroud)
有人可以帮助我们创建这样的m3u8文件而不创建任何段.我们将根据要求手动创建细分.
此外,当我们手动创建片段时,当视频进入下一个片段时会出现小的口吃(闪烁).当我在网上看到它时,它说它可能是由于连续性计数器.也有人可以帮助我们解决这个问题
谢谢.
解决方案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
Run Code Online (Sandbox Code Playgroud)
在EXT-X-BYTERANGE中支持4。如果需要版本3,则需要将此播放列表转换为版本31,并创建一个处理程序以使用正确的MIME类型返回正确的范围:
#EXTINF:6.000000,
handler?file=out.ts&offset=xxx&length=yyy
Run Code Online (Sandbox Code Playgroud)
解决方案2
nginx与nginx-vod-module一起使用,该模块也可以执行DASH和其他功能
| 归档时间: |
|
| 查看次数: |
2906 次 |
| 最近记录: |