@ADOLF88HITLER

Сегментация mp4 в Gstreamer?

Решил сделать сабж. Столкнулся с некоторыми проблемами.

Есть пайплайн:
gst-launch-1.0 rtspsrc location=rtsp://ip/cam ! rtph264depay ! h264parse ! mp4mux fragment-duration=10000 streamable=1 ! multifilesink next-file=2 location=file-%03d.mp4


Первый сегмент воспроизводится хорошо, остальные не особо. При попытке изучить структуру невалидных mp4 натыкаюсь на интересную особенность:

1) MOOV-атом
2) какие-то непонятные данные,
3) MOOF
4) MDAT
5) MOOF
6) MDAT

Самое интересное в пункте 2. У данных нет никакого заголовка, они просто идут. По размеру я могу предположить что это MDAT. Добавляю перед этими данными заголовок MDAT, считаю длительность. Файл сразу же становится валидным, но тот самый неизвестный кусок не воспроизводится, так как перед ним не стоит MOOF с описанием длительности.

Данные проблемы есть как у mp4mux, так и у qtmux. Эксперименты проводились на GStreamer 1.1.0 и на 1.2.2. Везде результат идентичный.

Может использовать multifilesink не правильно? Пробовал через multifdsink но результат идентичен.
Помогите понять, что я делаю не так. В конечном итоге хочу сделать вещание через DASH.
  • Вопрос задан
  • 3498 просмотров
Пригласить эксперта
Ответы на вопрос 1
@victor1234
IT: Компьютерное зрение, linux, с++
На сколько я знаю эту задачу нельзя реализовать на multifilesink. Dash я вещаю через nginx-rtmp.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы