MPMoviePlayerViewController play movie from Documents directory - objective-c

左心房为你撑大大i 提交于 2019-12-10 18:48:38

问题


I have subfolder called "Video" in Documents folder. And there is somevideo.mp4 file. I have full path to this file but MPMoviePlayerViewController doesn't want to play video from local. Here is code:

NSString *path = [[self getVideoFolderPath] stringByAppendingPathComponent:@"somevideo.mp4"];
NSURL *fURL = [NSURL fileURLWithPath:path];
MPMoviePlayerViewController *videoPlayerView = [[MPMoviePlayerViewController alloc] initWithContentURL:fURL];
[self presentMoviePlayerViewControllerAnimated:videoPlayerView];
[videoPlayerView.moviePlayer play];

It doesn't play. Appears white screen and nothing else. This code works with remote video, when i put URL to website with video file, but local doesn't play. How to get correct file path to video file?


回答1:


Are you using iOS prior to 4.3? If so, you need to do this

[videoPlayerView setContentURL: fURL];

Here is a snippet of code from where I play video from the documents folder. One of the things I would recommend is to avoid some of the autorelease objects. Especially on NSURL when you have viewcontrollers. I know it should be safe but I've never found it to be 100%

if ( [[NSFileManager defaultManager] fileExistsAtPath:fullpathVideoFile] == NO )
    {
    NSLog(@"No video file found");
    return self;
    }

playbackURL = [[NSURL alloc] initFileURLWithPath:fullpathVideoFile isDirectory:NO];

if ( playbackURL == nil )
    {
    NSLog(@"playbackURL == nil");
    return self;
    }

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(moviePlayerLoadedMovie:) name:@"MPMoviePlayerLoadStateDidChangeNotification" object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(moviePlayerStartedMovie:) name:@"MPMoviePlayerNowPlayingMovieDidChangeNotification" object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(moviePlayerFinishedMovie:) name:@"MPMoviePlayerPlaybackDidFinishNotification" object:nil];

[self setContentURL:playbackURL];

In my case, I created a subclass of MPMoviePlayerController (as I generally do with all view controllers) so the references to 'self' would be to the MPMoviePlayerController object instance




回答2:


Strange. The code you put seems to be correct. Make sure the path to the audio you are trying to retrieve isn't broken.



来源:https://stackoverflow.com/questions/7520437/mpmovieplayerviewcontroller-play-movie-from-documents-directory-objective-c

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!