我想在 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 运行,这意味着您的应用程序将运行缓慢并且应用程序消耗电池的速度比正常情况快得多。
- 使用
StageWebView
,在这种情况下,您只需插入视频的 URL,它就会使用 native 视频播放器播放视频。这有不利的一面,因为你不能剥削他的球员,你也不能控制它。一旦开始播放,除了卸载页面外,您无法控制它。不过,这种方法效果很好,而且很容易实现,尽管视频会出现在舞台顶部(它不在显示列表
中)。< - 最后一个选项是使用
StageVideo
.这将使用 native 框架播放视频,因此您可以轻松播放 h.264 并且它将进行硬件加速。此外,这只是一个 NetStream 播放器,因此您可以完全控制它。最好的是,它没有 chrome,因此您可以围绕视频屏幕构建播放器。但是,与 StageWebView 一样,StageVideo 不在显示列表
中。但与 StageWebView 不同的是,它直接呈现在舞台上,低于其他一切。因此应用程序本身将覆盖视频。您可以通过创建一个类来在视频周围屏蔽您的应用程序来解决这个问题,但是要正确地实现这一点非常困难。我花了大约 12 个小时来创建我的 StageVideo 播放器和屏蔽类,再加上半天后修复屏蔽类的问题以及它如何处理 DPI 更改(提示:如果您不设置applicationDPI
正在使用 Flex)
与往常一样,确保您的 AIR SDK 也是最新的。 3.5-3.7 都为 iOS 应用程序添加了大量新功能和错误修复,因此更新到 AIR 3.7 实际上可能会解决或减少您的问题(我认为不会,但总是值得一试,对吧?)
关于ios - NetStream http 视频无法在 IOS 设备上播放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16010572/