Как синхронизировать ролики YouTube на нескольких клиентах?

Я хочу понять, как создать веб-приложение, которое позволяет нескольким пользователям просматривать синхронизируемое видео на YouTube на своих компьютерах. Например, с помощью synchtube.com или watch2gether.com

Я ищу простой подход, который может быть реализован с использованием общих технологий, таких как PHP , jQuery и Apache . Я сейчас думаю по линиям опроса (или комет длинный опрос, но для этого требуется более сложная настройка сервера, на которую я надеюсь избежать), подобно тому, как реализованы приложения для чата Ajax , – это клиенты, которые постоянно проверяют с сервером, чтобы посмотреть, какое видео играет. Тем не менее, я подозреваю, что здесь будут проблемы с задержкой, поэтому видео не будет полностью синхронизироваться. Я пока не могу придумать лучшего подхода.

Другим сообществам разработчиков любая помощь по методологии или фрагментам кода очень ценится!

Ниже приведен пример сохранения видео в синхронизации с помощью WebSockets и node.js: http://softwareas.com/video-sync-with-websocket-and-node

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

Поскольку вы хотите использовать PHP и держать все в порядке, то лучшим решением является аутсорсинг уровня связи в реальном времени (используемый для синхронизации видео пользователя) с размещенной службой, такой как Pusher , с которой я работаю. Это означает, что вам не нужно поддерживать постоянное соединение, и вы можете использовать Pusher для доставки событий в реальном времени о состояниях видео между пользователями / клиентами.

Если вы хотите использовать видео на YouTube, а HTML5 не всегда будет доступен, вам нужно будет использовать API-интерфейс проигрывателя . Я не вижу аналогичного события с timeupdated (доступно в видео HTML5), поэтому вам может потребоваться периодически проверять время видео (см. Раздел API статуса игрока . Вы можете зарегистрироваться для событий изменения состояния, чтобы вы знали, когда пользователь делает паузу, останавливает видео и т.п.

Комментарий @ rob-w дает некоторое представление об использовании API YouTube.

Примечание. Это может привести к действительно интересному сообщению в блоге, поэтому, если вы заинтересованы, дайте мне знать, и я увижу, что я могу сделать.

У вас есть несколько способов сделать это:

  • Идеальное решение – использовать протокол взаимодействия в реальном времени и сервер (например, XMPP и OpenFire ) и разработать настраиваемый модуль, который позволит вам передавать пользовательские строфы взад и вперед. К сожалению, это не только не соответствует вашим потребностям в отношении задействованных технологий, но также довольно сложно реализовать, но результат впечатляет.

  • Далее, если кросс-браузерная совместимость не является проблемой, вы можете использовать WebSocket API в HTML 5. Ознакомьтесь с примером этого парня о том, как создать чат с поддержкой HTML 5 WebSocket.

  • Наконец, вы остаетесь с опросом AJAX, либо обычным методом, либо длительным опросом, в котором вы блокируете выполнение сценария на стороне сервера, пока не получите некоторые данные. См. Эту ссылку для получения дополнительной информации.

Для меня идеальным решением является использование Vynch. С помощью этой технологии вы можете встроить в свой собственный сайт комнату с видео, которую вы можете синхронизировать. Вы можете создавать плейлист и делиться с друзьями и пользователем! есть также чат, чтобы обмениваться впечатлениями.