【发布时间】:2020-10-14 11:00:19
【问题描述】:
我正在尝试使用 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 上却不行。我试过稍微改变管道,但没有任何效果,也不知道问题出在哪里。 有人知道吗?
按照 cmets 中的建议,我尝试更改配置文件,但没有任何改变。 我还发现添加无声音频可以解决问题,因为浏览器可能会出现这种情况。
编辑
所以组合音频 + 配置文件使其工作,但由于我使用 appsrc 来获取帧,我不知道视频会持续多久,所以我如何在没有这些信息的情况下生成音频? 谢谢
【问题讨论】:
-
设置个人资料。如果不这样做,它可能会生成许多解码器不支持的 4:4:4 配置文件。
-
感谢您的回答@FlorianZwoch 我在另一个问题上遇到了这个问题,但我不知道该怎么做你有链接或记录这个的东西吗?谢谢。
-
gstreamer.freedesktop.org/documentation/x264/… 第三个示例强制基线配置文件。
-
所以我已经尝试将配置文件设置为基线,但没有任何改变,视频仍然可以在 ubuntu 视频播放器和 chrome 中播放,但不能在 Firefox 和 safari 上播放。@FlorianZwoch 感谢您提供链接。我在想也许问题是我正在逐帧在管道中做这件事,有没有其他人经历过类似的事情?
标签: firefox gstreamer hlsl gstreamer-1.0 python-gstreamer