Как синхронизировать ролики YouTube на нескольких клиентах?
Я хочу понять, как создать веб-приложение, которое позволяет нескольким пользователям просматривать одно и то же видео на YouTube на своих компьютерах. Например, synchtube.com или watch2gether.com
Я ищу простой подход, который может быть реализован с использованием общих технологий, таких как PHP
, jQuery
и Apache
. Я сейчас думаю по линиям опроса (или длинный опрос кометы, но для этого требуется более сложная настройка сервера, на что я надеюсь избежать), подобно тому, как реализованы приложения чата Ajax
- это клиенты, которые постоянно проверяют с сервером, чтобы видеть которое воспроизводится видео. Тем не менее, я подозреваю, что здесь будут проблемы с задержкой, поэтому видео не будет полностью синхронизироваться. Я пока не могу придумать лучшего подхода.
Другим сообществам разработчиков, любая помощь по методологии или фрагментам кода очень ценится!
Ответы
Ответ 1
Здесь приведен пример сохранения видео в синхронизации с помощью WebSockets и node.js:
http://softwareas.com/video-sync-with-websocket-and-node
Я знаю, что вы не хотите использовать эту технологию, это просто хорошая отправная точка, чтобы показать, что вы можете делать и как.
Поскольку вы хотите использовать PHP и держать вещи простыми, лучшим решением будет аутсорсинг уровня связи в реальном времени (используемый для синхронизации видео пользователя) с размещенной службой, такой как Pusher, за кого я работаю. Это означает, что вам не нужно поддерживать постоянное соединение, и вы можете использовать Pusher для доставки событий в реальном времени о состояниях видео между пользователями/клиентами.
Если вы хотите использовать видео на YouTube, а HTML5 не всегда будет доступен, вам необходимо использовать Player API. Я не вижу подобного события timeupdated
(доступно в видео HTML5), поэтому вам может потребоваться периодически проверять время видео (см. раздел API статуса игрока. Вы можете зарегистрироваться для событий изменения состояния, чтобы вы знали, когда пользователь останавливается, останавливает видео и т.д.
@rob-w comment дает некоторое представление об использовании API YouTube.
Примечание. Это может привести к действительно интересному сообщению в блоге, поэтому, если вы заинтересованы, дайте мне знать, и я увижу, что я могу сделать.
Ответ 2
У вас есть несколько способов сделать это:
-
Идеальное решение - использовать протокол и сервер совместной работы в реальном времени (например, XMPP и OpenFire) настроить и разработать настраиваемый модуль, который позволит вам передавать пользовательские строфы взад и вперед. К сожалению, это не только не соответствует вашим требованиям в отношении задействованных технологий, но также довольно сложно реализовать, но результат впечатляет.
-
Далее, если кросс-браузерная совместимость не является проблемой, вы можете использовать API WebSocket в HTML 5. Проверьте этот пример парня о том, как создать чат с поддержкой HTML 5 WebSocket.
-
Наконец, вы остаетесь с опросом AJAX, обычным методом или длинным опросом, в котором вы блокируете выполнение на стороне сервера script до тех пор, пока у вас не будет доступных данных. Подробнее см. эту ссылку.
Ответ 3
Для меня идеальным решением является использование Vynch. С помощью этой технологии вы можете встроить в свой собственный сайт комнату с видео, которую вы можете синхронизировать. Вы можете создавать плейлист и делиться с друзьями и пользователем! есть также чат для обмена вашими впечатлениями.