我能够使用 gstreamer 成功生成 hsl 流,代码如下:
gst-launch-1.0 -v \
videotestsrc is-live=true \
! omxh264enc target-bitrate=2000000 control-rate=variable \
! "video/x-h264,profile=high,width=600,height=300" \
! mpegtsmux \
! hlssink \
playlist-root=http://192.168.0.51:9000/hlssink/ \
location=/home/attila/frontend/hlssink/hlssink.%05d.ts \
max-files=5 \
target-duration=10 \
playlist-location=/home/attila/frontend/playlist.m3u8
它工作得很好,但是有一个缺陷,根据hlssink的属性行生成的文件:
location=/home/attila/frontend/hlssink/hlssink.%05d.ts
不循环。因此客户端应该始终重新加载播放列表。如何使 gstreamer 循环遍历文件名?
最佳答案
hlssink
需要 max-files=0
和 playlist-length=0
才能保留所有基本流 .ts block 和迭代(或循环)所有文件。
max-files:磁盘上保留的最大文件数。一旦达到最大值,旧文件就会开始被删除,为新文件腾出空间 那些。 0 保留全部。默认 10。
playlist-length:HLS 播放列表的长度。为了让玩家符合 HLS 规范第 6.3.3 节,这应该位于 至少 3。如果设置为 0,播放列表将是无限的。默认 5。
这里是hlssink
的完整引用:https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-bad/html/gst-plugins-bad-plugins-hlssink.html
关于video-streaming - 使 gstreamer 循环文件名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38294918/