0

我正在尝试在 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 应用程序并安装在设备上时,它显示白色空白屏幕。

如果有人有同样的问题或任何想法,请与我分享。

4

2 回答 2

4

正如 VC.One 所指出的,AIR for iOS 不会播放大多数(但不是全部,它偶尔会播放非常特定的编码类型)h.264 编码的视频。有三种解决方案:

  1. 正如 VC.One 所说,您编码为 FLV。这样做不好,我不会推荐它。FLV 不是硬件加速的(除非最近发生了变化并且我没有看到更新),并且将完全脱离 CPU 运行,这意味着您的应用程序将运行缓慢并且应用程序将比正常情况下更快地消耗电池。
  2. 使用StageWebView,在这种情况下,您只需插入视频的 URL,它将使用本机视频播放器播放视频。这有不利的一面,因为您无法剥皮他的球员并且您无法控制它。一旦它开始播放,除了卸载页面之外,您无法控制它。然而,这工作得很好,并且相当容易实现,尽管视频将出现在舞台顶部(它不在Display List)。
  3. 最后一个选项是使用StageVideo. 这将使用本机框架播放视频,因此您可以轻松播放 h.264并且它将是硬件加速的。此外,这只是一个 NetStream 播放器,因此您可以完全控制它。最好的是,它没有 chrome,因此您可以围绕视频屏幕构建播放器。但是,与 StageWebView 一样,StageVideo不在. Display List但与 StageWebView 不同的是,它是直接在舞台上渲染的,如下其他一切。所以应用程序本身将覆盖视频。你可以通过创建一个类来围绕视频屏蔽你的应用程序来解决这个问题,但是要正确地完成它是非常困难的。我花了大约 12 个小时来创建我的 StageVideo 播放器和遮罩类,另外半天后修复了遮罩类的问题以及它如何处理 DPI 更改(提示:applicationDPI如果您使用的是 Flex,请不要设置)

与往常一样,请确保您的 AIR SDK 也是最新的。3.5-3.7 都为 iOS 应用程序添加了大量新功能和错误修复,因此更新到 AIR 3.7 可能会真正解决或减少您的问题(我认为不会,但总是值得一试,正确的?)

于 2013-04-15T17:49:31.247 回答
0

请参阅此链接:

Netstream 视频无法在 iPad 上播放

基本上它是通过将视频文件编码为 FLV 而不是 MP4 来修复的。

于 2013-04-15T09:18:30.630 回答