制作 gstreamer 循环文件名

Make gstreamer loop file names

我能够使用 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=0playlist-length=0 才能保留所有基本流 .ts 块并迭代(或循环)所有文件。

  • 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