2011-12-07 35 views
13

Estoy buscando entender cómo crear una aplicación web que permita que varios usuarios vean el mismo video de YouTube sincronizado en sus computadoras. Por ejemplo, synchtube.com o watch2gether.com¿Cómo reproducir videos de YouTube sincronizados en varios clientes?

Estoy buscando un método sencillo que puede ser implementado usando tecnologías comunes tales como PHP, jQuery y Apache. Actualmente estoy pensando en encuestas (o encuestas largas de cometas pero eso requiere una configuración de servidor más compleja que espero evitar), similar a cómo se implementan las aplicaciones de chat Ajax, es decir, los clientes comprueban continuamente con el servidor para ver qué video está jugando. Sin embargo, sospecho que habrá problemas de latencia aquí, por lo que los videos no estarán completamente sincronizados. No puedo pensar en un mejor enfoque todavía.

Para la comunidad de desarrolladores compañeros, cualquier ayuda sobre la metodología o los fragmentos de código es muy apreciada.

+0

Lo único que se me ocurre es que cada usuario seleccione listo. Una vez que todos estén listos, inserte el video en todos ellos. Me gustaría buscar en un servicio de pub/sub utilizando php. No estoy seguro de qué soporte de navegador está buscando, pero he encontrado varias tecnologías de websocket para ser bastante útil para pub/sub. Que es compatible con la mayoría de los navegadores modernos. – agmcleod

+1

Use un servidor para sincronizar los clientes. Luego, use la API de reproductor de JavaScript de YouTube para reproducir un video. Ver [esta respuesta] (http://stackoverflow.com/questions/7443578/youtube-iframe-api-how-do-i-control-a-iframe-player-thats-already-in-the-html#7513356) para un método simple y fácil de entender para reproducir un video. Para llamadas más complejas, como obtener el estado y los eventos del jugador, vea [esta respuesta] (http://stackoverflow.com/questions/7988476/listening-for-youtube-event-in-jquery/7988536#7988536). –

+0

Incluso si todos los usuarios inician el video exactamente en el mismo momento, ¿qué sucede si algunos tienen una conexión más lenta que puede mantenerse al día con la transmisión de video solo mientras otras aplicaciones no estén utilizando parte de su ancho de banda? ¿Hace que todos los clientes hagan una pausa para que nadie se quede atrás? – nnnnnn

Respuesta

1

usted tiene un par de maneras que usted puede lograr esto:

  • La solución ideal es utilizar un tiempo real protocolo de colaboración y el servidor (como XMPP y OpenFire) puesta en marcha y desarrollar un módulo personalizado eso le permitirá pasar estrofas personalizadas de un lado a otro. Lamentablemente, no solo no cumple con sus requisitos sobre la tecnología involucrada, sino que también es bastante complicado de implementar, pero el resultado es espectacular.

  • A continuación, si la compatibilidad entre navegadores no es un problema, puede usar la API de WebSocket en HTML 5. Consulte this guy's example sobre cómo crear un chat de habilitación WebSocket de HTML 5.

  • Finalmente, le quedan encuestas AJAX, ya sea el método habitual o el sondeo largo, en el que bloquea la ejecución del script del servidor hasta que tenga algunos datos disponibles. Ver this link para más referencia.

+0

Además, eche un vistazo a cómo el protocolo NTP maneja la demora de la red al sincronizar relojes: es posible que desee implementar algo similar – Basic

4

He aquí un ejemplo de mantener vídeos sincronizados utilizando WebSockets y Node.js: http://softwareas.com/video-sync-with-websocket-and-node

Sé que usted no desea utilizar esta tecnología, que es sólo un buen punto de partida para mostrar lo puedes hacer y cómo.

Desde desea utilizar PHP y no complicar las cosas, entonces su mejor solución es la de subcontratar la capa de comunicaciones en tiempo real (utilizado para mantener los vídeos de usuario en sincronización) a un servicio alojado como Pusher, para quién trabajo. Esto significa que no necesita mantener la conexión permanente y puede usar Pusher para entregar eventos en tiempo real sobre los estados de video entre usuarios/clientes.

Si desea utilizar videos de YouTube, y HTML5 no siempre estará disponible, entonces deberá usar el Player API. No puedo ver un evento similar timeupdated (disponible en video HTML5) por lo que es posible que deba verificar periódicamente la hora del video (consulte player status API section. Puede registrarse para eventos de cambio de estado para saber cuándo un usuario hace una pausa, detiene un video, etc.

@ comentarios de rob-w proporciona una buena penetración en el uso de la API de YouTube

Nota:. en realidad, esto podría hacer para una entrada de blog muy interesante por lo que si usted está interesado, hágamelo saber y yo verá lo que quiero puede hacer.

0

Para mí, la solución ideal es utilizar Vynch. Con esta tecnología, puede incrustar en su propio sitio web una sala con video que puede ver sincronizada. ¡Puedes crear listas de reproducción y compartirlas con amigos y usuarios! también hay un chat para intercambiar sus impresiones ..

Cuestiones relacionadas