我目前在使用视频播放器的Flex移动项目上苦苦挣扎。 基本上,问题是我似乎无法在iOS移动设备上播放或至少看到.MP4视频(没有视频,没有声音,播放器视图只是空的)。只要我用.FLV视频替换视频源,一切都可以正常工作。MP4视频仍然隐藏在手机上Flex应用
我已经尝试了两种方法,即使他们使用了我所了解的下面的相同组件。
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:使用视频,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是我想要的格式o用于此项目。我可能会补充说我正在为这些.MP4文件使用H.264编解码器。
有什么我做错了吗?
请注意,只要我使用模拟器,这两种格式都可以使用,只有在我的iPad上部署应用程序时才会发生.MP4问题。
这是移动的Flex 4.6项目,使用AIR 3.9上Flash Builder的4.7为的Windows 7专业版
谢谢比尔。我不确定完全理解传递文件URL和视频缓冲区之间的区别,但我肯定需要在这一点上做更多的研究。如果没有其他答案,我会查看是否可以对此项目使用其他编码。 –
你有什么解决方案?我有同样的问题。 – ketan
传递URL的格式相同,只是流式视频需要HLS格式视频(带.m3u8后缀,流内容的播放列表文件)。很难遵循,但示例在https://developer.apple.com/streaming/上,其中一些可播放的流示例位于https://developer.apple.com/streaming/examples/basic-stream.html –