2011-08-17 12 views
6

Mi compañía está comenzando a destacar una gran cantidad de videos de entrenamiento/tutoriales en línea, que se mostrarán en línea en una página web. Necesitamos una solución simple entre navegadores que pueda acomodar a la mayoría de los usuarios para la visualización en línea.Solución de video en línea compatible con navegadores cruzados

Una de las soluciones que he leído (que no es muy simple) es crear una versión flash, mp4 y avi de cada video y dejar que un plugin javascript determine con qué navegador funciona mejor.

+0

¿Hay algún formato de video que sea estándar en el futuro para html5? –

+1

Si Apple admitiera el formato WebM, podría suceder en un futuro próximo, ya que creo que IE9 ahora admite WebM, pero es muy dudoso que lo hagan, ya que están estrechamente vinculados con el formato propietario H264. –

Respuesta

10

He experimentado un poco con la reproducción de video en todos los navegadores. La mejor manera de hacerlo es configurar una etiqueta de video html5 con flash alternativo. Esto realmente no requiere ningún javascript para funcionar. Este sitio: http://camendesign.com/code/video_for_everybody brinda una gran explicación sobre cómo hacer esto.

vas a querer montar algo que, básicamente, tiene el siguiente aspecto:

<video width="640" height="360" controls> 
    <!-- MP4 must be first for iPad! --> 
    <source src="__VIDEO__.MP4" type="video/mp4" /><!-- Safari/iOS video --> 
    <source src="__VIDEO__.OGV" type="video/ogg" /><!-- Firefox/Opera/Chrome10 --> 
    <!-- fallback to Flash: --> 
    <object width="640" height="360" type="application/x-shockwave-flash" data="__FLASH__.SWF"> 
     <!-- Firefox uses the `data` attribute above, IE/Safari uses the param below --> 
     <param name="movie" value="__FLASH__.SWF" /> 
     <param name="flashvars" value="controlbar=over&amp;image=__POSTER__.JPG&amp;file=__VIDEO__.MP4" /> 
     <!-- fallback image. note the title field below, put the title of the video there --> 
     <img src="__VIDEO__.JPG" width="640" height="360" alt="__TITLE__" 
      title="No video playback capabilities, please download the video below" /> 
    </object> 
</video> 

La etiqueta de vídeo HTML5 es una etiqueta que se puede utilizar para mostrar los archivos de vídeo en los navegadores modernos. Sin embargo, va a necesitar varios formatos diferentes para mostrarlo correctamente en cada uno. Por ejemplo, Firefox solo toma los formatos webm y ogg, mientras que Safari solo toma los formatos h264 y mp4. Aquí hay un gran artículo sobre esto: http://diveintohtml5.ep.io/video.html. Puede encontrar un software simple de conversión que puede descargar para convertir sus videos en todos estos formatos aquí: http://www.mirovideoconverter.com/. Otros navegadores (especialmente IE) no toman la etiqueta de video html5, por lo que debe incluir un formato flash que se volverá a activar automáticamente si no sabe qué hacer con la etiqueta de video.

Al final, tendrá que crear al menos 3-4 formatos diferentes de su archivo de video para que funcione en todos los navegadores y plataformas (iOS móvil) debido a la falta de estándares compatibles. También es importante asegurarse de que su servidor esté utilizando los tipos de mime correctos para estos formatos. Apesta, pero por ahora es la única forma.

3

La mejor solución hasta el momento:

http://www.videojs.com/

cómo poner en práctica:

cabeza:

<link href="http://vjs.zencdn.net/c/video-js.css" rel="stylesheet"> 
<script src="http://vjs.zencdn.net/c/video.js"></script> 

cuerpo:

<div class="vid"> 
    <video id="vid01" class="video-js vjs-default-skin" controls="controls" preload="none" width="640px" height="264px" 
     poster="../../Content/YourInitialPicture.jpg"> 
     <source src="../../Content/YourVideo.mp4" type='video/mp4'/> <!-- IE/Safari --> 
     <source src="../../Content/YourVideo.webm" type='video/webm'/> <!-- Mozilla FF --> 
     <source src="../../Content/YourVideo.ogg" type='video/ogg'/> <!-- Chrome/Opera --> 
     <track kind="captions" src="../../Content/YourVideoCaption.vtt" srclang="en" label="English" /> 
    </video> 
    <script> 
     var myPlayer = _V_("vid01"); 
    </script> 
</div> 

Copiar/Pegar por encima de código a su <body></body> y agregue el camino de su vídeo a src="../../"

  • .mp4 (Safari e IE pueden jugar este tipo de vids)
  • .webm (Mozilla puede jugar a este tipo de vids)
  • .OGG (Theora vídeo)

puede utilizar estos conventers gratuitas para sus vídeos.

simple como esto!

+0

Buena solución. Además, el primer conversor de video sugerido es muy bueno. – Alex

0

