ActionScript 3 AIR — 视频使眨眼跳跃

Posted

技术标签:

【中文标题】ActionScript 3 AIR — 视频使眨眼跳跃【英文标题】:ActionScript 3 AIR — Video make blink jump 【发布时间】:2013-09-24 23:18:04 【问题描述】:

我使用 ActionScript 3 和 Adob​​e AIR ( 3.7 )iosandroid 创建了一个应用程序来构建 ipa 和 apk。在此应用程序中,我从 FLV 加载视频并将其添加到场景中。 问题是,在模拟器或 Flash 视图上,一切正常,但是,在 iPad (在 iPad 1、2 和 3 上进行测试,结果相同)视频让短裤跳起来 (就像突然冻结,然后短暂跳转到时间线)大约每 2 秒。

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

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

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】:

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

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

这与VideoFLVPlayback(或基于 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?

希望对你有所帮助。

【讨论】:

感谢您的回答。在未来,我会去使用另一种方式来显示视频。对于这个应用程序,我只是改变了加载 SWF 而不是视频的原理。

以上是关于ActionScript 3 AIR — 视频使眨眼跳跃的主要内容,如果未能解决你的问题,请参考以下文章

ActionScript 3 AIR ActiveRecord是开源的

ActionScript 3 忽略AIR中的隐藏文件

ActionScript 3 Adobe AIR URLMonitor示例

ActionScript 3 [AIR] [FlashBuilder] Webbrowser

ActionScript 3 AIR的递归目录复制

ActionScript 3 在AIR中拖放