0

HTTP ライブ ストリーミング (Adobe Media Server を使用) を介して MPMoviePlayerController でビデオを再生しようとしています。

- (void) viewDidAppear:(BOOL)animated{
    [super viewDidAppear:animated];
    [self playVideo];
}

- (void) playVideo{
    NSURL *url = [NSURL URLWithString:@"http://192.168.10.27/hls-vod/test.mp4.m3u8"];
    MPMoviePlayerController *moviePlayer =
    [[MPMoviePlayerController alloc] initWithContentURL:url];
    moviePlayer.controlStyle = MPMovieControlStyleDefault;
    [self.view addSubview:moviePlayer.view];
    [moviePlayer setFullscreen:YES animated:YES];
    [moviePlayer play];
}

プレーヤーは正しく起動していますが、まだロード中で、ビデオの再生が開始されません。デバイスの Safari でいくつかのリンクを試してみましたが、正しく動作しました。

その問題について何か考えはありますか?

4

3 に答える 3

3

私は解決策を見つけました!コントローラーのインターフェイスで moviePlayer を宣言し、それを playVideo メソッドで開始するだけで機能します。

于 2013-02-01T23:52:20.527 に答える
0
  1. 実際のデバイスで試しましたか? MPMoviePlayerControllers がシミュレーターで正しく再生されないことがあります。

  2. 一度に複数の MPMoviePlayerController を作成していますか? インスタンス化できる MPMoviePlayerController は 1 つだけなので、2 番目のビデオを再生する必要がある場合は、最初のビデオを破棄するか再利用する必要があります。

  3. ファイルはビデオ ファイルではなく再生リストであるm3u8ため、ファイルを調べて、MPMoviePlayerController でサポートされているファイル タイプを指していることを確認してください。

また、viewDidAppear メソッドでビデオを再生していることに注意してください。これは、ユーザーが MPMoviePlayerController で全画面表示を終了するたびに呼び出されることに注意してください。そのため、表示するかどうかを決定するロジックを追加することをお勧めします。(常に永遠に表示したい場合を除きます。)

于 2013-01-31T17:18:44.947 に答える
0

(修繕!!!!!)

以前にこの問題に遭遇しました。

そして、問題は静的プレーヤーによるものでした。MPMoviewPlayer のプロパティを使ってみる

サンプル コードは次のようになります。

@interface YourViewController ()
@property (nonatomic, strong) MPMoviewPlayer *mp;
@end

@implementation YourViewController
- (void)playVideo {
    NSURL *movieURL = [NSURL URLWithString:@"http://the/url/playlist.m3u8"];
    self.mp = [[MPMoviePlayerController alloc] initWithContentURL:movieURL];

    if (self.mp)
    {
        self.mp.view.frame = self.view.bounds;
        [self.view addSubview:self.mp.view];

        // save the movie player object
        [self.mp setFullscreen:YES];

        // Play the movie!
        [self.mp play];
    }
}

@end
于 2015-06-25T09:34:45.997 に答える