GStreamer - RTSP в HLS/mp4

Я пытаюсь сохранить поток 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 - все ок по той же команде.

Что случилось? Заранее спасибо.

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
0
2 745
2

Ответы 2

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

Спасибо за ответ! На мой вопрос нет проблем с созданием списка воспроизведения hls из файлов «.ts». Основная цель - записать список воспроизведения файлов «.mp4». А команда, которую я давал в вопросе темы, записывает видео в ОДИН файл, хотя предупреждений/ошибок нет... Поэтому продолжаю искать решение..

Nick Saw 14.03.2019 16:43

Я не знаю, поддерживает ли GStreamer функцию MP4 последней спецификации HLS от Apple. В любом случае вам нужно будет использовать mp4mux вместо matroskamux. Опять же - я думаю, что эта спецификация использует фрагментированные файлы MP4. Таким образом, эти файлы сами содержат фрагменты. Так что не вижу смысла в дополнительном плейлисте. Или чем этот режим вообще отличается от MPEG-DASH.

Florian Zwoch 14.03.2019 17:41

Вы должны использовать gstreamer? В противном случае я считаю, что эта команда ffmpeg делает то, что вы хотите.

ffmpeg -i rtsp://... -c copy -hls_list_size 10 -hls_segment_type fmp4 output.m3u8

Спасибо за ответ. Я знаю, что ffmpeg может просто решить эту задачу. Но меня интересует возможность получения mp4-чанков от gstreamer. И я так понимаю, что нельзя...

Nick Saw 18.03.2019 14:12

Другие вопросы по теме