用 gst (ts m3u8) 生成的 hls 不在 safari 上播放(但在 chrome 上工作)

hls generated with gst (ts m3u8) not playing on safari (but working on chrome)

我正在尝试使用 gst 从现有管道中的帧生成 hls 视频。一旦我将帧作为 numpy 数组获得,我将使用以下命令创建 ts 和 m3u8 文件:

            appsrc emit-signals=True do-timestamp=true is-live=True  
            caps={DEFAULT_CAPS}".format(**locals()) !
            "queue" !
            "videoconvert" !
            "x264enc" !
            "mpegtsmux" !
            f"hlssink location={playlist}.%04d.ts " !
            f"playlist-location={playlist}.m3u8"]) 

where default caps = "video/x-raw,format={VIDEO_FORMAT},width={WIDTH},height={HEIGHT},framerate={FPS_STR}".format(**locals())

这里有一个 m3u8 文件的例子:

#EXTM3U
#EXT-X-VERSION:3
#EXT-X-ALLOW-CACHE:NO
#EXT-X-MEDIA-SEQUENCE:0
#EXT-X-TARGETDURATION:15

#EXTINF:15.000000953674316,
20201014_103647.0000.ts
#EXTINF:15.000000953674316,
20201014_103647.0001.ts
#EXTINF:15.000000953674316,
20201014_103647.0002.ts
#EXTINF:7.8000001907348633,
20201014_103647.0003.ts
#EXT-X-ENDLIST

它在我的 ubuntu 视频播放器和 chrome 上播放正常,但在 Safari 和 Firefox 上播放不正常。我试过稍微改变一下管道,但没有任何效果,也不知道问题出在哪里。 有人知道吗?

按照评论中的建议,我尝试更改个人资料,但没有任何改变。 我还发现它添加无声音频可以解决问题,因为浏览器可能会期待它。

编辑

所以组合音频 + 配置文件使其工作,但由于我使用 appsrc 获取帧,我不知道视频要多长时间,所以我如何在没有该信息的情况下生成音频? 谢谢

为了让它发挥作用,我将配置文件设置为高并在视频上添加了音频。