我目前正在使用视频播放器在我的 Flex 移动项目上苦苦挣扎。基本上,问题是我似乎根本无法在 iOS 移动设备上播放或至少看到 .MP4 视频(没有视频、没有声音,播放器视图只是空的)。一旦我用 .FLV 视频替换源,一切都运行良好。
我尝试了两种方法,即使它们在我所理解的情况下使用相同的组件。
OSMF:使用 VideoElement、MediaPlayer、MediaContainer 和 MediaPlayerSprite。
private var media:VideoElement; private var mediaPlayer:MediaPlayer; private var mediaContainer:MediaContainer; private var mediaSprite:MediaPlayerSprite; protected function onViewCreationComplete(event:FlexEvent):void { media = new VideoElement(new URLResource("http://10.140.1.165/jobs/92/eproofing/in/pages/versions/1/page1/video.mp4")); mediaPlayer = new MediaPlayer(media); mediaContainer = new MediaContainer(); mediaContainer.addMediaElement(media); mediaSprite = new MediaPlayerSprite(mediaPlayer, mediaContainer); mediaSprite.addEventListener(MouseEvent.CLICK, onVideoSpriteClicked, false, 0, true); mediaSprite.mediaPlayer.addEventListener(TimeEvent.CURRENT_TIME_CHANGE, onVideoTimeChanged); videoContainer.height = manager.selectedPage.formatHeight; videoContainer.width = manager.selectedPage.formatWidth; videoContainer.addChild(mediaSprite); }
StageVideo:使用Video、NetConnection和NetStream(StageVideo对象的使用实际上还没有在下面的代码中实现,这将是下一步)
private var video:Video; private var ns:NetStream; private var nc:NetConnection; private var isVideoPlaying:Boolean = false; protected function onViewCreationComplete(event:FlexEvent):void { video = new Video(); nc = new NetConnection(); nc.connect(null); ns = new NetStream(nc); ns.client = {onMetaData:onMetaData}; ns.addEventListener(NetStatusEvent.NET_STATUS, onVideoLoaded); ns.play("http://10.140.1.165/jobs/92/eproofing/in/pages/versions/1/page1/video.mp4"); this.isVideoPlaying = true; } private function onVideoLoaded(event:NetStatusEvent):void { video.attachNetStream(ns); videoContainer.addChild(video); videoContainer.height = video.height = video.videoHeight; videoContainer.width = video.width = video.videoWidth; } private function onMetaData(o:Object):void { }
两者都给了我相同的结果:只要我使用 .FLV,视频就会出现并正确播放,而一旦我加载 .MP4 视频,我就什么也看不到/听不到 了 当然,MP4 是我想用于这个项目的格式。我可能会补充一点,我正在为这些 .MP4 文件使用 H.264 编解码器。
有什么我做错了吗?
请注意,只要我使用模拟器,两种格式都可以工作,.MP4 问题仅在我在 iPad 上部署应用程序时发生。
这是一个移动Flex 4.6项目,在适用于Windows 7 Pro的Flash Builder 4.7上使用AIR 3.9