1

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

当然,我确保视频不在其他元素之下或在移动剪辑之上。我尝试在没有其余界面的情况下加载视频:结果相同。将renderMode更改为“direct”或“gpu”,不...以不同的质量导出视频并确保没有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);

提前感谢,对不起我的英语不好

4

1 回答 1

0

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

在 iOS(以及所有移动设备,真的)上,你想使用带有mp4扩展名的 h.264 视频(m4v我相信在 iOS 上可以,但在 Android 上不行)。对于播放,您希望使用基于 AS3 的视频播放器,StageVideo或者使用其中的一个。StageWebViewStageVideo 将使用设备的实际媒体框架进行渲染。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 视频不在 IOS 设备上播放

在 AIR for iOS 中优化视频播放

如何在 adobe air for android 中实现 stagevideo?

希望这对您有所帮助。

于 2013-09-23T16:31:27.520 回答