NetStream http视频无法在IOS设备上播放

时间:2013-04-15 08:17:16

标签: ios actionscript-3 flash flash-cs6

我想在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应用并安装在设备上时,它会显示白色的空白屏幕。

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

2 个答案:

答案 0 :(得分:4)

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

  1. 正如VC.One所说,你编码为FLV。这样做并不好,我不推荐它。 FLV不是硬件加速的(除非最近发生了变化,我还没有看到更新),并且将完全从CPU运行,这意味着你的应用程序将运行缓慢,应用程序将比平时更快地吃电池。
  2. 使用StageWebView,在这种情况下,您只需插入视频的网址,它就会使用原生视频播放器播放视频。这有一个缺点,你不能模仿他的球员,你无法控制它。一旦开始播放,除了卸载页面外,您无法控制它。然而,这非常有效,并且相当容易实现,但视频将出现在舞台的顶部(Display List中的)。
  3. 最后一个选项是使用StageVideo。这将使用本机框架播放视频,因此您可以轻松播放h.264 它将是硬件加速。此外,这只是一个NetStream播放器,因此您可以完全控制它。最好的是,它没有铬,所以你可以在视频屏幕周围建立一个播放器。但是,与StageWebView一样,StageVideo在Display List。但与StageWebView不同,它直接在舞台上呈现,之下。所以应用程序本身将涵盖视频。您可以通过创建一个类来围绕视频屏蔽您的应用程序来解决这个问题,但要正确启动它是非常困难的。我花了大约12个小时来创建我的StageVideo播放器和屏蔽类,另外半天后修复了屏蔽类的问题以及它如何处理DPI更改(提示:如果使用Flex,请不要设置applicationDPI
  4. 与往常一样,请确保您的AIR SDK也是最新的。 3.5-3.7已经为iOS应用程序添加了大量新功能和错误修复,因此更新到AIR 3.7可能实际上解决或使您的问题不再是一个问题(我不认为它会,但它总是值得一个拍了吧?)

答案 1 :(得分:0)

请看这个链接:

  

Netstream video not playing on iPad

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