【问题标题】:Objective c - ios : How to pick video from Camera Roll?Objective c - ios:如何从相机胶卷中挑选视频?
【发布时间】:2015-09-02 03:24:05
【问题描述】:

我试试这个:

 UIImagePickerController *videoPicker = [[UIImagePickerController alloc] init];
videoPicker.delegate = self;
videoPicker.modalPresentationStyle = UIModalPresentationCurrentContext;
videoPicker.sourceType = UIImagePickerControllerSourceTypeSavedPhotosAlbum;
videoPicker.mediaTypes = @[(NSString*)kUTTypeMovie, (NSString*)kUTTypeAVIMovie, (NSString*)kUTTypeVideo, (NSString*)kUTTypeMPEG4];
videoPicker.videoQuality = UIImagePickerControllerQualityTypeHigh;
[self presentViewController:videoPicker animated:YES completion:nil];

但它只显示照片中的视频,而不是相机胶卷中的所有视频。 我想从相机胶卷中挑选所有视频。 请提供一些线索或代码来帮助我。 提前致谢!

【问题讨论】:

  • github.com/questbeat/QBImagePicker 可能对你有帮助
  • 设置媒体类型如videoPicker.mediaTypes =[UIImagePickerController availableMediaTypesForSourceType:UIImagePickerControllerSourceTypePhotoLibrary]; 并尝试执行你的代码。

标签: ios objective-c iphone xcode uiimagepickercontroller


【解决方案1】:

这是对上述答案的编译和清理以及更多详细信息。

(0) 确保您有这两个包含。

#import <UIKit/UIKit.h>
#import <MobileCoreServices/MobileCoreServices.h> // needed for video types

(1) 将两个委托添加到您的 .h 文件:UINavigationControllerDelegate 和 UIImagePickerControllerDelegate。对我们来说,它看起来像这样:

@interface ATHViewController () <UITabBarDelegate, UINavigationControllerDelegate,UIImagePickerControllerDelegate>

(2) 向用户展示他们库中的视频选择。将此代码添加到您的 .m 文件中的某处。

    // Present videos from which to choose
    UIImagePickerController *videoPicker = [[UIImagePickerController alloc] init];
    videoPicker.delegate = self; // ensure you set the delegate so when a video is chosen the right method can be called

    videoPicker.modalPresentationStyle = UIModalPresentationCurrentContext;
    // This code ensures only videos are shown to the end user
    videoPicker.mediaTypes = @[(NSString*)kUTTypeMovie, (NSString*)kUTTypeAVIMovie, (NSString*)kUTTypeVideo, (NSString*)kUTTypeMPEG4];

    videoPicker.videoQuality = UIImagePickerControllerQualityTypeHigh;
    [self presentViewController:videoPicker animated:YES completion:nil];

(3) 处理来自选择器的响应。将此代码添加到您的委托类。

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {

    // This is the NSURL of the video object
    NSURL *videoURL = [info objectForKey:UIImagePickerControllerMediaURL];

    NSLog(@"VideoURL = %@", videoURL);
    [picker dismissViewControllerAnimated:YES completion:NULL];
}

(4) 当用户取消选择任何内容时处理。

- (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker {
    [picker dismissViewControllerAnimated:YES completion:NULL];
}

【讨论】:

    【解决方案2】:

    请使用以下代码从 iOS 库中选择视频

    UIImagePickerController *videoPicker = [[UIImagePickerController alloc] init];
    videoPicker.delegate = self;
    videoPicker.modalPresentationStyle = UIModalPresentationCurrentContext;
    videoPicker.mediaTypes =[UIImagePickerController availableMediaTypesForSourceType:UIImagePickerControllerSourceTypePhotoLibrary];‌​
    videoPicker.mediaTypes = @[(NSString*)kUTTypeMovie, (NSString*)kUTTypeAVIMovie, (NSString*)kUTTypeVideo, (NSString*)kUTTypeMPEG4];
    videoPicker.videoQuality = UIImagePickerControllerQualityTypeHigh;
    [self presentViewController:videoPicker animated:YES completion:nil];
    

    请查看此链接Select video from gallery

    【讨论】:

    • #import 以消除此代码中的错误“未声明的标识符类型 kuTTypeAVIMovie”
    • 你不是在这里覆盖videoPicker.mediatypes的值吗? (您的第一个值被忽略。)您可以删除 videoPicker.mediaTypes 的第一个定义,此代码似乎仍然有效。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-26
    • 1970-01-01
    • 2011-11-22
    • 2013-03-23
    相关资源
    最近更新 更多