iOS 上的 Flash/AIR 舞台视频 - 有可能吗?表现如何?

Posted

技术标签:

【中文标题】iOS 上的 Flash/AIR 舞台视频 - 有可能吗?表现如何?【英文标题】:Flash/AIR Stage Video on iOS - Is It Possible? How is the performance? 【发布时间】:2012-04-21 17:41:48 【问题描述】:

你们中的任何人都可以向我指出一些有关 ios 设备上 AIR (3.2) 视频性能的资源。

我感兴趣:

StageVideo 可用 是否允许/启用视频流 高清视频的性能还可以吗? 是否允许播放 .flv? (在 android 上怎么样:flash 已经有了)

【问题讨论】:

刚刚 +1 了,我一直在使用斑马线 QR 码阅读器开发一个应用程序,并且对 iOS 与舞台视频和 AIR 3.2 的兼容性以及从舞台视频中捕获位图感到好奇。如果我最终没有看到答案并与一些同事一起测试它,我会告诉你它是如何工作的。 谢谢@shaunhusain,我也很想测试这个,但问题是我没有那么多移动设备和证书,所以我可以对几个屏幕分辨率/cpu/gpu 进行认真的测试。很快我将为此添加赏金,以防您决定对其进行测试。 :) 我为 iOS (iPad2) 开发了一个流媒体视频应用程序,我必须说我对它的性能感到相当惊讶。我们能够毫无问题地播放高清(不是全高清,而是 1024 x 768 之类的)视频流。虽然不知道 .flv 播放。我们还遇到了一个严重的错误,它不允许我们通过 RTMPS/RTMPE 进行流式传输。 @DennisJaamann 感谢您的评论。确实,从您那里听到这样的好消息很有趣。一个问题:你用的是舞台视频还是普通视频? @AdrianPirvulescu,我们为此使用了 StageVideo。 【参考方案1】:

iOS 上只有 H264 具有硬件解码功能。 这意味着仅适用于 H264 的原生播放器的视频性能相当 并且 Sorenson 和 VP6 的解码(充其量)缓慢(即使是低分辨率)。

“AIR 3 for iOS 将 StageVideo 对象用于硬件解码的 H.264 视频,但对 NetStream 功能的支持有限。AIR 3 for iOS 还通过 StageVideo 对象支持 On2 和 Sorenson 编解码器。此支持不使用硬件解码,并且不限制 NetStream 功能。” flash.media.StageVideo

FLV 和 MP4 是封装格式。 FLV 可以包含 VP6+MP3 或 H264+AAC(或其中任何一个单独使用)。 MP4 可以包含 H264+AAC。 文档没有说明 iOS 不支持 FLV。

但是,在 iOS 上,如果 FLV/H264 无法播放,由于以下限制,您将无法即时将其重新混合为 MP4(否则您将丢失硬件解码): “注意:AIR 3.0 for iOS 中的 H.264 视频不支持此方法。” flash.net.NetStream::appendBytes()

没有任何关于 Sorenson 或 VP6 不支持即时 remuxing(因此它们应该是)的说法。

反正你不应该需要 appendBytes,除非你打算做一些非常高级的事情,比如在播放过程中不中断地动态切换比特率。

直播需要与 appendBytes 类似的东西。由于需要 H264 硬件解码且没有软件模式,因此您不会获得 H264 用于直播。

“事实证明,H264 视频的实时流式传输无法在 Adob​​e Air 中的 iOS 设备上呈现。其他视频编解码器可以工作 (H263),但不适用于 H264。您将使用提要,但只会听到音频。我在与 Adob​​e Air 开发团队的成员交谈后确认了这一点。” 来自Adobe Forums

H264 解码在不同 Apple ARM CPU 上的表现在很大程度上取决于视频编码设置(B 帧或关键帧、比特率等)以及您是否拥有动态内容、静态内容、快速切换场景、分辨率、颜色托盘等。

结论: 使用 FLV 或 MP4(以最适合您的为准),内置 H264+AAC。 尝试使用编码设置或您定位的大量视频(如果有)。 确定您要定位的最低(最旧)iOS 设备,并在其上进行测试。

【讨论】:

忘了提及以上所有内容仅适用于 StageVideo,不适用于普通 flash.media.Video。 您好 Tiberiu,您的帖子回答了我更多的问题。感谢您的发布。我会把你标记为正确的。还有一个问题:性能如何?它在本机分辨率下滞后或运行正常? 它必须与 QuickTime 相同。很大程度上取决于播放的视频,同时也取决于硬件。 编译 AIR 应用程序时,您必须至少以 -swf-version=13 为目标(StageVideo 在 -swf-version=11 时可用,但是,我建议以最新支持为目标,我认为现在是 15 )。如果带有 H264/AAC 的 FLV 不能将其切割为硬件,则必须使用具有相同流的 MP4。在进行任何测试之前检查各种 iOS 设备的比特率和推荐的视频和音频编码设置(也就是说,如果您可以控制播放的视频)。我还没有在 iOS 上测试过 FLV,是的,但是我很快就会测试,因为我现在正在做一些事情。 @jamix 这在很大程度上取决于 CPU 功率、屏幕分辨率和视频分辨率。【参考方案2】:

我不知道性能如何叠加,但 NetStream 的 Actionscript 文档提供了一些关于使用 NetStream/Video 在 iOS 设备上的 AIR 上播放视频的信息:

http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/net/NetStream.html#play%28%29

使用 AIR 3 的 iOS 上的 H.264 视频支持 StageVideo:

http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/media/StageVideo.html

要点是 iOS 设备支持 StageVideo 和有限的流媒体功能,只要您的视频使用 iOS 要求的流媒体格式。

【讨论】:

好的,所以基本上你说的是我无法在 iPhone 上使用 adobe air 应用播放 .flv ?

以上是关于iOS 上的 Flash/AIR 舞台视频 - 有可能吗?表现如何?的主要内容,如果未能解决你的问题,请参考以下文章

使用 flash air 开发 ios 8 键盘和小部件

Actionscript,AS3,MXML,Flex,Flex Builder,Flash Builder,Flash,AIR,Flash Player之关系

AIR for iOS、外部 swf(不允许使用字节码)可以使用实例名称访问舞台上的实例吗?

flash Air 在同一个目录下面创建txt,写入字

如何在 Flash AIR 和 AS3 中使用触控?

高稳定低延时高并发RTMP播放器流媒体音视频播放器EasyPlayer-RTMP-iOS器如何将核心代码打包成静态库