Может ли кто-нибудь указать мне правильное направление, где я могу синхронизировать живое видео и аудио поток?
Я знаю, это звучит просто, но вот моя проблема:
- Мы2 компьютера транслируются на один компьютер по нескольким сетям (расстояние до которых может достигать сотен миль).
- Все три компьютера синхронизируют свои системные часы с использованием NTP
- Видео компьютер собирает видео ипередает потоки UDP на компьютер дисплея
- Аудиокомпьютер собирает аудио, а также передает потоки на компьютер дисплея
Существует приложение, которое принимает аудиопоток.Это приложение выполняет две вещи (воспроизводит звук через динамики и отправляет информацию о задержке сети в мое приложение).У меня нет привилегий для метода, которым они передают аудио.
Мое приложение отображает видео и две другие задачи (которые я пока не смог выяснить, как это сделать).- Мне нужно иметь возможность определить сетевую задержку для видеопотока (в идеале было бы здорово иметь временную метку для видеопотока с видеокомпьютера, которая связана с этими системными часами, чтобы я мог сравнить эту временную метку со своей собственнойсистемные часы).- Мне также нужно отложить отображение видео, чтобы синхронизировать его со звуком.
Все, что я обнаружил, предполагает, что либо аудио и видео передаются с одного компьютера, либо аудиопотоквыполняется gstreamer, чтобы я мог использовать некоторую функцию синхронизации.Я не привилегирован для реального аудиопотока.Мне дается только количество времени, в течение которого звук задерживался (сетевая задержка).
Так что периодически мне присваивается номер в качестве сетевой задержки для звука (пример: 250 мс).Мне нужно иметь возможность определить собственную сетевую задержку для видео (что я пока не знаю, как это сделать).Затем мне нужно сравнить, чтобы увидеть, больше ли задержка звука, чем задержка видеосети.Скажем, видео составляет 100 мс ... тогда мне нужно отложить показ видео на 150 мс (что я тоже не знаю, как это сделать).
Любая помощь приветствуется.Я пытаюсь понять, где кто-то еще остановился в этом проекте, поэтому мне было нелегко понять это и двигаться вперед.Также делается на Python ... что еще больше ограничивает информацию, которую я смог найти.Благодарю.
Скотт