На данный момент у меня есть полный собственный механизм video-streaming
(кроме фильтров GDCL Mux / Demux).Структура выглядит следующим образом.
График стримера:
File Source Filter -> GDCL MP4 Demuxer -> My RTP Network Renderer
График приемника:
My RTP Network Listener -> GDCL MP4 Muxer -> My Video Renderer
Я не использую протокол RTSP
и передаю необходимые параметры запуска понекоторые пользовательские методы.Я передаю сегментированные файлы непрерывно.Чтобы сделать это, я создаю новый Streamer Graph
для следующего файла каждый раз, когда достигается конец файла.Но продолжайте использовать тот же порт UDP
на следующем Streamer Graph
.Итак, My RTP Network Listener
продолжает слушать и продолжает потоковую передачу, как только новый Streamer Graph
будет собран и запущен.
В настоящий момент я не использую другой метод связи, такой как RTCP
.Потоковое аудио не завершено, поэтому у меня нет проблем с синхронизацией аудио-видео (пока!).
Здесь важная часть
Все, что я хочу - это получить реальная записанная дата / время информация из потока.Имена файлов MP4 представлены в формате даты / времени.Итак, я знаю, когда именно началась запись файла.Я знаю, что могу рассчитать дату / время записи, используя:
Recording Start Date/Time Value + Media TimeStamp Value Of The Stream
Но что, если между двумя записанными файлами будет промежуток?Когда я создаю новый Streamer Graph
, временные метки снова начнут отсчитываться с нуля, верно?
Здесь возникает вопрос
Итак, как правильно обращаться?такого рода ситуации?Я знаю, что RTCP
используется для синхронизации аудио и видео.Может ли это быть использовано и для моего случая?Или мне нужно использовать второй UDP
порт (точно так же как RTCP
) и отправлять некоторые пользовательские информационные сообщения о дате / времени?
Я могу придумать более одного решения для решения моей проблемы.Но если есть обычный и более правильный способ, я не хочу использовать для этого уродливое решение.