Flex之HTML5视频播放解决方案
Flex的video类对于视频播放在ios操作系统下表现出不兼容,采用调用ios源生播放器的思路,那么怎么调呢?
话说Html5 和Flex是竞争关系,这次利用Html5的video标签实现ios播放视频,因为ios下safari浏览器解析Html5页面的video标签时自动调出源生播放器,相信聪明的你已经明白了
环境:Flex4.6
1:首先明白Flex要做的事情就是在Mobile项目中加载Html5页面
Flex封装一个用来加载Html5的容器 (HTML5Video.mxml)
<?xml version="1.0" encoding="utf-8"?>
<!--
VideoPlayer depend on HTML5
============================
Explain:this is a StageWebView object looad HTML5 with a VideoPlayer
Code by: yaoyf 2012-04-28
-->
<s:SkinnableContainer xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
backgroundColor="0xEEEEEE"
width = "100%"
height = "100%"
addedToStage="callLater(addedToStageHandler)"> <fx:Script>
<![CDATA[
import flash.utils.setTimeout; import mx.events.FlexEvent; /**this is a StageWebView**/
private var webView:StageWebView; /**the video's url**/
[Bindable]public var videourl:String; private var isShow:Boolean = true; private var rect:Rectangle; protected function addedToStageHandler():void
{
webView = new StageWebView();
webView.stage = this.stage;
webView.addEventListener(LocationChangeEvent.LOCATION_CHANGE,onLocationChange);
webView.addEventListener(Event.COMPLETE,onComplete);
webView.addEventListener(ErrorEvent.ERROR,onError);
webView.loadURL(videourl);
} protected function onComplete(event:Event):void
{
trace("onComplete : " + event);
} protected function onError(event:ErrorEvent):void
{
trace(event.text);
} protected function onLocationChange(event:Event):void
{
trace("url located : " + videourl);
if(isShow){
webView.viewPort = rect;
}
isShow = false;
} public function redrawRectangle(_x:Number , _y:Number , _width:Number , _height:Number):void
{
rect = null;
drawRectangle(_x , _y , _width , _height);
if(!webView)return;
webView.viewPort = rect;
} private function drawRectangle(_x:Number , _y:Number , _width:Number , _height:Number):void{
rect = new Rectangle( _x, _y, _width, _height);
} ]]>
</fx:Script>
<fx:Declarations>
</fx:Declarations>
</s:SkinnableContainer>
2:第一视图:传递视频url,监听屏幕转向事件并处理 (Sample_VideoView.mxml)
<?xml version="1.0" encoding="utf-8"?>
<s:View xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
title="Video" backgroundColor="0x030303"
xmlns:video="views.video.*" actionBarVisible="true"
addedToStage="callLater(addedToStageHandler)">
<fx:Declarations>
</fx:Declarations>
<fx:Script>
<![CDATA[
import mx.events.FlexEvent; import views.video.HTML5Video; [Bindable]public var vdoUrl:String = "http://10.4.6.117:8080/video/video.jsp?videourl=2.mp4"; private function onOrientationChange(event:StageOrientationEvent):void {
this.orientationChanged(event.afterOrientation);
} protected function addedToStageHandler():void
{
stage.addEventListener(StageOrientationEvent.ORIENTATION_CHANGE,onOrientationChange);
this.orientationChanged(stage.orientation);
} private function orientationChanged(orientation:String):void
{
html5_video.redrawRectangle(0, this.actionBarVisible == true ? 45 : 0,this.width,this.height);
} ]]>
</fx:Script>
<video:HTML5Video id="html5_video" videourl="{vdoUrl}" horizontalCenter="0" verticalCenter="0"/>
</s:View>
3:部署一个jsp页面到Tomcat
jsp页面代码:(video.jsp)
<!doctype html>
<head>
<meta charset=utf-8>
<title>HTML5 Video Player</title>
<style>
body{
margin-top:10%;
color:#EEEEEE;
}
</style>
</head>
<body id=home bgcolor="#030303">
<center>
<video id=home_video controls="controls" autoplay="autoplay" loop="loop" preload="auto" width=600 height=480>
<source src="<%=request.getParameter("videourl")%>" type="video/mp4; codecs='avc1.42E01E, mp4a.40.2'"/>
Your browser does not support the video tag.
</video>
</center>
</body>
</html>
部署:

我本机的请求地址:http://10.4.6.117:8080/video/video.jsp?videourl=2.mp4
先用支持Html5的浏览器测试(谷歌浏览器等)

