ActionScript 3 AIR - 视频使闪烁跳转

时间:2013-09-19 18:11:00

标签: mobile video actionscript air lag

我使用ActionScript 3和Adobe AIR (3.7)为iOS和Android制作应用程序,以构建ipa和apk。在此应用程序中,我从FLV加载视频并将其添加到场景中。 问题是,在模拟器或Flash视图上,一切正常,但是,在iPad (在iPad 1,2和3上测试,结果相同)视频会使短片跳跃(就像突然冻结一样,然后短暂跳进时间线大约每2秒钟一次。

当然,我确保视频不在其他元素下或移动剪辑上方。我尝试加载视频而没有其余的界面:相同的结果。将renderMode更改为“direct”或“gpu”,no ...以不同质量导出视频并确保没有redimensionnement (即使维度为8的倍数),也不会再次。

我使用此代码的相似性来加载我的视频(这是我使用的测试代码,问题不在我的代码中的其他地方)

var myVideo:Video = new Video();
this.addChild(myVideo);

var nc:NetConnection = new NetConnection();
nc.connect(null);

var ns:NetStream = new NetStream(nc);

ns.client = { onMetaData:ns_onMetaData, NetStatusEvent:ns_onPlayStatus };

myVideo.attachNetStream(ns);

ns.play("myLink.flv");

var ns_onMetaData:* = function(item:Object):void {  }

var ns_onPlayStatus:* = function(event:NetStatusEvent):void {}

ns.addEventListener(NetStatusEvent.NET_STATUS, ns_onPlayStatus);

提前致谢并抱歉我的英文不好

1 个答案:

答案 0 :(得分:0)

您不应在iOS设备上使用FLV。这是我个人猜测你为什么看到“跳跃”。 FLV是软件解码的,所以它相对较慢。我的个人猜测是你正在解码视频时丢帧。

在iOS(以及所有移动设备上),你想要使用mp4扩展名为m4v的h.264视频(StageVideo可以在iOS上运行,但不能在Android上,我相信)。要进行播放,您需要使用StageWebViewVideo而不是基于AS3的视频播放器。 StageVideo将使用设备的实际媒体框架进行渲染。 StageWebView仅适用于iOS和某些Android设备,并将使用设备的实际媒体播放器进行渲染。

此与FLVPlayback或{{1}}(或基于Flex或OSMF的视频播放器)之间的区别在于视频将进行硬件加速/解码。这意味着您的应用程序的渲染时间(以及视频渲染时间)也不会受到视频解码速度的影响,因为单独的芯片将处理它。

此外,硬件加速视频在电池寿命方面会更好,更好。我去年在iPad 3上进行了一次测试,软件/ CPU解码的FLV消耗的电池寿命与硬件解码的h.264之间的差异在30%左右。

请记住,这两个选项都不会在显示列表中呈现。 StageWebView呈现在显示列表上方,StageVideo呈现在下面。

我建议您在AIR for Mobile应用中查看我以前的视频渲染答案。我过去曾在AIR for mobile中详细介绍过视频。我现在使用AIR for Mobile构建了三个视频点播应用程序,这绝对是一项微妙的任务。

NetStream http Video not playing on IOS device

Optimizing video playback in AIR for iOS

How to implement stagevideo in adobe air for android?

希望这对你有所帮助。