如何检测浏览器播放器是否可以处理视频格式

时间:2013-08-27 08:01:07

标签: javascript firefox html5-video mp4

我尝试使用HTML5播放器在浏览器中播放.mp4视频。

但是,Firefox并不处理.mp4视频格式。所以在这种情况下,我想切换到可以完成这项工作的Flash播放器。

而不是使用以下JavaScript代码,这被称为不可靠:

<!-- language: lang-js -->

if(navigator.userAgent.toLowerCase().indexOf('firefox') > -1)
{
     //Do Firefox-related activities
}

有没有办法识别HTML5播放器并知道它是否可以处理.mp4视频格式?

2 个答案:

答案 0 :(得分:4)

您可以使用HTML5提供多种格式和/或替代方案。每个浏览器都会选择更合适的浏览器:

<video width="1280" height="720" controls="controls">
   <source src="video/movie.ogg" type="video/ogg" />
   <source src="video/movie.webm" type="video/webm" />
   <source src="video/movie.mp4" type="video/mp4" />
   <!-- none of the formats supported -> provide flash -->
   <!-- YOUR EMBED FLASH PLAYER --> 
</video>

当然,这应该有效。我使用了Youtube Flash版本。您只需设置自己的Flash对象版本:

<video width="1280" height="720" controls="controls">
   <source src="video/movie.ogg" type="video/ogg" />
   <source src="video/movie.webm" type="video/webm" />
   <source src="video/movie.mp4" type="video/mp4" />
   <!-- none of the formats supported -> provide flash -->
   <object width="420" height="315">
       <param name="movie" value="//www.youtube.com/v/z82D_dBAA8Y?hl=es_ES&amp;version=3"></param>
       <param name="allowFullScreen" value="true"></param>
       <param name="allowscriptaccess" value="always"></param>
       <embed src="//www.youtube.com/v/z82D_dBAA8Y?hl=es_ES&amp;version=3" type="application/x-shockwave-flash" width="420" height="315" allowscriptaccess="always" allowfullscreen="true"></embed>
   </object>
</video>

答案 1 :(得分:3)

谢谢@Skymt。

  

我找不到返回可播放格式的方法。但是这个链接   可能会帮助您提供更好的后备(在后备下检查   选项):   https://developer.mozilla.org/en-US/docs/Web/HTML/Using_HTML5_audio_and_video#Showing_fallback_content_when_no_source_could_be_decoded


我正在使用videojs这是我的javascript代码:

videojs("videoViewer", {playerFallbackOrder: ["html5", "flash", "links"]}, function(){});
var v = document.querySelector('video');
source = v.querySelector('source');
source.addEventListener('error', function(ev)
{
    videojs("videoViewer", {playerFallbackOrder: ["flash", "html5", "links"]}, function(){});
}, false);

它与你在链接上找到的例子非常相似,唯一的区别是我只有1个来源,我使用的是videojs

那么当我尝试在firefox中播放.mp4时会发生什么?

  1. 我实例化videojs
  2. 提供的html5视频播放器
  3. html5视频播放器会显示错误消息,说明无法读取此视频格式并触发错误事件
  4. 上面的代码将捕获错误事件
  5. 然后我使用videojs更改其后备顺序选项,以实例化Flash播放器。
  6. 仅在Firefox中有效吗?

    不,这适用于所有浏览器,即使是那些没有html5视频播放器的浏览器,因为videojs会自动回退到Flash版本。

    仅适用于mp4吗?

    不,无论视频格式如何,只要html5视频播放器触发错误,这都会有效。