Lo que funcionó para mí: he subido el video a YouTube, luego lo descargué como MP4 y parece funcionar en todos los navegadores con la etiqueta video.

+0

Puede usar ffmpeg si solo desea convertirlo a mp4. – Octopus

0

He estado investigando esto por bastante tiempo y estoy tratando de hacer lo mismo, así que espero que esto ayude a alguien más. He estado usando crossbrowsertesting.com y lo estoy probando literalmente en casi todos los navegadores conocidos por el hombre. La solución que tengo actualmente funciona en Opera, Chrome, Firefox 3.5+, IE8 +, iPhone 3GS, iPhone 4, iPhone 4s, iPhone 5, iPhone 5s, iPad 1+, Android 2.3+, Windows Phone 8.

Fuentes cambia dinámicamente

que cambia dinámicamente el video es muy difícil, y con un flash repliegue tendrá que eliminar el vídeo de la DOM/página y volver a añadir para que flash actualizar ya que flash no reconocerá dinámico actualizaciones a Flash vars. Si va a usar JavaScript para cambiarlo dinámicamente, eliminaría completamente todos los elementos <source> y simplemente use canPlayType para configurar el src en JavaScript y break o return después del primer tipo de video compatible y no olvide actualizar dinámicamente el flash var mp4. Además, algunos navegadores no registrarán que usted cambió la fuente a menos que llame al video.load(). Creo que el problema con .load() que estaba experimentando se puede solucionar llamando primero al video.pause(). Eliminar y agregar elementos de video puede ralentizar el navegador porque continúa almacenando en búfer el video eliminado, pero there's a workaround.

Cross-browser apoyo

En cuanto a la parte real entre navegadores, llegué a Video For Everybody también. Ya probé el plugin MediaelementJS Wordpress, que resultó causar muchos más problemas de los que resolvió. Sospecho que los problemas se debieron al complemento de Wordpress y no a la biblioteca en realidad. Estoy intentando encontrar algo que funcione sin JavaScript, si es posible. Hasta ahora, lo que he llegado con esta es la versión HTML:

<video width="300" height="150" controls="controls" poster="http://sandbox.thewikies.com/vfe-generator/images/big-buck-bunny_poster.jpg" class="responsive"> 
<source src="http://clips.vorwaerts-gmbh.de/big_buck_bunny.ogv" type="video/ogg" /> 
<source src="http://clips.vorwaerts-gmbh.de/big_buck_bunny.mp4" type="video/mp4" /> 
<source src="http://clips.vorwaerts-gmbh.de/big_buck_bunny.webm" type="video/webm" /> 
<source src="http://alex-watson.net/wp-content/uploads/2014/07/big_buck_bunny.iphone.mp4" type="video/mp4" /> 
<source src="http://alex-watson.net/wp-content/uploads/2014/07/big_buck_bunny.iphone3g.mp4" type="video/mp4" /> 
<object type="application/x-shockwave-flash" data="http://releases.flowplayer.org/swf/flowplayer-3.2.1.swf" width="561" height="297"> 
    <param name="movie" value="http://releases.flowplayer.org/swf/flowplayer-3.2.1.swf" /> 
    <param name="allowFullScreen" value="true" /> 
    <param name="wmode" value="transparent" /> 
    <param name="flashVars" value="config={'playlist':['http://sandbox.thewikies.com/vfe-generator/images/big-buck-bunny_poster.jpg',{'url':'http://clips.vorwaerts-gmbh.de/big_buck_bunny.mp4','autoPlay':false}]}" /> 
    <img alt="No Video" src="http://sandbox.thewikies.com/vfe-generator/images/big-buck-bunny_poster.jpg" width="561" height="297" title="No video playback capabilities, please download the video below" /> 
</object> 
<strong>Download video:</strong> <a href="video.mp4">MP4 format</a> | <a href="video.ogv">Ogg format</a> | <a href="video.webm">WebM format</a> 
</video> 

Notas importantes:

  • acabó poniendo el ogg como el primer <source> porque Mac OS Firefox deja de tratar de jugar el video si encuentra un MP4 como el primer <source>.
  • Los tipos MIME correctos son importantes .ogv archivos deben ser video/ogg, novideo/ogv
  • Si tiene vídeo de alta definición, la mejor transcodificador que he encontrado para OGG calidad HD es Firefogg
  • .iphone.mp4 El archivo es para el iPhone 4+ que será única reproducir videos MPEG-4 con video H.264 Baseline 3 y audio AAC. El mejor transcodificador que encontré para ese formato es Handbrake, usando el iPhone & El iPod Touch preajustado funcionará en el iPhone 4+, pero para que el iPhone 3GS funcione debe usar el iPod preajuste que tiene una resolución mucho menor que yo agregado como video.iphone3g.mp4.
  • En el futuro podremos usar un atributo media en los elementos <source> para orientar los dispositivos móviles con consultas de medios, pero ahora los dispositivos Apple y Android anteriores no lo admiten lo suficientemente bien.
Cuestiones relacionadas