0

リンクを取得してリンクからビデオを再生する MPMoviePlayerController があります。WiFi を使用しても問題はありません。ビデオは再生され、すべて問題ありません。

ただし、3G ネットワークを使用すると、「操作を完了できませんでした」というローカライズされた説明である MPMoviePlayerPlaybackDidFinishNotification をスローする前に、数秒間ハングします。

私のコードは次のとおりです。

    videoPlayerController =  [[MPMoviePlayerController alloc]
                 initWithContentURL:url];

    [[NSNotificationCenter defaultCenter] addObserver:self
                                         selector:@selector(moviePlayBackDidFinish:)
                                             name:MPMoviePlayerPlaybackDidFinishNotification
                                           object:videoPlayerController];

    [[NSNotificationCenter defaultCenter] addObserver:self
                                         selector:@selector(willEnterFullscreen:)
                                             name:MPMoviePlayerWillEnterFullscreenNotification
                                           object:videoPlayerController];

    videoPlayerController.controlStyle = MPMovieControlStyleDefault;
    videoPlayerController.shouldAutoplay = YES;
    videoPlayerController.repeatMode = MPMovieRepeatModeOne;

    CGRect rect = _documentViewer.frame;
    [videoPlayerController.view setFrame:rect];
    [self.scroller addSubview:videoPlayerController.view];
    [videoPlayerController setFullscreen:NO animated:YES];

前述したように、WiFi 接続を使用すると問題なく動作しますが、3G で同じことをするのは好きではありません。ビデオ自体は、特定の URL から 26.8 MB 離れています。3G は、IOS で一度にダウンロードできる量を制限しますか? 3G ネットワーク経由でビデオを再生する代替手段はありますか?

お時間をいただきありがとうございます!

4

1 に答える 1

0

低速ネットワーク経由でビデオ ファイルを配信するには、HTTP ライブ ストリーミング (HLS) を使用する必要があります。

コードを変更する必要はありませんが、呼び出す URL はストリームのインデックス ファイルを指す必要があります。インデックス ファイルは、個々の (多くの場合 10 秒の) MPEG トランスポート ストリーム ファイルのプレイリストになります。

Apple の HTTP ライブ ストリーミングページで詳細を調べるか、 Wikipediaでサーバー ソフトウェアの概要とリストを入手してください。

余談ですが、 の宣言は表示されませんがvideoPlayerController、それがビュー コントローラーのプロパティであることを確認するか、何らかの方法で、ビデオが再生されている間はその有効期間が続くことを確認する必要があります。為に。

于 2013-07-26T01:20:29.950 に答える