H.264 Потоковое в реальном времени, отметка времени в блоках NAL? - PullRequest
4 голосов
/ 10 мая 2011

Я пытаюсь создать систему, которая транслирует потоковое видео и аудио, захваченное на телефонах Android. Видео и auido записываются на стороне Android с помощью MediaRecorder, а затем отправляются прямо на сервер, написанный на python. Клиенты должны получать доступ к этой прямой трансляции через свой браузер, поэтому я реализовал потоковую часть системы с использованием flash. Прямо сейчас и видео, и аудио контент появляются на стороне клиента, но проблема в том, что они не синхронизированы. Я уверен, что это вызвано неправильными значениями меток времени во флэш-памяти (в настоящее время я увеличиваю ts на 60 мс для кадра видео, но ясно, что это значение должно быть переменным).

Аудио закодировано в amr на телефоне Android, поэтому я точно знаю, что каждый кадр amr равен 20 мс. Однако это не относится к видео, которое закодировано в H.264. Чтобы синхронизировать их вместе, мне нужно было бы точно знать, сколько миллисекунд длится каждый кадр H.264, чтобы я мог пометить их позже при доставке контента с использованием флэш-памяти. Мой вопрос: доступна ли такая информация в единицах NAL H.264? Я пытался найти ответ в стандарте H.264, но информация там просто подавляющая.

Может кто-нибудь указать мне правильное направление? Спасибо.

1 Ответ

1 голос
/ 10 мая 2011

Метки времени не в единицах NAL, но обычно являются частью RTP . RTP / RTCP также заботится о синхронизации медиа.

Формат полезной нагрузки RTP для H.264 также может представлять интерес для вас.

Если вы не используете RTP, вы просто отправляете необработанные блоки данных по сети?

...