`

html5结合flash实现视频文件在所有主流浏览器兼容播放

阅读更多

摘抄自:http://blog.csdn.net/freshlover/article/details/7535785

 

由于html5的出现,让网页中的视频、音频有了更加便捷的实现方式。但是video、audio标签只在IE 9+、Safari 3+、FireFox 4+、Opera 10+、Chrome 3+的浏览器版本得到了支持,并且各浏览器对于视频编码格式的支持不一致,这就需要我们考虑一个综合的实现方案,使得视频在不同浏览器中都能顺利播放,而且在老版本的浏览器中也能得到支持。

以下是结合项目经验,总结出的几种方案,与大家分享。

方案1、使用VideoJS插件实现兼容 插件下载http://videojs.com

使用新版VideoJS插件需要注意的是其使用方法:

使用步骤一:head部分添加

 

[html] view plaincopy
  1. <link href="http://vjs.zencdn.net/c/video-js.css" rel="stylesheet">  
  2. <script src="http://vjs.zencdn.net/c/video.js"></script>  


说明:上述javascript代码进适用于支持html5元素的IE版本,对于老版本的IE可以通过HTML5shiv来使不支持HTML5的浏览器支持HTML新标签。htnl5shiv主要解决HTML5提出的新的元素不被IE6/IE7/IE8识别,这些新元素不能作为父节点包裹子元素,且不能应用CSS样式。让CSS 样式应用在未知元素只需执行 document.createElement(elementName) 即可实现。html5shiv的工作原理也就是基于此。html5shiv的使用很简单,由于IE9是支持html5的,故只需要在head中添加如下代码即可:

 

[html] view plaincopy
  1. <!–[if lt IE 9]>   
  2.     <script type="text/javascript" src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>   
  3. <![endif]–>  

 

使用步骤二:body显示视频部分添加

 

[html] view plaincopy
  1. <video id="my_video_1" class="video-js vjs-default-skin" controls preload="auto" width="275" height="200" poster="http://www.feiliu.com/zt/img/20120417/preview.jpg" data-setup="{}">  
  2.     <source src="http://www.feiliu.com/zt/video/mv00.mp4" type='video/mp4'/>  
  3.     <source src="http://www.feiliu.com/zt/video/test2.webm" type='video/webm'/>  
  4. </video>  


说明:这里的webm格式是针对FF浏览器的播放格式。

 

目前VideoJS最新升级的版本v3.2.0,本人已测试的V3.0以上都不支持IE6/IE7/IE8/,因此我们这里采用老版本v2.0.2实现。
例如文章《VideoJs Version 3 doesn't work on IE7 / IE8》 的相关说明请查看帮助文档http://help.videojs.com/
使用方法是:

步骤一:在页面head部分添加如下代码:

[html] view plaincopy
  1. <link rel="stylesheet" href="css/video-js.css" type="text/css"/>  
  2. <script type="text/javascript" src="js/video.js"></script>  
  3. <script type="text/javascript">  
  4. // Must come after the video.js library  
  5.   
  6. // Add VideoJS to all video tags on the page when the DOM is ready  
  7. VideoJS.setupAllWhenReady();//可选。不写此函数默认为显示播放控制条,鼠标移开隐藏  
  8.   
  9. /* ============= OR ============ */  
  10.   
  11. // Setup and store a reference to the player(s).  
  12. // Must happen after the DOM is loaded  
  13. // You can use any library's DOM Ready method instead of VideoJS.DOMReady  
  14.   
  15. /*  
  16. VideoJS.DOMReady(function(){  
  17.     
  18.   // Using the video's ID or element  
  19.   var myPlayer = VideoJS.setup("example_video_1");  
  20.     
  21.   // OR using an array of video elements/IDs  
  22.   // Note: It returns an array of players  
  23.   var myManyPlayers = VideoJS.setup(["example_video_1", "example_video_2", video3Element]);  
  24.   
  25.   // OR all videos on the page  
  26.   var myManyPlayers = VideoJS.setup("All");  
  27.   
  28.   // After you have references to your players you can...(example)  
  29.   myPlayer.play(); // Starts playing the video for this player.  
  30. });  
  31. */  
  32.   
  33. /* ========= SETTING OPTIONS ========= */  
  34.   
  35. // Set options when setting up the videos. The defaults are shown here.  
  36.   
  37. /*  
  38. VideoJS.setupAllWhenReady({  
  39.   controlsBelow: false, // Display control bar below video instead of in front of  
  40.   controlsHiding: true, // Hide controls when mouse is not over the video  
  41.   defaultVolume: 0.85, // Will be overridden by user's last volume if available  
  42.   flashVersion: 9, // Required flash version for fallback  
  43.   linksHiding: true // Hide download links when video is supported  
  44. });  
  45. */  
  46.   
  47. // Or as the second option of VideoJS.setup  
  48.   
  49. /*  
  50. VideoJS.DOMReady(function(){  
  51.   var myPlayer = VideoJS.setup("example_video_1", {  
  52.     // Same options  
  53.   });  
  54. });  
  55. */  
  56. </script>  

步骤二:在body显示视频位置添加如下代码:

[html] view plaincopy
  1. <div class="vd">  
  2.     <!-- Begin VideoJS -->      
  3.     <div class="video-js-box">  
  4.     <video id="example_video_1" class="video-js" width="280" height="210" controls preload="none" poster="http://www.feiliu.com/zt/img/20120417/img01.jpg">  
  5.         <source src="http://www.feiliu.com/zt/video/mv01.mp4" type='video/mp4;' />  
  6.         <source src="http://www.feiliu.com/zt/video/test2.webm" type='video/webm'/>  
  7.         <object id="flash_fallback_1" class="vjs-flash-fallback" width="280" height="210" type="application/x-shockwave-flash" data="http://www.feiliu.com/zt/flash/flowplayer-3.2.1.swf">  
  8.         <param name="movie" value="http://www.feiliu.com/zt/flash/flowplayer-3.2.1.swf" />  
  9.         <param name="allowfullscreen" value="true" />  
  10.         <param name="flashvars" value='config={"playlist":["http://www.feiliu.com/zt/img/20120417/img01.jpg", {"url": "http://www.feiliu.com/zt/video/mv01.flv","autoPlay":false,"autoBuffering":true}]}' />  
  11.         <img src="http://www.feiliu.com/zt/img/20120417/img01.jpg" width="280" height="210" alt="Poster Image"  title="No video playback capabilities." />  
  12.       </object>  
  13.     </video>  
  14.     </div>  
  15.     <!-- End VideoJS -->  
  16. </div>  




说明:这段视频代码外层以一个class=“vd”的div分隔区别。这样,支持html5的浏览器,会逐个检测提供的视频编码格式,直到找到可以播放的格式为止,如果所有格式都不能播放,则尝试使用flowplayer这个flash播放器(支持上述mp4格式)对视频进行解码。对于不支持html5的浏览器,也使用flash播放。因此,使用该方案只需要提供一个mp4格式的视频即可实现在所有浏览器上播放,不过flash播放器对mp4格式的文件解码较慢,为了照顾用户体验,故而上述我们又增加了一种flv格式的选择。

这个方法有一缺点:算上页面上的其他js效果,由于使用了大量的js,视频检测机制占用了很大的系统资源,而且我的项目页面上有11个视频之多,造成了页面加载慢,降低了用户体验。出于此,第二套方案诞生。

方案2、由于目前大多数设备的浏览器对flash支持的很好,所以考虑页面一还是使用object/embed传统标签嵌入视频,用Adobe Flash Player播放。而对于不支持flash的苹果设备,制作另一个页面二。然后根据通过js程序对User-Agent的判断给不同的设备浏览器用户显示不同的页面,优酷网曾采用这种模式。

页面一flash传统标签的代码:

[html] view plaincopy
  1. <div class="vd">  
  2.     <object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0" width="280" height="210">  
  3.         <param name="movie" value="http://static.youku.com/v/swf/qplayer.swf?winType=adshow&VideoIDS=XMzg2NzQ2OTU2&isAutoPlay=false&isShowRelatedVideo=false" />  
  4.         <param name="quality" value="high" />  
  5.         <param name="bgcolor" value="#ffffff" />  
  6.         <param name="play" value="true" />  
  7.         <param name="loop" value="true" />  
  8.         <param name="wmode" value="transparent" />  
  9.         <param name="scale" value="showall" />  
  10.         <param name="menu" value="true" />  
  11.         <param value="true" name="allowfullscreen" />  
  12.         <param name="devicefont" value="false" />  
  13.         <param name="salign" value="" />  
  14.         <param name="allowScriptAccess" value="sameDomain" />  
  15.         <param name="flashvars" value="isShowRelatedVideo=false&showAd=0&show_pre=1&show_next=1&isAutoPlay=false&isDebug=false&UserID=&winType=interior&playMovie=true&MMControl=false&MMout=false&RecordCode=1001,1002,1003,1004,1005,1006,2001,3001,3002,3003,3004,3005,3007,3008,9999"/>              
  16.         <embed height="210" align="middle" width="280" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" name="aprilfools" flashvars="isShowRelatedVideo=false&showAd=0&show_pre=1&show_next=1&isAutoPlay=false&isDebug=false&UserID=&winType=interior&playMovie=true&MMControl=false&MMout=false&RecordCode=1001,1002,1003,1004,1005,1006,2001,3001,3002,3003,3004,3005,3007,3008,9999" src="http://static.youku.com/v/swf/qplayer.swf?winType=adshow&VideoIDS=XMzg2NzQ2OTU2&isAutoPlay=false&isShowRelatedVideo=false"  menu="true" play="true" allowfullscreen="true" allowscriptaccess="sameDomain" quality="high" wmode="transparent" bgcolor="#fff" ver="10.0.0"></embed>  
  17.     </object>       
  18. </div>  


说明:这里使用的优酷的视频迷你播放器,减小了播放控制条的显示大小,比优酷普通播放器的画面大一些,用户体验好一些。

页面二针对mac设备代码:

 

[html] view plaincopy
  1. <video id="my_video_1" class="video-js vjs-default-skin" controls preload="auto" width="280" height="210" poster="http://www.feiliu.com/zt/img/20120417/preview.jpg" data-setup="{}">  
  2.     <source src="http://www.feiliu.com/zt/video/mv01.mp4" type='video/mp4'/>  
  3. </video>  


说明:mac设备的Safari浏览器支持mp4格式,如果视频文件放在自己服务器,使用上述mp4格式的视频链接即可;也可以使用优酷的链接,优酷提供自动转码到iOS支持格式这一机制。例如优酷视频地址为http://player.youku.com/player.php/sid/XMzkwNzY2NTEy/v.swf,其iOS设备格式地址只需要改为http://v.youku.com/player/getRealM3U8/vid/XMzkwNzY2NTEy/type//video.m3u8 。

 

相关文章请考考《分析优酷HTML5地址》地址http://blog.xiaohai.co/archives/youku-html5/

统一采用优酷地址的好处是保证了两个页面的一致性,又减轻自己服务器压力,而且可以与优酷合作更好的营销。

页面访问的设备检测代码如下:

 

[javascript] view plaincopy
  1. <script type="text/javascript">  
  2.     if ((/iPhone|iPad|iPod/i).test(navigator.userAgent) || (/Mac68K|MacPPC|Macintosh|MacIntel/i).test(navigator.platform)){  
  3.          window.location.href = "####page2.html"  
  4.     }  
  5. </script>   


补充:安卓系统从Android 2.1版本就开始部分支持flash,可下载安装flash插件播放视频。Adobe Flash Player 10.1.92.8已经支持所有android 2.2智能手机。目前主流的安卓智能机系统都在版本2.3以上,android4.0已大行其道。因此无须对安卓设备采用单独的视频处理方案,安卓系统和windows系统采用同样的方案,使用flash播放器即可实现。

 

 

html5media是一个让video、audio标签在旧版IE中全面兼容的JavaScript类库,它不依赖于任何JavaScript框架。页面使用了html5media之后,当老版本的浏览器不支持HTML5时,它将会自动切换成Flash模式的flowplayer播放器尝试播放。。

使用html5media的方法:

1、首先在页面head部分加入如下脚本
<script src="http://api.html5media.info/1.1.4/html5media.min.js"></script>
你可以通过使用IE条件注释的方法,只在旧版IE浏览器中加载这条JS脚本。
2、然后在body部分使用audio或video标签,添加音频视频相关代码。
<!-- 视频媒体标签 -->
<video src="http://www.feiliu.com/zt/video/mv02.mp4" width="480" height="320" controls preload></video>
<!-- 音频媒体标签 -->
<audio src="http://www.feiliu.com/zt/audio/test.mp3" controls loop></audio>
这样你便可以在IE6-IE8浏览器中使用audio和video标签了。
                                                                       by:清枫    2012-05-04 青年节

分享到:
评论

相关推荐

    基于flash的.FLV格式网页视频播放器,可全屏播放和静音,兼容主流浏览器

    本文将深入探讨基于Flash的.FLV格式网页视频播放器,它如何实现全屏播放、静音功能,以及如何确保与主流浏览器的兼容性。 .FLV(Flash Video)是Adobe Flash平台支持的一种流媒体文件格式,特别设计用于网络传输。...

    能够兼容IE8以下浏览器的H5 Video标签播放插件,测试可用

    这通常意味着除了`html5media.min.js`之外,还可能存在其他辅助文件,如Flash的SWF文件或者是处理不同浏览器兼容性的额外JavaScript代码。在实际应用中,开发者需要确保所有必要的资源都已本地化,以便在没有网络...

    浏览器播放视频测试

    1. **浏览器兼容性**:测试在各种浏览器(如IE、Chrome、Firefox、Safari、Edge等)上的播放效果,确保在所有目标平台上都能正常工作。 2. **视频编码和格式**:确认不同浏览器支持的视频编码(如H.264、VP9)和容器...

    跨浏览器兼容的HTML5视频音频播放器

    然而,由于不同浏览器对HTML5标准的支持程度不同,实现跨浏览器兼容的视频音频播放功能仍存在挑战。"跨浏览器兼容的HTML5视频音频播放器"正是为了解决这个问题而设计的。 首先,让我们了解一下HTML5的`&lt;video&gt;`和`...

    html5(h5)播放mp3全浏览器兼容

    在本文中,我们将深入探讨如何利用HTML5的`&lt;audio&gt;`标签实现MP3音频在全浏览器下的兼容播放,包括主流桌面浏览器、微信内置浏览器以及移动端浏览器。 一、HTML5 `&lt;audio&gt;` 标签 HTML5中的`&lt;audio&gt;`标签是用于嵌入...

    图片上传预览(兼容所有主流浏览器)

    本技术讨论主要围绕“图片上传预览(兼容所有主流浏览器)”这一主题展开,我们将深入探讨如何利用JavaScript实现这一功能,并确保其在各种主流浏览器中运行良好。 首先,我们来理解一下“图片上传预览”的概念。当...

    HTML5 MSE.Media Source Extensions (MSE) 是一个主流浏览器支持的新的 Web API

    在实际应用中,像B站这样的平台利用开源项目flv.js实现了HTML5播放FLV格式的视频,FLV是一种常见的流媒体格式,通过MSE和JavaScript的解析,能够在不依赖Flash的情况下在HTML5环境中流畅播放。这种方法不仅提高了...

    HTML嵌套Flash播放视频插件及源码.zip

    2. **HTML5 Video vs Flash**: 在HTML5出现之前,Flash是网页视频播放的主流解决方案。然而,由于HTML5对现代浏览器的广泛支持和移动设备的普及,HTML5 Video元素逐渐成为推荐的视频播放方式。HTML5 Video具有更好的...

    网页 video-js-html5视频播放器源码兼容所有浏览器例子DEMO完美

    1. **跨浏览器兼容性**:`video-js`通过JavaScript和CSS实现,它可以自动检测浏览器对HTML5视频的支持情况,并根据需要提供Flash回退,确保在不支持HTML5的浏览器中也能正常播放视频。 2. **丰富的自定义选项**:`...

    一款免费、开源的多媒体播放器,以HTML5技术为平台开发,同时兼容flash技术,实现了跨平台的视频播放.zip

    标题中的“一款免费、开源的多媒体播放器,以HTML5技术为平台开发,同时兼容flash技术,实现了跨平台的视频播放”揭示了该软件的主要特点。这个播放器是一款基于HTML5技术构建的多媒体解决方案,旨在提供一个免费且...

    FLV格式网页视频播放器,可全屏播放和静音,兼容主流浏览器

    1. **HTML5 Video元素**:虽然FLV格式主要依赖Flash Player,但随着HTML5的普及,很多现代浏览器已经支持直接播放FLV文件,通过Video元素配合合适的解码库,如FFmpeg.js,可以实现FLV视频的原生播放。 2. **...

    springboot+webuploader 实现大文件切片上传,兼容IE8+,chrome等浏览器,可运行

    在本文中,我们将深入探讨如何使用SpringBoot与WebUploader实现大文件的切片上传功能,同时确保兼容性,包括对IE8+及Chrome等主流浏览器的支持。这一技术方案对于处理大容量文件上传,提高用户体验,以及优化服务器...

    jquery实现选择图片预览,兼容各大主流浏览器

    本文将详细介绍如何使用jQuery实现一个兼容各大主流浏览器(如谷歌、IE、360浏览器、火狐等)的图片预览功能。 ### 1. jQuery简介 jQuery是一个快速、简洁的JavaScript库,它简化了HTML文档遍历、事件处理、动画...

    浏览器中嵌入flv播放例子(支持所有的浏览器)

    在互联网内容分发领域,FLV(Flash Video)格式曾是一种广泛应用的视频格式,尤其在浏览器中的在线视频播放。本文将详细介绍如何在浏览器中嵌入FLV播放器,并且这个方法适用于所有类型的浏览器。 首先,我们需要...

    两种html5图片展示效果,动画效果流畅,兼容主流浏览器

    为了确保在主流浏览器中的兼容性,我们需要使用HTML5的特性检测库,如Modernizr,来判断浏览器是否支持特定的功能。对于不支持HTML5新特性的老式浏览器,我们可以提供回退方案,比如使用JavaScript库如jQuery的插件...

    多浏览器兼容性比较好的flash对联广告.zip

    然而,随着HTML5的崛起和浏览器对Flash支持的逐渐淘汰,使用Flash技术来实现多浏览器兼容的对联广告已经变得不再推荐。尽管如此,理解Flash对联广告在历史上的应用和它如何实现跨浏览器兼容性仍然有价值。 "多...

    猿大师中间件:主流浏览器兼容Office、WPS、Flash Player、AutoCAD、VLC播放器等

    此外,猿大师中间件还支持多媒体播放器VLC,这使得用户可以在网页上直接播放各种格式的视频,无需担心兼容性问题。同时,它还能与硬件设备如打印机、摄像头、读卡器和U盘无缝对接,让网页应用能够调用这些硬件资源,...

    上传文件前,本地预览图片功能,支持所有主流浏览器

    在本主题中,我们将深入探讨如何实现"上传文件前,本地预览图片功能,支持所有主流浏览器"。 首先,我们需要了解这个功能的核心技术——HTML5的File API。File API提供了在浏览器中读取、操作和处理文件的能力,这...

    JS播放声音 兼容所有浏览器

    要实现JS播放声音并且兼容所有主流浏览器,我们需要了解一些关键的技术和策略。以下是一些核心知识点: 1. **Audio API**: HTML5引入了`Audio`对象,这是JavaScript播放声音的基础。它允许开发者创建一个音频实例,...

    FLASH制作视频合成播放

    3. **视频合成**:在Flash中,视频合成是指将视频与其他元素(如图形、按钮、动画)结合在一起。这可以通过在时间轴上叠加图层实现。通过调整各个图层的透明度、位置和播放顺序,可以创建出丰富的视觉效果。 4. **...

Global site tag (gtag.js) - Google Analytics