Я пытаюсь сохранить поток RTSP h.264 в файлы HLS mp4:
gst-launch-1.0 rtspsrc location = "rtsp://....." ! rtph264depay ! h264parse ! matroskamux ! hlssink max-files=0 playlist-length=0 location = "/home/user/ch%05d.mp4" playlist-location = "/home/user/list.m3u8" target-duration=15
В результате - всего один файл ch00000.mp4, включающий в себя весь видеопоток (3мин вместо 15сек в "target-duration").
Если сохраняю в файлы mpegtsmux/ts - все ок по той же команде.
Что случилось? Заранее спасибо.





HLS состоит из сегментов транспортного потока MPEG. Итак, во-первых: matroskamux здесь не имеет смысла. Вместо этого вам понадобится mpegtsmux. Чтобы указать, что это на самом деле, вы обычно называете файлы с расширением .ts. Это может по-прежнему работать для GStreamer, поскольку это просто имя файла — игроки могут отказаться воспроизводить его, потому что ожидают другой формат файла.
Например.
gst-launch-1.0 rtspsrc location = "rtsp://....." ! rtph264depay ! h264parse ! \
mpegtsmux ! hlssink max-files=0 playlist-length=0 location = "/home/user/ch%05d.ts" \
playlist-location = "/home/user/list.m3u8" target-duration=15
Я не знаю, поддерживает ли GStreamer функцию MP4 последней спецификации HLS от Apple. В любом случае вам нужно будет использовать mp4mux вместо matroskamux. Опять же - я думаю, что эта спецификация использует фрагментированные файлы MP4. Таким образом, эти файлы сами содержат фрагменты. Так что не вижу смысла в дополнительном плейлисте. Или чем этот режим вообще отличается от MPEG-DASH.
Вы должны использовать gstreamer? В противном случае я считаю, что эта команда ffmpeg делает то, что вы хотите.
ffmpeg -i rtsp://... -c copy -hls_list_size 10 -hls_segment_type fmp4 output.m3u8
Спасибо за ответ. Я знаю, что ffmpeg может просто решить эту задачу. Но меня интересует возможность получения mp4-чанков от gstreamer. И я так понимаю, что нельзя...
Спасибо за ответ! На мой вопрос нет проблем с созданием списка воспроизведения hls из файлов «.ts». Основная цель - записать список воспроизведения файлов «.mp4». А команда, которую я давал в вопросе темы, записывает видео в ОДИН файл, хотя предупреждений/ошибок нет... Поэтому продолжаю искать решение..