UIImagePickerController

UIImagePickerController

我正在构建一个iOS应用,该应用允许用户通过记录或从“相机胶卷”中选择视频来从UIImagePickerController上传视频,以及播放所选视频。我的问题是,我该如何继续参考以这种方式选择的视频?我想这样做,以便如果设备上仍然存在视频,我可以使用本地文件,而不是流式传输上传的文件。

什么时候

 imagePickerController:didFinishPickingMediaWithInfo:

返回,URL在:
 [info objectForKey:UIImagePickerControllerMediaURL];

格式为:“file:// localhost / private / var / mobile / Applications / /tmp//trim.z2vLjx.MOV”

我认为“/ tmp /”目录是临时的,因此不适合保存该位置的URL。

我可以通过ALAssetsLibrary在设备上获取所有视频,但是由于我无法区分它们,所以这对我没有帮助。我一直在尝试使用:
[result valueForProperty:ALAssetPropertyDate];

为了区分视频,但我需要一种从UIImagePickerController获取创建日期的方法,以使其有用。

最佳答案

我终于设法找到一个解决方案:

-(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
NSString* mediaType = [info objectForKey:UIImagePickerControllerMediaType];

if(CFStringCompare((CFStringRef) mediaType,  kUTTypeMovie, 0) == kCFCompareEqualTo)
{
    //Dismiss the media picker view
    [picker dismissModalViewControllerAnimated:YES];

    //Get the URL of the chosen content, then get the data from that URL
    NSURL *videoURL = [info objectForKey:UIImagePickerControllerMediaURL];
    NSData *webData = [NSData dataWithContentsOfURL:videoURL];

    //Gets the path for the URL, to allow it to be saved to the camera roll
    NSString *moviePath = [[info objectForKey:UIImagePickerControllerMediaURL] path];
    if (UIVideoAtPathIsCompatibleWithSavedPhotosAlbum (moviePath))
    {
        ALAssetsLibrary *lib = [[ALAssetsLibrary alloc] init];

        //The key UIImagePickerControllerReferenceURL allows you to get an ALAsset, which then allows you to get metadata (such as the date the media was created)
        [lib assetForURL:[info objectForKey:UIImagePickerControllerReferenceURL] resultBlock:^(ALAsset *asset) {
            NSLog(@"created: %@", [asset valueForProperty:ALAssetPropertyDate]);
        } failureBlock:^(NSError *error) {
            NSLog(@"error: %@", error);
        }];
    }
}

通常,通过更彻底地阅读文档来找到解决方案。希望这会在某些时候帮助别人。

关于ios - 如何跟踪UIImagePickerController创建/选择的媒体?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8474058/

10-13 04:00