HTML5视频 - 如果文件不存在,则还原为SWF回退 [英] HTML5 video - if files do not exist, revert to SWF fall back
问题描述
我正在使用下面的代码,并希望对这种方法提供一些建议。我们正在优化我们的iPad,平板电脑,Mac,iPhone和Android等移动网站。
我决定最好的方法是先做HTML5,如果HTML5不行存在然后回落到Flash。但是它不能正常工作。例如,如果所有HTML5视频都不存在,则会显示MIME错误,并且不会回退到Flash?
< video width =294height =530loop =preload =falseautoplay =id =GCFlashAltcontrols =controlstabindex =0>
< source type =video / webmsrc =http://cdn.com/718_blacklep/718_blacklep.webm>< / source>
< source type =video / oggsrc =http://cdn.com/718_blacklep/718_blacklep.ogv>< / source>
< source type =video / mp4src =http://cdn.com/718_blacklep/718_blacklep.mp4>< / source>
< param value =http://cdn.com/718_blacklep/718_blacklep.swfname =movie>
< param value =bestname =quality>
< param value =#ffffffname =bgcolor>
< param value =truename =play>
< param value =truename =loop>
< param value =transparentname =wmode>
< param value =showallname =scale>
< param value =truename =menu>
< param value =falsename =devicefont>
< param value =name =salign>
< param value =sameDomainname =allowScriptAccess>
<! - [if!IE]> - >
< param value =http://cdn.com/718_blacklep/718_blacklep.swfname =movie>
< param value =bestname =quality>
< param value =#ffffffname =bgcolor>
< param value =truename =play>
< param value =truename =loop>
< param value =transparentname =wmode>
< param value =showallname =scale>
< param value =truename =menu>
< param value =falsename =devicefont>
< param value =name =salign>
< param value =sameDomainname =allowScriptAccess>
<! - <![endif] - >
<! - [if!IE]> - >
< / object>
<! - <![endif] - >
< / object>
< / video>
这是我们解决的问题。跨浏览器和跨设备兼容。
我们不想使用外部库,虽然mediaelementsjs和其他人是不错的选择,这是我们最好的解决方案。
$ b $ 1 - 检查用户是否有Flash,如果他们这样做,播放SWF版本的视频
2 - 如果用户没有Flash,请检查他们是否启用了HTML5。
$ b $ 3如果他们有HTML5,首先播放mp4(必须支持浏览器播放)
4 - 如果他们有HTML5,但在Firefox或手机上,例如播放 .ogv
5 - 最后播放webm失败以上全部
6 - 如果它们没有这些功能,我们只包含一个空格。这触发站点上的视频播放按钮,根本不显示视频功能。
没有PHP,一个jQuery jQuery,剩下的就是有效的HTML5。这是我们发现的最好的解决方案,因为它适用于包括iPad在内的所有设备。我们还有一个 IF IF CONDITIONAL
用于旧版Internet Explorer的缺点 - 这对IE播放也是有帮助的。
结果我们看到的是非常好的,这个文件适用于我们用于人口统计的每个客户设备和浏览器。我们使用GetClicky,他们有一个API,添加< video title =视频名称
使HTML5和SWF播放可跟踪。
< div class =videobox showorhideid =videoisonbox>
< param value =http://cdn.com/718_blacklep/718_blacklep.swfname =movie>
< param value =bestname =quality>
< param value =#ffffffname =bgcolor>
< param value =truename =play>
< param value =truename =loop>
< param value =transparentname =wmode>
< param value =showallname =scale>
< param value =truename =menu>
< param value =falsename =devicefont>
< param value =name =salign>
< param value =sameDomainname =allowScriptAccess>
<! - [if!IE]> - >
< param value =http://cdn.com/718_blacklep/718_blacklep.swfname =movie>
< param value =bestname =quality>
< param value =#ffffffname =bgcolor>
< param value =truename =play>
< param value =truename =loop>
< param value =transparentname =wmode>
< param value =showallname =scale>
< param value =truename =menu>
< param value =falsename =devicefont>
< param value =name =salign>
< param value =sameDomainname =allowScriptAccess>
<! - <![endif] - >
< source type =video / mp4src =http://cdn.com/718_blacklep/718_blacklep.mp4>< / source>
< source type =video / oggsrc =http://cdn.com/718_blacklep/718_blacklep.ogv>< / source>
< source type =video / webmsrc =http://cdn.com/718_blacklep/718_blacklep.webm>< / source>
< / video>
< div class =blankclass =enabled disable detectid =isvideooncheck><! - jQuery Update for disable video - >< / div>
<! - [if!IE]> - >
< / object>
<! - <![endif] - >
< / object>
< / div>
I am using the following code and wanted some advice on this approach. We are optimizing our site for iPad, tablet, mac, iPhone and mobile such as Android.
I decided that the best approach is to do HTML5 first, if HTML5 does not exist then fall back to Flash. However it won't work properly. For example, if all the HTML5 videos do not exist it shows the mime error and not fall back to Flash?
<video width="294" height="530" loop="" preload="false" autoplay="" id="GCFlashAlt" controls="controls" tabindex="0">
<source type="video/webm" src="http://cdn.com/718_blacklep/718_blacklep.webm"></source>
<source type="video/ogg" src="http://cdn.com/718_blacklep/718_blacklep.ogv"></source>
<source type="video/mp4" src="http://cdn.com/718_blacklep/718_blacklep.mp4"></source>
<object width="294" height="530" align="middle" id="product2a" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000">
<param value="http://cdn.com/718_blacklep/718_blacklep.swf" name="movie">
<param value="best" name="quality">
<param value="#ffffff" name="bgcolor">
<param value="true" name="play">
<param value="true" name="loop">
<param value="transparent" name="wmode">
<param value="showall" name="scale">
<param value="true" name="menu">
<param value="false" name="devicefont">
<param value="" name="salign">
<param value="sameDomain" name="allowScriptAccess">
<!--[if !IE]>-->
<object width="294" height="530" data="http://cdn.com/718_blacklep/718_blacklep.swf" type="application/x-shockwave-flash">
<param value="http://cdn.com/718_blacklep/718_blacklep.swf" name="movie">
<param value="best" name="quality">
<param value="#ffffff" name="bgcolor">
<param value="true" name="play">
<param value="true" name="loop">
<param value="transparent" name="wmode">
<param value="showall" name="scale">
<param value="true" name="menu">
<param value="false" name="devicefont">
<param value="" name="salign">
<param value="sameDomain" name="allowScriptAccess">
<!--<![endif]-->
<!--[if !IE]>-->
</object>
<!--<![endif]-->
</object>
</video>
This is the solution we have gone with. Cross browser and Cross device compliant.
We did not want to use an external library, although mediaelementsjs and the others out their are good alternatives, this is the best solution for us.
1 - Check the user has Flash, if they do, play the SWF version of the video
2 - If the user has no Flash, check if they have HTML5 enabled.
3 - If they have HTML5, play the mp4 first (must supported browser playback)
4 - If they have HTML5 but on Firefox or a phone, example play the .ogv
5 - Lastly play the webm failing all the above
6 - If they have none of these features, we simply include a blank div. This triggers the video play button on the site not to show the video feature at all.
No PHP, a litte jQuery and the rest is valid HTML5. This is the best solution we found as it works on all devices including the iPad. We also have an IF CONDITIONAL
for older Internet Explorer drawback - this too has helpled for IE playback.
The results we have seen are excellent, the file works on every customer device and browser we have for our demographic. We use GetClicky and they have an API, adding <video title="video name"
gives the HTML5 and SWF playback trackable.
<div class="videobox showorhide" id="videoisonbox">
<object width="294" height="530" align="middle" id="product2a" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000">
<param value="http://cdn.com/718_blacklep/718_blacklep.swf" name="movie">
<param value="best" name="quality">
<param value="#ffffff" name="bgcolor">
<param value="true" name="play">
<param value="true" name="loop">
<param value="transparent" name="wmode">
<param value="showall" name="scale">
<param value="true" name="menu">
<param value="false" name="devicefont">
<param value="" name="salign">
<param value="sameDomain" name="allowScriptAccess">
<!--[if !IE]>-->
<object width="294" height="530" data="http://cdn.com/718_blacklep/718_blacklep.swf" type="application/x-shockwave-flash">
<param value="http://cdn.com/718_blacklep/718_blacklep.swf" name="movie">
<param value="best" name="quality">
<param value="#ffffff" name="bgcolor">
<param value="true" name="play">
<param value="true" name="loop">
<param value="transparent" name="wmode">
<param value="showall" name="scale">
<param value="true" name="menu">
<param value="false" name="devicefont">
<param value="" name="salign">
<param value="sameDomain" name="allowScriptAccess">
<!--<![endif]-->
<video title="718 Black Lep Dress" width="294" height="530" loop preload="false" autoplay id="GCFlashAlt" controls tabindex="0">
<source type="video/mp4" src="http://cdn.com/718_blacklep/718_blacklep.mp4"></source>
<source type="video/ogg" src="http://cdn.com/718_blacklep/718_blacklep.ogv"></source>
<source type="video/webm" src="http://cdn.com/718_blacklep/718_blacklep.webm"></source>
</video>
<div class="blank" class="enabled disable detect" id="isvideooncheck"><!-- jQuery Update for disabling video --></div>
<!--[if !IE]>-->
</object>
<!--<![endif]-->
</object>
</div>
这篇关于HTML5视频 - 如果文件不存在,则还原为SWF回退的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!