Как правильно получить реальную записанную дату / время видеопотока? - PullRequest
1 голос
/ 08 февраля 2012

На данный момент у меня есть полный собственный механизм 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) и отправлять некоторые пользовательские информационные сообщения о дате / времени?

Я могу придумать более одного решения для решения моей проблемы.Но если есть обычный и более правильный способ, я не хочу использовать для этого уродливое решение.

1 Ответ

0 голосов
/ 09 февраля 2012

Я использовал дополнительный порт UDP для отправки информации о дате / времени (метка времени unix 4 байта).Он работает нормально, мой плеер правильно считает таймер, и вся информация о дате / времени принимается одновременно с видеопотоком.Я все еще думаю, что должен быть лучший, стандартный для отрасли способ, но поскольку никто не решил ответить на мой вопрос, я хотел бы поделиться своим собственным решением.

Port Offset   : RTP Video Stream
Port Offset+1 : Date/Time Information (Unix TimeStamp)

Расчет метки времени Unix (секунды):

File Recording Start DataTime + Seek Time + (Media TimeStamp / 100000)

Надежда 1: Это поможет кому-то с подобным случаем в будущем.

Надежда 2: Кто-то отвечает на этот вопрос, предлагая лучший метод.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...