UIImagePickerControllerSourceTypePhotoLibrary "decoder busy" 选择视频时出错
UIImagePickerControllerSourceTypePhotoLibrary "decoder busy" error when picking video
我遇到的问题是从库中挑选了几个视频后(一个接一个),视频播放器(UIImagePickerController)的预览栏是黑色的(但可以播放)。
选择文件后imagePickerController:didFinishPickingMediaWithInfo: 在没有 UIImagePickerControllerMediaURL 的情况下被调用。在这发生一次之后,每次打开 UIImagePickerController 时都会发生。为了能够再次选择一部新电影,有时重启应用程序就足够了。有时 phone 甚至必须重新启动(或者我只是不耐烦)。
我发现了这个问题:AVPlayerItem fails with AVStatusFailed and error code "Cannot Decode"。我相信它具有相同的背景,但我不知道在这种情况下如何解决问题。在应用程序内部,视频播放效果完美。
显示和关闭 UIImagePickerController 的代码如下。
- (IBAction)openVideoLibrary:(id)sender {
if (_allowVideoSelection) {
if([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypePhotoLibrary] == NO || ![[UIImagePickerController availableMediaTypesForSourceType:UIImagePickerControllerSourceTypePhotoLibrary] containsObject:(NSString*)kUTTypeMovie]) {
return;
}
UIImagePickerController *pickerController = [[UIImagePickerController alloc] init];
[pickerController setSourceType:UIImagePickerControllerSourceTypePhotoLibrary];
pickerController.mediaTypes = [[NSArray alloc] initWithObjects:(NSString*)kUTTypeMovie, nil];
[pickerController setEditing:NO];
[pickerController setDelegate:self];
[self presentViewController:pickerController animated:YES completion:nil];
}
}
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {
NSLog(@"info: %@", info);
if (picker.sourceType == UIImagePickerControllerSourceTypePhotoLibrary) {
[picker dismissViewControllerAnimated:YES completion:^{
if (![info valueForKey:UIImagePickerControllerMediaURL]) {
NSLog(@"Error: No media URL");
return;
}
else {
NSLog(@"Yey media");
}
}];
}
}
有没有关于 better/cleaner 依次选择多个媒体文件的方法?拾取选项在多个阶段集成在工作流程中,因此无法一起拾取图像。
只有一定数量的AVPlayer可以运行并行。如果包含 AVPlayer 属性 的 UIViewController 被关闭,则 AVPlayer 不会自动释放并保持活动状态,直到 iOS 在后台将其杀死。如果在不设置 AVPlayerLayer.player = nil 的情况下重复分配 AVPlayer,在某一时刻 iOS 不允许实例化另一个 AVPlayer。出现错误:"AVPlayerItem fails with AVStatusFailed and error code "无法解码”。
我遇到的问题是从库中挑选了几个视频后(一个接一个),视频播放器(UIImagePickerController)的预览栏是黑色的(但可以播放)。
选择文件后imagePickerController:didFinishPickingMediaWithInfo: 在没有 UIImagePickerControllerMediaURL 的情况下被调用。在这发生一次之后,每次打开 UIImagePickerController 时都会发生。为了能够再次选择一部新电影,有时重启应用程序就足够了。有时 phone 甚至必须重新启动(或者我只是不耐烦)。
我发现了这个问题:AVPlayerItem fails with AVStatusFailed and error code "Cannot Decode"。我相信它具有相同的背景,但我不知道在这种情况下如何解决问题。在应用程序内部,视频播放效果完美。
显示和关闭 UIImagePickerController 的代码如下。
- (IBAction)openVideoLibrary:(id)sender {
if (_allowVideoSelection) {
if([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypePhotoLibrary] == NO || ![[UIImagePickerController availableMediaTypesForSourceType:UIImagePickerControllerSourceTypePhotoLibrary] containsObject:(NSString*)kUTTypeMovie]) {
return;
}
UIImagePickerController *pickerController = [[UIImagePickerController alloc] init];
[pickerController setSourceType:UIImagePickerControllerSourceTypePhotoLibrary];
pickerController.mediaTypes = [[NSArray alloc] initWithObjects:(NSString*)kUTTypeMovie, nil];
[pickerController setEditing:NO];
[pickerController setDelegate:self];
[self presentViewController:pickerController animated:YES completion:nil];
}
}
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {
NSLog(@"info: %@", info);
if (picker.sourceType == UIImagePickerControllerSourceTypePhotoLibrary) {
[picker dismissViewControllerAnimated:YES completion:^{
if (![info valueForKey:UIImagePickerControllerMediaURL]) {
NSLog(@"Error: No media URL");
return;
}
else {
NSLog(@"Yey media");
}
}];
}
}
有没有关于 better/cleaner 依次选择多个媒体文件的方法?拾取选项在多个阶段集成在工作流程中,因此无法一起拾取图像。
只有一定数量的AVPlayer可以运行并行。如果包含 AVPlayer 属性 的 UIViewController 被关闭,则 AVPlayer 不会自动释放并保持活动状态,直到 iOS 在后台将其杀死。如果在不设置 AVPlayerLayer.player = nil 的情况下重复分配 AVPlayer,在某一时刻 iOS 不允许实例化另一个 AVPlayer。出现错误:"AVPlayerItem fails with AVStatusFailed and error code "无法解码”。