¿Es posible transmitir vídeos utilizando Amazon S3 / CloudFront con HTML5 player?


Quiero usar un reproductor de video HTML5 y transmitir videos. ¿Es esto posible con S3 / CloudFront? Entiendo que Amazon utiliza el protocolo de transmisión RTMP y que la etiqueta video de HTML5 no admite RTMP. ¿Hay alguna forma de transmitir videos con reproductores HTML5?

Author: at., 2013-04-29

5 answers

Mucho de lo que @Wayne Koorts publicó proporciona la base para una buena respuesta. La desconexión que parece es que puede "transmitir" video a través de descarga progresiva. Esto funciona con cualquier archivo de video compatible con html5, como ilustró.

Para obtener el mejor rendimiento en una descarga progresiva de archivos mp4, necesita que los metadatos de moov atom aparezcan al principio del archivo. Asegurar que sus archivos mp4 tienen esta propiedad es una de las razones por las que el programa qtfaststart es incluido con ffmpeg.

Por supuesto, la descarga progresiva no es un "servidor de transmisión de medios". Los servidores de streaming media fueron diseñados para soportar una serie de características diferentes, incluyendo:

  • Seguridad y DRM
  • Streaming/intercalado adaptativo (soporte para múltiples velocidades de bits intercaladas en un archivo específico)
  • Buscando

Parece que la preocupación particular expresada aquí es la característica de búsqueda. Como sucede esto está soportado bien en html5 y por s3 / cloudfront.

Lo que es confuso es que cloudfront de archivos de vídeo tiene varias opciones. Una opción es que los archivos sean entregados por su red de servidores Adobe FMS con licencia. Aquí es donde entra en juego la confusión sobre el uso de RTMP. Sin embargo, esa es solo una opción. Los archivos se pueden distribuir a cloudfront en forma estándar de "descarga" y tendrán la propiedad de búsqueda debido a la implementación de rangos de bytes y soporte para lo que popularmente se conoce como pseudo streaming.

Parece haber mucha confusión sobre el término "Pseudo streaming", pero en el caso de html5, es simplemente el requisito de que el servidor HTTP soporte la especificación 1.1. Al buscar, el cliente envía una solicitud de rango de bytes y el servidor es responsable de entregar esa porción del archivo.

En otras palabras... la búsqueda con el reproductor html5 funciona con los servidores cloudfront porque son compatibles con HTTP 1.1.

Como para algunos de los otros funciones que proporcionan los servidores de streaming, hay una variedad de servidores competitivos que han implementado "H264 streaming" o elementos de MPEG-DASH como alternativa al uso de servidores compatibles con RTMP y FMS. Una serie de reproductores basados en flash soportan estas funciones, que van más allá de la simple búsqueda. El JWPlayer y Flowplayer son 2 ejemplos de reproductores que admiten algunas o todas las características, sin embargo, el reproductor de vídeo de HTML5 no tiene soporte para ninguna de estas características. Puedes aprender más en http://h264.code-shop.com/trac#H264StreamingModuleIntroductionversion2

Si eso no es suficiente confusión para usted, Apple implementó su propio protocolo "HTTP Live Streaming", a veces conocido como m3u8, que admiten en ios y quicktime. Menciono esto porque con frecuencia la gente quiere una forma de soportar una variedad de dispositivos diferentes.

Espero que esto haya ayudado a aclarar un poco las cosas.

 55
Author: gview,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-09-11 11:33:00

Algo que he hecho con éxito recientemente es usar el video .js HTML5 player (código abierto) reproductor de vídeo, con vídeos alojados en S3. Básicamente, solo tienes que cargar tu video en tu bucket S3, luego el código en la página se ve algo como esto (después de incluir el Video.js CSS y archivos JS en su página):

<video id="example_video_1" class="video-js vjs-default-skin"
    controls preload="auto" width="1600" height="900"
    poster="http://mys3bucket.s3.amazonaws.com/videoImage.jpg"
    data-setup='{"example_option":true}'>
    <source src="http://mys3bucket.s3.amazonaws.com/myvideofile.mp4" type='video/mp4' />
    <source src="http://mys3bucket.s3.amazonaws.com/myvideofile.webm" type='video/webm' />
</video>

poster es solo la imagen fija para mostrar en el reproductor de video mientras el video se está cargando o no se está reproduciendo. En cuanto a las etiquetas <source>, puede vincular tantas o algunos de estos como usted tiene videos para. Más formatos solo significa un mejor soporte en diferentes plataformas(por ejemplo, algunas distribuciones de Linux vanilla pueden no reproducir MP4, etc.).

