【发布时间】:2015-03-10 04:09:33
【问题描述】:
我正在尝试使用 MPMoviePlayerController 播放本地保存的视频,但它不起作用。
这是我的来源:
self.moviePlayer = [[MPMoviePlayerController alloc] initWithContentURL:url];
[self.moviePlayer prepareToPlay];
CGRect frame = self.movieView.frame;
frame.origin = CGPointZero;
self.moviePlayer.view.frame = frame;
self.moviePlayer.allowsAirPlay = NO;
self.moviePlayer.shouldAutoplay = NO;
self.moviePlayer.movieSourceType = MPMovieSourceTypeFile;
self.moviePlayer.scalingMode = MPMovieScalingModeAspectFit;
self.moviePlayer.controlStyle = MPMovieControlStyleEmbedded;
self.moviePlayer.view.autoresizingMask = UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth;
[self.movieView addSubview:self.moviePlayer.view];
当我有一个类似“assets-library://asset/asset.MOV?id=2C7D89F6-2211-4920-A842-30D773B075D6&ext=MOV”的网址时,它确实工作,但是当我有像“file:///var/mobile/Media/DCIM/101APPLE/IMG_1454.mp4”这样的 URL 不起作用。
我正在使用下面的代码来获取用户的最新视频并在播放器中播放:
- (void)mostRecentVideo:(void (^)(NSURL *url))completion
{
PHFetchOptions *fetchOptions = [[PHFetchOptions alloc] init];
fetchOptions.sortDescriptors = @[[NSSortDescriptor sortDescriptorWithKey:@"creationDate" ascending:YES]];
PHFetchResult *fetchResult = [PHAsset fetchAssetsWithMediaType:PHAssetMediaTypeVideo options:fetchOptions];
PHAsset *lastAsset = [fetchResult lastObject];
PHVideoRequestOptions *options = [PHVideoRequestOptions new];
options.deliveryMode = PHVideoRequestOptionsDeliveryModeMediumQualityFormat;
[[PHImageManager defaultManager] requestAVAssetForVideo:lastAsset options:options resultHandler:^(AVAsset *asset, AVAudioMix *audioMix, NSDictionary *info) {
if ([asset isKindOfClass:[AVURLAsset class]])
completion(((AVURLAsset *)asset).URL);
}];
}
【问题讨论】:
-
你是如何在 self.moviePlayer = [[MPMoviePlayerController alloc] initWithContentURL:url] 中得到 url 的;
-
mostRecentVideo函数是我弄到的,第一次用UIImagePickerController弄到
-
不起作用是什么意思?什么行为?
-
@gabbler 基本上没有显示视频。它只是显示黑屏,或保留最后一个视频
标签: ios xcode mpmovieplayercontroller alassetslibrary