Я работаю с 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 . Помогите пожалуйста разобраться в чем проблема