Ios 在UIImagePicker和UISaveVideoAtPathToSavedPhotosAlbum之后查找mediaPath

Ios 在UIImagePicker和UISaveVideoAtPathToSavedPhotosAlbum之后查找mediaPath,ios,cocoa-touch,uiimagepickercontroller,mpmovieplayercontroller,Ios,Cocoa Touch,Uiimagepickercontroller,Mpmovieplayercontroller,我有一个图像选择器,在那里我可以选择一部电影(可以编辑)。然后我抓取一个缩略图使用 UIImage *tempImage = [moviePlayerThumb thumbnailImageAtTime:1.0 timeOption:MPMovieTimeOptionNearestKeyFrame]; 这项工作很好,我可以显示在另一种方法没有问题的图像。我还存储了视频数据,以便以后上传 [mediaDict setValue:[NSData dataWithContentsOfFile:med

我有一个图像选择器,在那里我可以选择一部电影(可以编辑)。然后我抓取一个缩略图使用

UIImage *tempImage = [moviePlayerThumb thumbnailImageAtTime:1.0 timeOption:MPMovieTimeOptionNearestKeyFrame];
这项工作很好,我可以显示在另一种方法没有问题的图像。我还存储了视频数据,以便以后上传

[mediaDict setValue:[NSData dataWithContentsOfFile:mediaPath] forKey:@"data"];
这也可以在上传文件后从服务器播放时正常工作

我最后存储的东西是URL和路径,然而,当我稍后将它们放在播放器中时,我会被播放器说“加载”(加上spinny东西)所困扰

我认为这是因为剪辑后的选择器将视频存储在临时目录中(当我稍后播放文件时),该目录已被清空

路径是这样的

file://localhost/private/var/mobile/Applications/B26A085A-C471-4972-9070-5A3F8DC48449/tmp//trim.ttCbAg.MOV
    NSString *mediaPath = [[info objectForKey:UIImagePickerControllerMediaURL] path];

    NSURL *mediaURL=[info objectForKey:UIImagePickerControllerMediaURL];
    if (UIVideoAtPathIsCompatibleWithSavedPhotosAlbum (mediaPath))
    {
        UISaveVideoAtPathToSavedPhotosAlbum (mediaPath, nil, nil, nil);
    }
我试着让拾音器像这样永久地存储视频

file://localhost/private/var/mobile/Applications/B26A085A-C471-4972-9070-5A3F8DC48449/tmp//trim.ttCbAg.MOV
    NSString *mediaPath = [[info objectForKey:UIImagePickerControllerMediaURL] path];

    NSURL *mediaURL=[info objectForKey:UIImagePickerControllerMediaURL];
    if (UIVideoAtPathIsCompatibleWithSavedPhotosAlbum (mediaPath))
    {
        UISaveVideoAtPathToSavedPhotosAlbum (mediaPath, nil, nil, nil);
    }
我知道这是可行的,因为我的相册中慢慢填满了我的视频编辑版本。问题是在使用UISaveVideo方法之后,如何找到文件的路径

玩家记录这个

[MPAVController] Autoplay: Disabling autoplay for pause
[MPAVController] Autoplay: Disabling autoplay
[MPAVController] Autoplay: Disabling autoplay for pause
[MPAVController] Autoplay: Disabling autoplay
[MPAVController] Autoplay: Skipping autoplay, disabled (for current item: 1, on player: 0)
[MPAVController] Autoplay: Enabling autoplay
播放器代码如下所示(我尝试使用mediaPath和mediaURL)

以及国家统计日志

Media Path, URL : file://localhost/private/var/mobile/Applications/B26A085A-C471-4972-9070-5A3F8DC48449/tmp//trim.ttCbAg.MOV, file://localhost/private/var/mobile/Applications/B26A085A-C471-4972-9070-5A3F8DC48449/tmp//trim.ttCbAg.MOV

非常感谢您的帮助。

您可以更好地将文件移动到您控制的临时文件位置:

NSString *tempFileName = [[NSUUID UUID] UUIDString];
NSURL *location = [[NSURL fileURLWithPath:NSTemporaryDirectory()] URLByAppendingPathComponent:tempFileName];

[[NSFileManager new] moveItemAtURL:tempMovieURL toURL:location error:nil];

我在另一个项目中也做了同样的工作,以下代码在嵌入式模式和全屏模式下都可以工作:

_movieController = [[MPMoviePlayerController alloc] initWithContentURL:self.movieURL];
_movieController.view.frame = self.view.bounds;
_movieController.controlStyle = MPMovieControlStyleEmbedded;
_movieController.backgroundView.hidden = YES;
_movieController.contentURL = self.movieURL;
[_movieController prepareToPlay];
_movieController.scalingMode = MPMovieScalingModeAspectFit;
_movieController.view.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
_movieController.shouldAutoplay=YES;
_movieController.movieSourceType = MPMovieSourceTypeFile;
[self.view addSubview:_movieController.view];

哦,我在.h@属性(非原子,强)MPMoviePlayerController*moviePlayer中也有这个;谢谢你的评论。这在电影被移动的意义上起了作用(我喜欢这个版本,因为另一种方式填满了相册)。问题是当我去玩它时,它仍然会说“加载…”。在开始使用UIVideoAtPathIsCompatibleSavedPhotosAlbum([tempMediaURL路径])之前,我甚至做了一个测试,结果很好。我把我的球员安排好了吗?我担心比赛的底线(如果球员是0);自动播放:跳过自动播放,禁用(对于当前项目:1,在播放器:0上)@RecycledSteel:查看我的其他答案一个可能的解决方案。对此也投了赞成票,因为这比相册中满是经过编辑的电影和图片要好得多(如果像我一样,你对编辑做了一些事情,不再需要它)。是的,现在以一种迂回的方式计算它,这段代码工作得很好,但是,我明白了为什么我的代码不工作了!在实现您的代码并添加@syntherize for\u movieController时,我注意到我的moviePlayer不在那里,没有错误,因为(正如您从我的代码中看到的)我再次定义了它!非常感谢!