5

我的应用程序的一个功能是下载一个 mp4 文件并将其存储到本地手机相册。

从那以后我尝试了几种方法,结果总是一样的,它在模拟器上有效,但在实际 iPhone 上无效。Xcode 是 5.0.1 版,iPhone 4。

下面是我在使用 ASIHttpRequest 库发布之前在此处发布的最后一次尝试中应用的代码,结果仍然相同,它在模拟器上运行,但在手机本身上运行。

  1. 下载:

    ASIHTTPRequest* request = [ASIHTTPRequest requestWithURL:url]; // url is the address to the mp4 file
    
    NSString* filePath = [NSString stringWithFormat:@"%@%@", NSTemporaryDirectory(), filename]; //filename is the file I save to, e.g. xxx.mp4
    
    [request setDownloadDestinationPath:filePath];
    [request setDelegate:self];
    [request setDidFinishSelector:@selector[ASIRequestDone:)];
    [request setDidFailSelector:@select[ASIRequestFail:)];
    
  2. 下载完成后,保存到相册(在ASIRequestDone委托中)

    if (UIVideoAtPathIsCompatibleWithSavedPhotosAlbum(filePath))
    {
        //comes to here when running in simulators
        UISaveVideoAtPathToSavedPhotosAlbum(filePath, self, @selector(video:didFinishSavingWithError:cotextInfo:),nil);
    } 
    else 
    {
        //always comes to here when running on the actual iPhone.
    }
    

我已经检查了 pathFile 是这个

/private/var/mobile/Applications/xxxxxxxxxx/tmp/xxxxx.mp4

这对我来说没问题。我没有得到的是它在模拟器上运行时运行良好,因此我不知道下一步该做什么。(我还检查了访问相册的权限,是的,该应用程序拥有它)。

我还尝试删除兼容检查并直接进入该方法UISaveVideoAtPathToSavedPhotosAlbum,它没有在委托上抛出任何错误didFinishSavingWithError。但是,视频也没有显示在相册中,我猜这是正确的,因为手机似乎说视频不兼容显示在相册中。同样,我的问题是它确实在模拟器上工作,我如何在实际的 iphone 上解决这个问题,例如为什么它认为视频不兼容?是与 mp4 本身有关,还是与下载步骤有关?接下来我可以做些什么来解决这个问题?(ps。我也可以控制mp4文件,有没有你知道的iphone上的mp4兼容性列表?我在想也许是真的文件在手机上不兼容(但在模拟器上!?))

4

1 回答 1

5

找到了我的问题的答案,我希望它可以帮助遇到同样问题的人。事实证明,在将视频存储到画廊时,视频分辨率是模拟器和实际手机之间的因素;再具体一点:

兼容性检查 UIVideoAtPathIsCompatibleWithSavedPhotosAlbum 在实际手机上会失败,但在模拟器上会通过给定示例剪辑 capturrd 为 1080p。在我发帖一周后,我很幸运地通过了这个链接。

资产库兼容哪些视频格式?

我做了类似的实验,而是通过捕获 720p 视频剪辑,所有文件都可以保存到图库中。奇怪的是,实际的 iphone 可以播放 1080p 的 HLS 流;但是,除非它们是 720p,否则它不会存储剪辑,无论如何对我来说都不是。令人误解的是,模拟器实际上可以做到 1080p。

于 2014-06-20T20:21:43.050 回答