Ver el Video.guía de inicio rápido de js aquí .

Al decidir si usar S3 o CloudFront: IMHO S3 es más apropiado para el video en general porque el costo es más barato cuando se almacenan muchos datos (porque CloudFront distribuye copias de todo a todos sus servidores perimetrales, aunque puede limitar un poco a través de opciones). Sin embargo, algunas personas prefieren CloudFront debido a la velocidad, aunque recuerde que CloudFront está pensado principalmente como una red de entrega de contenido donde se requieren tiempos de respuesta súper rápidos (por ejemplo, para gráficos del sitio, hojas de estilo, archivos JS, etc.).), por lo que es una compensación dependiendo de sus necesidades. Si sus videos son todos muy pequeños, entonces puede encontrar que CloudFront realmente es apropiado para sus necesidades.

Para analizar los costos de manera más definitiva, puede usar Amazon calculadora de costes mensuales .

 12
Author: Wayne Koorts,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-09-05 20:52:44

Estoy trabajando en algunos videos para una producción global. Necesito mantener el costo bajo, pero estoy buscando ser fácilmente escalable y suficientes características para ofrecer un sistema bastante complejo de forma segura. AWS parece genial, los ha estado usando desde hace unos años y creo que los cubos S3 son increíbles. Son libres, hasta el límite. Y sí. Ciertamente tienen éxito en proporcionar lo que creo que es la transmisión de video; en que está alojado en S3 y se reproduce directamente en mi JWPlayer inmediatamente en la carga de la página sin nerviosismo o latencia.

Puedo ver que algunas de las delineaciones de video en streaming son vagas y aún confusas para mí, aunque @gview hizo un gran trabajo proporcionándonos una incitación más profunda. La complejidad de la misma me interesa, pero si su agenda es conseguir que el vídeo en marcha, no creo que HTML5 es su respuesta. SOAP, REST, HTTP e incluso HTTPS son compatibles y se pueden aprovisionar hasta donde sé. La documentación en AWS también es notable, muy útil. Adjuntaré un enlace de inicio aquí.

@ user2352370: JWPlayer..Estoy indeciso. Acabo de comprar la membresía de nivel medio y ahora al leer Wayne Koorts arriba, creo que JSvideo es mejor por una variedad de razones y estaré trabajando con eso si puedo obtener un reembolso. No veo ningún valor inmediato en JWvideo, más allá del estilo que proporciona para los videos. Creo que el valor de JWvideo para mí, al menos, se limita al estilo del video. Puedo usar JSVideo para crear una variedad de copias de seguridad fácilmente para múltiples dispositivos y tipos de navegador. Puedo diseñar el JSVideo incluso, pero tal vez hay que decir algo por la simplicidad de JWvideo. Probablemente lo voy a necesitar para el ataque de la publicación de video que tendré en los próximos meses.

Tanto JWVideo como JSVideo Funcionarán
Creo que JWVideo y JSvideo ambos harán el trabajo, actualmente tengo tanto en mi sitio para varios videos y ambos hacen un trabajo decente, no han probado navegadores muy profundo sin embargo, aunque.

Haga crear una cuenta gratuita de AWS y juega con los servicios de forma gratuita. Es bastante revelador si ha estado tratando con proveedores como RackSpace o Host Gator por un tiempo.
AWS Free Tier HomePage

Sitio de documentación de AWS para S3

 1
Author: Ryan H.,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-11-17 05:09:05

Estaba buscando en AS3 para alojar videos con VideoJS para mi propio sitio y es por eso que encontré su pregunta, pero cuando miré el código de ejemplo para VideoJS me di cuenta de que el enlace estaba en una empresa llamada ZenCoder - http://video-js.zencoder.com/oceans-clip.mp4

Http://zencoder.com/en/

No tengo ninguna asociación con Zencoder, pero presumiblemente vale la pena considerarlo si está buscando alojamiento de video basado en la nube.

 0
Author: Kevin Monk,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-04-19 20:34:03

Tengo la configuración de CloudFront & S3 y la transmisión de video con un reproductor HTML5 que es responsivo. Eso sí, estoy intentando que funcione en todos los navegadores y no funciona al 100% como debería.

Aquí hay un tutorial interesante para Incrustar videos en un sitio de WordPress a través de JW Player & S3: http://www.mywpexpert.com/embed-videos-amazon-s3-jw-player /

Aquí hay otro ejemplo de conexión directa a S3 dentro de WordPress: http://html5.svnlabs.com/amazon-s3-cloud-html5-player /

Espero que esto ayude.

 -1
Author: user2352370,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-05-05 17:00:45