0
NSString *p = [app getFilePathFor:name];
// Printing description of p:
// /Users/Jackson/Library/Application Support/iPhone Simulator/5.0/Applications/7FE97EDD-D080-4E5E-8EDD-3D9FFA8F6CF5/Documents/6681a4d7-8630-4a12-90c6-f95d72650a42

NSData *data = [NSData dataWithContentsOfFile:p];
// Printing description of data:
// <01401dc2 a15ebc27 e473ee79 316568ff 19dc7000 df3f7c5c dc206870 01a1c00e 00010000 00000000 00e10288 00000003 01060020 08c80038 00080000 88edffbf 02000119 0000050e 00000000 00000000 02000007 0000050f 00000000 00000000>

NSString *str = [[NSString alloc] initWithData:data encoding:NSASCIIStringEncoding];
// Printing description of str:
// @¡^¼'äsîy1ehÿÜp

path = [NSURL fileURLWithPath:str];
// Printing description of path:
// %01@%1D%C3%82%C2%A1%5E%C2%BC'%C3%A4s%C3%AEy1eh%C3%BF%19%C3%9Cp%00%C3%9F%3F%7C%5C%C3%9C%20hp%01%C2%A1%C3%80%0E%00%01%00%00%00%00%00%00%00%C3%A1%02%C2%88%00%00%00%03%01%06%00%20%08%C3%88%008%00%08%00%00%C2%88%C3%AD%C3%BF%C2%BF%02%00%01%19%00%00%05%0E%00%00%00%00%00%00%00%00%02%00%00%07%00%00%05%0F%00%00%00%00%00%00%00%00 -- file://localhost/

次に、MPMoviePlayerViewController へのパスを次のように送信します。

MPMoviePlayerViewController * playerController = [[MPMoviePlayerViewController alloc] initWithContentURL:path];

[self presentMoviePlayerViewControllerAnimated:(MPMoviePlayerViewController *)playerController];

playerController.moviePlayer.movieSourceType = MPMovieSourceTypeFile;
[playerController.moviePlayer play];
playerController=nil;

この時点で、ムービー プレーヤーが表示され、「表示」アニメーションが完了するとすぐに非表示になります。ログで私はこれを取得します:

An instance 0x87ca7b0 of class AVPlayerItem was deallocated while key value observers were still registered with it. Observation info was leaked, and may even become mistakenly attached to some other object. Set a breakpoint on NSKVODeallocateBreak to stop here in the debugger. Here's the current observation info:
<NSKeyValueObservationInfo 0x87dfc30> (
<NSKeyValueObservance 0x933c280: Observer: 0x93367d0, Key path: nonForcedSubtitleDisplayEnabled, Options: <New: YES, Old: NO, Prior: NO> Context: 0x0, Property: 0x933c630>
<NSKeyValueObservance 0x933c360: Observer: 0x93356b0, Key path: presentationSize, Options: <New: NO, Old: NO, Prior: NO> Context: 0x0, Property: 0x87b53b0>

次はどこに行けばいいのかわからない..助けて?

** 編集 **

私が再生しようとしている MP4 は、このバックバニー テスト クリップからのものです。クリップを URL の形式で直接ロードすると、機能します。しかし、ダウンロードして NSData 経由で保存し、NSData を再度開いてみると、これは機能しなくなります。

** 編集 2 **

@Till: 「文字化けした文字列で URL を初期化して// str=@"@¡^¼'äsîy1ehÿÜp" path = [NSURL fileURLWithPath:str];います。ここで何を期待していますか?」

だから今私が試した:

path = [NSURL fileURLWithPath:[app getFilePathFor:name]];
// Printing description of path:
// file://localhost/Users/Jackson/Library/Application%20Support/iPhone%20Simulator/5.0/Applications/CB1CA8D0-B5EC-4B5F-8C7F-0EF449508BA7/Documents/9d425856-14b0-4ad3-835a-970affacb05f

まだまったく同じエラーが発生します。

4

2 に答える 2

4

保存したクリップ ファイルから nsdata に変換するのはなぜですか?

アプリのドキュメント ディレクトリにクリップのパスをロードするだけです。

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *filePath = [documentsDirectory stringByAppendingPathComponent:name];

NSURL *fileURL = [NSURL fileURLWithPath:filePath isDirectory:NO];

yourMoviePlayer = [[MPMoviePlayerController alloc] initWithContentURL: fileURL];
于 2012-04-30T00:13:03.703 に答える
0

nil再生中に設定していることが原因だと思います。MPMoviePlayerViewController実際には、に設定しても、 はまだマテリアルをロードしているほど速く発生するようnilです。

于 2012-04-29T22:02:45.950 に答える