1

メインバンドルにあるビデオファイルをロードしたいだけです。これは非常に単純に思えますが、何らかの理由でエラーが発生MPMoviePlayerControllerし続けます。次のコードがあります。

- (void)viewDidLoad{
[super viewDidLoad];

NSString *path = [[NSBundle mainBundle] pathForResource:@"ipad2" ofType:@"mp4"];

self.myPlayer = [[MPMoviePlayerController alloc] initWithContentURL:[NSURL URLWithString:path]];
[self.myPlayer prepareToPlay];

self.myPlayer.movieSourceType = MPMovieSourceTypeFile;
[self.myPlayer.view setFrame:self.view.bounds];
[self.view addSubview:self.myPlayer.view];

[self.myPlayer play];

}

黒い画面と次の出力のみが表示されます。

2013-01-09 13:38:15.686 myVideoApp[1789:907] [MPAVController] Autoplay: Likely to keep up or full buffer: 0
2013-01-09 13:38:15.690 myVideoApp[1789:907] [MPAVController] Autoplay: Skipping autoplay, not enough buffered to keep up.

また、再生のためにこれらの通知を追加しようとしましたが、送信されません:

[[NSNotificationCenter defaultCenter]
 addObserver:self
 selector:@selector(playVideo:)
 name:MPMoviePlayerLoadStateDidChangeNotification
 object:self.myPlayer ];

そして、印刷self.myPlayer.loadStateする0と、未定義のloadStateが表示されます。
これらは、他のメソッドを使用した単純な viewController であり、.hファイル に次の宣言があります。@property (nonatomic, strong) MPMoviePlayerController *myPlayer;

私は iOS 6 で実行していますが、これらはデバイスとシミュレーターの両方で発生します

4

2 に答える 2

2
NSString *path = [[NSBundle mainBundle] pathForResource:@"ipad2" ofType:@"mp4"];

pathではないデバッガーをチェックインしましたnilか?

self.myPlayer = [[MPMoviePlayerController alloc] initWithContentURL:[NSURL URLWithString:path]];

これは、ファイル パスから URL を作成する間違った方法です。+[NSURL fileURLWithPath:]代わりに使用してください。

于 2013-01-09T19:56:31.080 に答える
0

また、MPMoviePlayerViewController を使用してアプリでビデオをライブ配信すると、上記のリストのエラーが発生します。また、MPMoviePlayer はビデオを表示するための大きなデータをサポートしていないことがわかりましたが、ビデオの小さなデータを使用しても問題なく動作し、エラーは発生しません。実際には、再生準備とムービー プレーヤーの再生プロパティの問題ではありません。

より大きなデータを表示する必要がある場合は、アプリで webview を使用します。

于 2013-03-25T13:07:17.147 に答える