Я работаю над проектом, в котором сервер анализирует аудиофайлы, а затем приказывает клиентам воспроизводить определенные фрагменты аудио на основе общих часов, серверных. Теоретически нам может потребоваться высокий уровень синхронизации, поскольку клиентские узлы могут воспроизводить звук рядом друг с другом, и все задержки, кроме самых малых, могут вызывать смещение звука, заметное для человеческого уха. Я пытался найти примеры кода c, как решить эту проблему, и мне не повезло.
Я читал много статей в Википедии о синхронизации часов.
http://en.wikipedia.org/wiki/Clock_synchronization
Приведенные выше статьи наводят меня на мысль, что протокол PTP идеально подходит для нашей реализации в локальной сети. Но в идеале мы хотели бы расширить наш проект, чтобы обеспечить подключение через Интернет. Это заставило меня поверить, что NTP будет лучше. Я посетил NTP.org, но мне было трудно понять, и казалось, что если мои приложения находятся в локальной сети, которая не подключена к Интернету, я вообще не могу использовать NTP. Но потом я нашел этот пост:
Малая синхронизация часов без NTP
И ответ Сета Робертсона заставил меня поверить, что я ошибался.
вы можете синхронизироваться с часами выбранной системы, используя несколько строк файла конфигурации (четыре строки на каждом клиенте, пять строк на сервере).
Проблема в том, что он не показал эти строки кода и не указал мне место, где я мог бы просмотреть код, который решает эти проблемы.
Я искал coderhelper и нашел много похожих вопросов, но ни один из них не дал удовлетворительных ответов.
Итак, после стены текста (извините за это, совет по вопросу о переполнении стека оказался очень конкретным и объясняет исследование, которое я провел перед тем, как задать вопрос), я хотел бы кратко сформулировать свой вопрос и, надеюсь, кто-нибудь может мне помочь:
В модели программного обеспечения клиент / сервер, как я могу поддерживать точную синхронизацию часов в программном обеспечении, чтобы обеспечить выполнение событий на основе времени?
В настоящее время наша группа использует UDP, но при необходимости мы готовы изменить это.
Спасибо за любую помощь.
РЕДАКТИРОВАТЬ: Я понимаю, что мне нужно поддерживать синхронизацию часов, вопрос в том, КАК мне это сделать в программном обеспечении. Я ищу пример кода или гиперссылку на место, где я могу найти образец кода по этой теме. КОНЕЦ
NTP упакован для большинства операционных систем, и обычно это просто вопрос запуска сервера (и его установки, если вы используете ОС, где он еще не установлен). Однако вам действительно нужно время, чтобы синхронизировать это? Разве позиция в аудио не дает вам эталонное время, т.е. ваш сервер определяет, что в это время поток должен воспроизводиться с определенным байтовым смещением, и вы передаете это смещение клиентам
Я не думаю, что ntp - это то, что вы ищете. Похоже, лучше подойдет JACK Audio Connection Kit.