Решил сделать сабж. Столкнулся с некоторыми проблемами.
Есть пайплайн:
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.