hlssink不分割视频,也不创建播放列表

时间:2020-04-19 12:48:33

标签: gstreamer gstreamer-1.0 python-gstreamer

我与gstreamer合作,并具有以下管道:

   appsrc name=source is-live=true block=true format=GST_FORMAT_TIME
   caps=video/x-raw,format=BGR,width=1280,height=720,framerate=30/1
   ! videoconvert ! video/x-raw,format=I420 ! x264enc  !
   h264parse config-interval=3  ! queue ! mpegtsmux !
   hlssink playlist-length=2 max-files=5
   playlist-location="/tmp/hls/stream.m3u8" playlist-root="/tmp/hls"
   location="/tmp/hls/fragment%06d.ts" target-duration=10

我通过appsrc传递管道,appsrc订阅了我的应用程序中的“需要数据”事件。

启动应用程序后,我希望看到段 fragment000000.ts fragment000001.ts fragment000002.ts ... < / tmp / hls文件夹中的strong> fragment00000N.ts 。播放列表文件 stream.m3u8 也应显示在此处。

但实际上,只有 fragment000000.ts 出现在/ tmp / hls文件夹中。该片段包含整个视频。

我不明白为什么我的管道不能分割视频。

有许多启动管道的示例,其中hlssink的视频源是videotestsrc。例如,如果我运行以下命令,那么一切都会很好:

gst-launch-1.0 videotestsrc is-live=true ! video/x-raw, framerate=25/1, width=720, height=576, format=I420 ! x264enc bitrate=1000 key-int-max=25 ! h264parse ! video/x-h264 ! queue ! mpegtsmux ! hlssink playlist-length=10 max-files=20  playlist-location="/tmp/hls/stream.m3u8" location="/tmp/hls/fragment%06d.ts" target-duration=10

但是我没有找到使用 appsrc-> hlssink 方案启动gstreamer的任何示例。帮助请理解问题出在哪里

1 个答案:

答案 0 :(得分:0)

好像您的编码器没有生成关键帧,因此hlssink无处将流“切”成段。在您发布的工作示例中,key-int-max=25告诉编码器每第25帧应该是关键帧。

由于您使用了10秒的目标持续时间,因此至少应每10秒创建一个关键帧。