我正在尝试在 iPad 上播放视频,我的代码如下:
public function init_RTMP():void
{
videoURL = "http://rest************_iphone_high.mp4";
vid = new Video();
nc = new NetConnection();
nc.addEventListener(NetStatusEvent.NET_STATUS, onConnectionStatus);
nc.connect(null);
}
private function onConnectionStatus(e:NetStatusEvent):void
{
if (e.info.code == "NetConnection.Connect.Success")
{
trace("Creating NetStream");
netStreamObj = new NetStream(nc);
metaListener = new Object();
metaListener.onMetaData = received_Meta;
netStreamObj.client = metaListener;
netStreamObj.play(videoURL);
vid.attachNetStream(netStreamObj);
addChild(vid);
}
}
当我在我的系统上播放它时,它工作正常,但是当我创建它的 IOS 应用程序并安装在设备上时,它显示白色空白屏幕。
如果有人有同样的问题或任何想法请与我分享。
正如 VC.One 指出的那样,AIR for iOS 无法播放大多数(但不是全部,它偶尔会播放非常特定的编码类型)h.264 编码视频。解决方案有以下三种:
- 正如 VC.One 所说,您编码为 FLV。这样做不好,我不会推荐它。 FLV 不是硬件加速的(除非最近发生了变化并且我还没有看到更新)并且将完全依靠 CPU 运行,这意味着您的应用程序将运行缓慢,并且应用程序消耗电池的速度会比正常情况快得多。
- Use StageWebView http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/media/StageWebView.html,在这种情况下,您只需插入视频的 URL,它就会使用本机视频播放器播放视频。这样做的缺点是你无法剥削他的玩家并且无法控制它。一旦开始播放,除了卸载页面之外,您无法控制它。然而,这效果很好,并且相当容易实现,尽管视频将出现在舞台顶部(它是not in the
Display List
).
- 最后一个选项是使用StageVideo http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/media/StageVideo.html。这将使用本机框架播放视频,因此您可以轻松播放 h.264and它将是硬件加速的。此外,这只是一个 NetStream 播放器,因此您可以完全控制它。最棒的是,它没有镶边,因此您可以在视频屏幕周围构建播放器。然而,与 StageWebView 一样,StageVideo 是not in the
Display List
。但与StageWebView不同的是,它是直接渲染在舞台上的,below其他一切。因此应用程序本身将覆盖视频。您可以通过创建一个类来围绕视频屏蔽您的应用程序来解决此问题,但正确实现这一点非常困难。我花了大约 12 个小时来创建我的 StageVideo 播放器和屏蔽类,另外半天后修复了屏蔽类的问题以及它如何处理 DPI 更改(提示:不要设置applicationDPI
如果您使用的是 Flex)
与往常一样,请确保您的 AIR SDK 也是最新的。 3.5-3.7 都为 iOS 应用程序添加了大量新功能和错误修复,因此更新到 AIR 3.7 可能实际上可以解决或使您的问题不再成为问题(我不认为会这样,但总是值得一试,正确的?)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)