hlssink не разделяет видео и не создает плейлист - PullRequest
0 голосов
/ 19 апреля 2020

Я работаю с 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

Я передаю конвейер через appsr c, который подписан на событие 'need-data' в моем приложении.

После запуска приложения я ожидаю увидеть сегменты фрагмент000000.ts , фрагмент000001.ts , фрагмент000002.ts ... фрагмент00000N .ts в папке / tmp / hls. Здесь также должен появиться файл списка воспроизведения stream.m3u8 .

Но на самом деле в папке / tmp / hls появляется только фрагмент000000.ts . Этот сегмент содержит все видео.

Я не могу понять, почему мой конвейер не сегментирует видео.

Существует очень много примеров запуска конвейеров, где источником видео для hlssink является videotestsr. c. Например, все прекрасно работает, если я запускаю следующее:

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

Но я не нашел ни одного примера запуска gstreamer по схеме appsr c -> hlssink . Помогите пожалуйста разобраться в чем проблема

...