4

絶望的。みなさん、こんにちは!MPMoviePlayerControllerで問題が発生しています。NSBundleのビデオで動作するようにしました。しかし、それは私が必要としているものではありません。Documentsディレクトリから再生する必要があります。これは、録画したビデオを保存する場所であり、URLはCoreDataに保存されているためです。しかし、これは脇に置いておき、必要最小限にコードを単純化しましょう。このコードは、contentURLを使用している場合に実際に機能し、NSBundleにつながります。その後、ドキュメントの場所に到達するために私が行うこと。私がやること:

    NSURL *contentURL = [[NSBundle mainBundle] URLForResource:@"Oct_08_2012_10_00_51" withExtension:@"mp4"]; // this works
NSString* docPath = [NSSearchPathForDirectoriesInDomains
                     (NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
NSString * docaPathFull = [NSString stringWithFormat:@"%@%@", docPath, @"/Oct_08_2012_10_00_51.mp4"];
NSURL * docUrl= [NSURL URLWithString: docaPathFull];
BOOL ex = [[NSFileManager defaultManager] fileExistsAtPath:docaPathFull];
NSLog(@"file exists: %d, path using docPath: %@",ex, docaPathFull);
MPMoviePlayerController *player = [[MPMoviePlayerController alloc] initWithContentURL:docUrl];
player.shouldAutoplay = YES;
player.controlStyle = MPMovieControlStyleEmbedded;
[player.view setFrame: self.thumbButton.bounds];
[player prepareToPlay];
[self.view addSubview: player.view];
[player play];

私たちが持っているもの:

2012-10-08 13:14:43.532 Voto[11968:907] file exists: 1, path using docPath: /var/mobile/Applications/07B8574A-A3BA-4B23-BB3F-995B33A01B95/Documents/Oct_08_2012_10_00_51.mp4
2012-10-08 13:14:43.907 Voto[11968:907] content URL: file://localhost/var/mobile/Applications/07B8574A-A3BA-4B23-BB3F-995B33A01B95/Voto.app/Oct_08_2012_10_00_51.mp4
2012-10-08 13:14:44.265 Voto[11968:907] doc URL: /var/mobile/Applications/07B8574A-A3BA-4B23-BB3F-995B33A01B95/Documents/Oct_08_2012_10_00_51.mp4
2012-10-08 13:14:45.343 Voto[11968:907] [MPAVController] Autoplay: Disabling autoplay for pause
2012-10-08 13:14:45.344 Voto[11968:907] [MPAVController] Autoplay: Disabling autoplay
2012-10-08 13:14:46.518 Voto[11968:907] [MPAVController] Autoplay: Skipping autoplay, disabled (for current item: 1, on player: 0)
2012-10-08 13:14:46.540 Voto[11968:907] [MPAVController] Autoplay: Enabling autoplay
2012-10-08 13:14:46.554 Voto[11968:907] [MPAVController] Autoplay: Likely to keep up or full buffer: 0
2012-10-08 13:14:46.555 Voto[11968:907] [MPAVController] Autoplay: Skipping autoplay, not enough buffered to keep up.
2012-10-08 13:14:46.557 Voto[11968:907] [MPAVController] Autoplay: Enabling autoplay
2012-10-08 13:14:46.567 Voto[11968:907] [MPCloudAssetDownloadController] Prioritization requested for media item ID: 0
2012-10-08 13:14:46.871 Voto[11968:907] [MPAVController] Autoplay: Enabling autoplay

だから、ファイルは存在します...私が調べた質問:

MPMoviePlayerは、アプリドキュメントに保存されたムービーをロードして再生します

MPMoviePlayerControllerは、ドキュメントフォルダ内のムービーでは機能しません

MPMoviePlayerViewControllerドキュメントディレクトリからムービーを再生-objective-c

また、クラス参照を使用してutをチェックしましたが、ドキュメントからの再生については特に何もありません。私のプロジェクト設定:最新のiOS 6を使用し、iOS6iPhoneシミュレーターとiOS6を搭載したiPadの両方で展開ターゲット5.0をテストします。何かを追加するのを忘れた場合は、すぐに実行します。

助けてください!:)

4

3 に答える 3

20

ファイルのURLを正しい方法で作成していない場合は、次のようにする必要があります。

NSString *docPath = [NSSearchPathForDirectoriesInDomains
                     (NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
NSString *docaPathFull = [docPath stringByAppendingPathComponent:@"/Oct_08_2012_10_00_51.mp4"];
NSURL *docUrl= [NSURL fileURLWithPath:docaPathFull];

;のstringByAppendingPathComponentメソッドを使用して、ディレクトリとファイルをパスに追加する必要があります。また、で使用するNSStringファイルURLを作成する場合、これにより、指定するパスの正しいNSURLが作成されます。fileURLWithPath:NSURL

于 2012-10-08T10:28:03.717 に答える
10

誰もが行う最も一般的な間違いは、すべての使用です

NSURL *fileURL = [NSURL URLWithString:mVidPath];
                        ^^^^^^^^^^^^^

それ以外の

NSURL *fileURL = [NSURL fileURLWithPath:mVidPath];
                        ^^^^^^^^^^^^^^^
于 2014-03-26T12:52:26.710 に答える
0
-(IBAction)playVideo
{
NSURL *vedioURL;
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSArray *filePathsArray = [[NSFileManager defaultManager] subpathsOfDirectoryAtPath:documentsDirectory  error:nil];
NSLog(@"files array %@", filePathsArray);        
NSString *fullpath;
for ( NSString *apath in filePathsArray )
{
    fullpath = [documentsDirectory stringByAppendingPathComponent:apath];       
    vedioURL =[NSURL fileURLWithPath:fullpath];
}
NSLog(@"vurl %@",vedioURL);
MPMoviePlayerViewController *player = [[MPMoviePlayerViewController alloc] initWithContentURL:vedioURL];
[player.view setFrame: self.view.bounds];
[player.moviePlayer prepareToPlay];
[self.view addSubview:player.view];
player.moviePlayer.controlStyle = MPMovieControlStyleDefault;
player.moviePlayer.shouldAutoplay = YES;
[player.moviePlayer setFullscreen:YES animated:YES];
[player.moviePlayer play];
[self presentMoviePlayerViewControllerAnimated: player];
}

それぞれのコードにMediaPlayer.frameworkと#import<MediaPlayer/MediaPlayer.h>を追加することを忘れないでください。幸運を!!!

于 2013-10-29T11:11:46.700 に答える