2

私は現在、ビデオ プレーヤーを使用して Flex モバイル プロジェクトで苦労しています。基本的に、問題は、iOS モバイル デバイスで .MP4 ビデオをまったく再生できない、または少なくとも見ることができないことです (ビデオも音もありません。プレーヤー ビューは単に空です)。ソースを .FLV ビデオに置き換えるとすぐに、すべてが完全に機能します。

私が理解したものと同じコンポーネントを使用しているにもかかわらず、2 つのアプローチを試しました。

  • 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 ファイルには H.264 コーデックを使用していることを付け加えておきます。

私が間違っていることはありますか?

エミュレーターを使用している限り、両方の形式が機能していることに注意してください。.MP4 の問題は、アプリを iPad に展開した場合にのみ発生します。

これは、 Flash Builder 4.7 for Windows 7 ProでAIR 3.9を使用するモバイルFlex 4.6プロジェクトです。

4

2 に答える 2

0

簡単ではありませんが、iOS で RTMP 経由で H264 が本当に必要な場合は、iOS RTMP ビデオ再生アプリ (ネイティブ) を制御する ANE を追加できます。iOS 用の RTMP H264 ビデオ プレーヤーを作成している小さな会社がいくつかあります。

于 2014-12-22T09:37:44.440 に答える