最后,打包Flex项目到ios设备上(我这里用的ipad测试)
Flex之HTML5视频播放解决方案的更多相关文章
- html5视频播放解决方案
关键词:html5 nativeapp webapp mp4 H.264 html5没学习之前总觉的很神秘.近期通过学习和研究html5有点成果,特总结分享给大家.众所周知应用开发分两种:一是原生的 ...
- 打造自己的html5视频播放器
前段时间重新学习了一下html5的video部分,以前只是停留在标签的使用上,这一次决定深入了解相关的API,并运用这些API打造一个简单的视频播放器.所谓“打造自己的”,就是要自己重写video标签 ...
- HTML5视频播放
1.检测浏览器是否支持html5视频播放 <!doctype html> <html> <head> <meta charset="utf-8&qu ...
- 十个Flex/Air疑难杂症及解决方案简略
十个Flex/Air疑难杂症及解决方案简略 转自http://blog.sban.us/40.html 最近去一家台企,对方给我出了十道“难道”:在TileList中如果選擇檔過多,會出現捲軸,當拖動 ...
- html5 视频播放
html5 视频播放 <!DOCTYPE html> <html lang="en"> <head> <meta charset=&quo ...
- jqm视频播放器,html5视频播放器,html5音乐播放器,html5媒体播放器,video开展demo,html5视频播放演示示例,html5移动视频播放器
最近看到很多有用的论坛html5视频播放的发展,音乐播放功能,大多数都在寻找答案.所以,我在这里做一个demo.对于大家互相学习.html5开发越来越流行,至于这也是一个不可缺少的一部分的视频. 如何 ...
- HTML5视频播放插件 video.js介绍
video.js是一款很流行的html5视频播放插件.很适合在移动端播放视频(比如微信网页),功能强大,且支持降级到flash,兼容ie8.官网:http://videojs.com/ git& ...
- html5视频播放器 二 (功能实现及播放优化)
样式改写css,其中的一些按钮是在“阿里妈妈”上找的字体图标,就不向上传了. /* *CoolPlay视频播放器 * 2016年8月1日 * 627314658@qq.com * */ @font-f ...
- html5视频播放器 一 (改写默认样式)
一个项目用到了html5视频播放器,于是就写了一个,走了很多坑,例如在chrome中加载视频出现加载异常等 先看看效果 是不是感觉换不错,以下是我播放器改写样式的布局. <!DOCTYPE ht ...
随机推荐
- AD进行行PCB DRC检查时,软件提示...report_drc.xsl不存在
之前装过一次AD软件没有报过这样的错误,卸掉后重新装了之后,在对电气规则检查检查时“软件提示...report_drc.xsl不存在”. 原因:之前装的目录默认在C盘下,所以AD软件输出的报告也是默认 ...
- django 中文乱码问题
在使用JS 发送ajax到django后台的时候,可能会出现中文乱码问题 解决方案: 所有的HTMl 和py文件都使用utf-8编码,在创建数据库的时候指定使用utf8 :create databas ...
- python之路:进阶篇 内置函数
li = [11, 22, 33] news = map( li = [100, 2200, 3300] news = map( [13, 24, 35] [11, 11, 11] [22, 4 ...
- 如何用PC标签在列表页中调出文章内容 phpcms
如何用PC标签在列表页中调出文章内容 phpcms v9 moreinfo=”"参数说明 {pc:content action="lists" catid="$ ...
- 整理JRE瘦身或精简JRE
http://blog.csdn.net/xiaoping8411/article/details/6973887 版权声明:本文为博主原创文章,未经博主允许不得转载. 前不久给朋友做了一个桌面程序, ...
- CSDN泄漏数据完整分析
CSDN泄漏数据完整分析 2011-12-22 08:59:26 53391 次阅读 0 条评论 感谢mayee的投递 昨天CSDN的用户数据库被人在网上公布.我下载分析了下里面的数据,得出了一些很有 ...
- 基础数据结构之(Binary Trees)
从头开始刷ACM,真的发现过去的很多漏洞,特别越是基础的数据结构,越应该学习得精,无论是ACM竞赛,研究生考试,还是工程上,对这些基础数据结构的应用都非常多,深刻理解非常必要.不得不说最近感触还是比较 ...
- linux之scp
传输文件夹 scp -r -P 目标端口号 文件夹名 目标用户名@目标服务器地址:目标存放地址 传输文件夹 scp -P 目标端口号 文件名 目标用户名@目标服务器地址:目标存放地址
- 7 -- Spring的基本用法 -- 12...
7.12 Spring 3.0 提供的表达式语言(SpEL) Spring表达式语言(简称SpEL)是一种与JSP 2 的EL功能类似的表达式语言,它可以在运行时查询和操作对象图.支持方法调用和基本字 ...
- OO设计原则 -- OO设计的原则及设计过程的全面总结
这部分增加一点自己的感想,OO设计原则下面讲述的很清晰;看完之后有点感想如果我们在实际开发当中能够把这些原则熟烂于心的话那我们的代码质量和个人能力会有很显著的提神.根据自己的实际经验看很多开发者在开发 ...