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视频播放解决方案的更多相关文章

  1. html5视频播放解决方案

    关键词:html5  nativeapp webapp mp4 H.264 html5没学习之前总觉的很神秘.近期通过学习和研究html5有点成果,特总结分享给大家.众所周知应用开发分两种:一是原生的 ...

  2. 打造自己的html5视频播放器

    前段时间重新学习了一下html5的video部分,以前只是停留在标签的使用上,这一次决定深入了解相关的API,并运用这些API打造一个简单的视频播放器.所谓“打造自己的”,就是要自己重写video标签 ...

  3. HTML5视频播放

    1.检测浏览器是否支持html5视频播放 <!doctype html> <html> <head> <meta charset="utf-8&qu ...

  4. 十个Flex/Air疑难杂症及解决方案简略

    十个Flex/Air疑难杂症及解决方案简略 转自http://blog.sban.us/40.html 最近去一家台企,对方给我出了十道“难道”:在TileList中如果選擇檔過多,會出現捲軸,當拖動 ...

  5. html5 视频播放

    html5 视频播放 <!DOCTYPE html> <html lang="en"> <head> <meta charset=&quo ...

  6. jqm视频播放器,html5视频播放器,html5音乐播放器,html5媒体播放器,video开展demo,html5视频播放演示示例,html5移动视频播放器

    最近看到很多有用的论坛html5视频播放的发展,音乐播放功能,大多数都在寻找答案.所以,我在这里做一个demo.对于大家互相学习.html5开发越来越流行,至于这也是一个不可缺少的一部分的视频. 如何 ...

  7. HTML5视频播放插件 video.js介绍

    video.js是一款很流行的html5视频播放插件.很适合在移动端播放视频(比如微信网页),功能强大,且支持降级到flash,兼容ie8.官网:http://videojs.com/    git& ...

  8. html5视频播放器 二 (功能实现及播放优化)

    样式改写css,其中的一些按钮是在“阿里妈妈”上找的字体图标,就不向上传了. /* *CoolPlay视频播放器 * 2016年8月1日 * 627314658@qq.com * */ @font-f ...

  9. html5视频播放器 一 (改写默认样式)

    一个项目用到了html5视频播放器,于是就写了一个,走了很多坑,例如在chrome中加载视频出现加载异常等 先看看效果 是不是感觉换不错,以下是我播放器改写样式的布局. <!DOCTYPE ht ...

随机推荐

  1. PS2键盘 + LCD12864 实验

    本实验是通过LCD12864来显示键盘上被按下的按键,实验比较简单,在LCD12864固定的DDRAM地址上显示,缺点就是不能保存上一次被按的内容,后者会覆盖掉前面,所以屏上仅有一个字符显示.保存上一 ...

  2. jsp c:forEach用法

    <c:foreach>类似于for和foreach循环   以下是我目前见过的用法:1.循环遍历,输出所有的元素.<c:foreach items="${list}&quo ...

  3. Spring--AOP--面向切面编程

    AOP: 面向切面编程. 通过动态代理实现. AOP就3条线, 2条线给剪断. 实现:动态代理 如果实现interface的话, 用Proxy, InvocationHandler. 不实现inter ...

  4. phpcms v9 后台首页 去掉团队信息等版权

    phpcms\languages\zh-cn\admin.lang.php $LANG['main_product_team'] = 'PHPCMS开发团队'; phpcms\modules\admi ...

  5. ID3决策树预测的java实现

    刚才写了ID3决策树的建立,这个是通过决策树来进行预测.这里主要用到的就是XML的遍历解析,比较简单. 关于xml的解析,参考了: http://blog.csdn.net/soszou/articl ...

  6. iOS 键盘类型UIKeyboardType

    UIKeyboardTypeDefault: UIKeyboardTypeASCIICapable: UIKeyboardTypeNumbersAndPunctuation: UIKeyboardTy ...

  7. MyBatis 3 中使用存储过程

    转:http://zachary-guo.iteye.com/blog/1756689 Mybats 是 iBatis 被 Google 收购后重新命名的一个工程,当然也做了大量的升级.iBatis ...

  8. mysql show命令

    MySQL中有很多的基本命令,show命令也是其中之一,在很多使用者中对show命令的使用还容易产生混淆,本文汇集了show命令的众多用法. 1. show tables或show tables fr ...

  9. box2d中的物理世界

    box2d中的物理世界,即b2World类就是一个包含了各种物体(body,物理体,或者叫刚体),固定附着物(fixture,形状与物理体的绑定物)以及各种约束体(比如关节),并使其在当中完成各种交互 ...

  10. UVa 481 - What Goes Up

    题目大意:给你一系列数,找出它的最长(严格)递增子序列. 由于数据量较大,使用O(n2)的LIS算法会超时,要使用O(nlogn)的LIS算法,这里有详细的介绍. #include <cstdi ...