0

私はおそらく本当に明白な何かを見逃しています。

<MediaPlayer/MediaPlayer.h>はこのコードを含めて持っています:

NSURL *videoURL = [NSURL fileURLWithPath:pathToFile];
MPMoviePlayerViewController *mediaPlayer = [[MPMoviePlayerViewController alloc] initWithContentURL:videoURL];
[self presentMoviePlayerViewControllerAnimated:mediaPlayer];
mediaPlayer.view.backgroundColor = [UIColor blackColor];
[mediaPlayer release];

ただし、ビデオは再生されません。ビデオが完全に機能する別の場所からコードをコピーしました。

pathToFile変数は前の行で使用され、ビデオをリソースフォルダからドキュメントディレクトリに移動するため、正しいです。

なぜそれが機能しないのか、何か考えはありますか?

ありがとう

4

2 に答える 2

2

presentMoviePlayerViewControllerAnimatedレシーバーが残っているとは思わないので、映画プレーヤーのリリースが早すぎるようです。mediaPlayerを保持されたプロパティにしてみることができます:

@interface MyClass : SuperClass {
    MVMoviePlayerViewController *mediaPlayer;
}
@property (nonatomic, retain) MVMoviePlayerViewController *mediaPlayer;
@end

@implementation MyClass 
@synthesize mediaPlayer;
// rest of class implementation here...
@end

次に、そのように初期化します。

self.mediaPlayer = [[[MPMoviePlayerViewController alloc] 
                    initWithContentURL:videoURL] autorelease];

その後、次のようにリリースします。

self.mediaPlayer = nil;

(ビデオの再生が終了した後に発生するコードを作成するには、MPMoviePlayerPlaybackDidFinishNotification通知を確認してください。)

またpresentMoviePlayerViewControllerAnimated、iOS 3.2で最初に登場したため、このコードは以前のiOSバージョンでは機能しないことにも注意してください。しかし、この場合はそれが問題になるとは思いません。

于 2010-11-25T12:38:38.377 に答える
2

presentMoviePlayerViewControllerAnimatedを除いて、次のコードを使用できます

NSString *movieFile=[[NSBundle mainBundle] pathForResource:@"movie" ofType:@"m4v"];
moviePlayer= [[MPMoviePlayerController alloc] initWithContentURL:url];
moviePlayer.view.frame = self.view.frame;
[self.view addSubview:moviePlayer.view];
[moviePlayer setFullscreen:YES animated:YES];

これは私にとってはうまくいきます。

于 2010-11-25T12:39:49.243 に答える