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. 基于Verilog HDL 的数字时钟设计

    基于Verilog HDL的数字时钟设计 一.实验内容:     利用FPGA实现数字时钟设计,附带秒表功能及时间设置功能.时间设置由开关S1和S2控制,分别是增和减.开关S3是模式选择:0是正常时钟 ...

  2. javascript类的继承

    1.构造函数方式写类,通过方法调用复制父类属性/字段到子类 实现继承 这里父类,子类都采用构造函数方式写,不用原型.子类调用父类函数来复制父类的属性. 1 2 3 4 5 6 7 8 9 10 11 ...

  3. JQuery中的mouseover和mouseenter的区别

    mouseover和mouseout是一对:mouseenter和mouseleave是一对. 相同点:都是鼠标经过就触发事件 不同点: 给外盒子一个经过触发事件,但是mouseover会在鼠标经过外 ...

  4. swift之向ftp服务器传文件

    在 mac 上如何使用 xcode, swift 语言开发一个向 ftp 服务器上传文件的工具? 使用的是第三方库 Rebekka,下载地址为:https://github.com/Constanti ...

  5. 程序ajax请求公共组件-- app-jquery-http.js

    $.HTTP = { getUrlParam : function (name) { var reg = new RegExp ("(^|&)" + name + &quo ...

  6. 使用PHPmailer 发送邮件,使用QQ smtp服务器

    <meta charset="utf-8"> <?php include("class.phpmailer.php"); include(&q ...

  7. Java的JDBC事务详解

    Java的JDBC事务详解         分类:             Hibernate              2010-06-02 10:04     12298人阅读     评论(9) ...

  8. [Unity]C#中 将XML和实体类之间进行相互转换的工具类

    using System; using System.Xml; using System.Xml.Serialization; using System.IO; namespace LOTool { ...

  9. Java 的Object类

    1.toString()是Objectde的方法,如果不重写,直接输出对象或者用对象调用toString()输出是会输出包名.类名@对象哈希码的无符号十六进制表示 子类如果重写了这个方法,可以隐式调用 ...

  10. linux分区-df

    转自:http://baike.baidu.com/link?url=tyonI3NCB3F-ytIQz72PY-8uAaUQgfFFXbyKAea1e2NiB_t5AsE0MLOLc2LcqOiS ...