5

以下のコードを使用して基本的な.movビデオファイルを再生しようとしていますが、アクションを割り当てたボタンを押すと、黒いフレームだけが表示されますが、ビデオは再生されません。どんな助けでも大歓迎です。ありがとう。

@implementation SRViewController

-(IBAction)playMovie{
    NSString *url = [[NSBundle mainBundle]
                     pathForResource:@"OntheTitle" ofType:@"mov"];
    MPMoviePlayerController *player = [[MPMoviePlayerController alloc]
                                       initWithContentURL: [NSURL fileURLWithPath:url]];

    // Play Partial Screen
    player.view.frame = CGRectMake(10, 10, 720, 480);
    [self.view addSubview:player.view];

    // Play Movie
    [player play];
}

@end
4

1 に答える 1

13

想定される前提条件:あなたのプロジェクトは ARC を使用しています

MPMoviePlayerControllerインスタンスはローカルのみであり、ARC にはそのインスタンスを保持する必要があることを伝える方法がありません。コントローラーはそのビューによって保持されないため、結果として、インスタンスはメソッド実行MPMoviePlayerControllerの実行直後に解放されます。playMovie

この問題を解決するには、プレイヤー インスタンスのプロパティをSRViewControllerクラスに追加し、インスタンスをそのプロパティに割り当てます。

ヘッダ:

@instance SRViewController

   [...]

   @property (nonatomic,strong) MPMoviePlayerController *player;

   [...]

@end

実装:

@implementation SRViewController

   [...]

    -(IBAction)playMovie
    {
        NSString *url = [[NSBundle mainBundle]
                         pathForResource:@"OntheTitle" ofType:@"mov"];
        self.player = [[MPMoviePlayerController alloc]
                                           initWithContentURL: [NSURL fileURLWithPath:url]];

        // Play Partial Screen
        self.player.view.frame = CGRectMake(10, 10, 720, 480);
        [self.view addSubview:self.player.view];

        // Play Movie
        [self.player play];
    }

    [...]

@end
于 2013-02-25T11:25:29.750 に答える