【问题标题】:iOS: How do i prevent temporary files VisibilityiOS:如何防止临时文件可见性
【发布时间】:2013-03-21 03:58:05
【问题描述】:

我正在开发一个从静止图像生成临时视频的应用程序。但我不希望用户查看我生成的临时文件。但是当应用程序生成视频文件的那一刻,视频被相机胶卷列出。

我的问题是如何生成无法访问“相机胶卷、iTunes 和 iCloud”的临时媒体文件?

请帮助我。提前致谢。

代码:

[assetWriter finishWritingWithCompletionHandler:^
     { 
         NSURL *url = _outMovieURL; ALAssetsLibrary *library = [[ALAssetsLibrary alloc] init];
         [library writeVideoAtPathToSavedPhotosAlbum:url 
                                     completionBlock:^(NSURL *assetURL, NSError *error) 
                                     { 
                                         NSLog(@"Done!"); 
                                     }]; 
     }];

【问题讨论】:

  • 你在写什么目录?如果你写到相机胶卷,那么它会在哪里。如果你写到一个临时目录,你就不会有这个问题。
  • NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString *documentsDirectory = [paths objectAtIndex:0]; NSString *path = [documentsDirectory stringByAppendingPathComponent:@"MyFirstDownloadmp4.mp4"];
  • 我正在使用上面的代码来创建网址

标签: iphone ios ipad ios5 ios6


【解决方案1】:

这个块:

 [assetWriter finishWritingWithCompletionHandler:^
 { 
     NSURL *url = _outMovieURL; ALAssetsLibrary *library = [[ALAssetsLibrary alloc] init];
     [library writeVideoAtPathToSavedPhotosAlbum:url 
                                 completionBlock:^(NSURL *assetURL, NSError *error) 
                                 { 
                                     NSLog(@"Done!"); 
                                 }]; 
 }];

是在相机胶卷中写入文件。因此,在您只创建临时视频时不要使用它。将临时视频文件写入documentDirectory,(或者它可能已经在documentDirectory 中,当您创建它时,您需要做的就是不要使用此代码将该文件写入相机胶卷)。

【讨论】:

    【解决方案2】:

    您应该使用NSTemporaryDirectory() 并在末尾为任何临时文件附加您自己的词缀。该目录中的文件将由操作系统清理,或者您可以在完成后立即删除。

    【讨论】:

    • path = [NSString stringWithFormat:@"%@/%llu.mov", NSTemporaryDirectory(), mach_absolute_time()];我已经尝试过了,但视频在相机胶卷中可见
    • @user1713827 这不太可能,您可以将代码发布到您实际使用生成的路径的位置吗?或者您是否安装了任何可能改变相机胶卷行为的越狱调整?
    • [assetWriter finishWritingWithCompletionHandler:^{ NSURL *url = _outMovieURL; ALAssetsLibrary *library = [[ALAssetsLibrary alloc] init]; [library writeVideoAtPathToSavedPhotosAlbum:url completionBlock:^(NSURL *assetURL, NSError *error) { NSLog(@"Done!"); }]; }];
    • @user1713827 我假设您正在使用 _outMovieURL 初始化 AVAssetWriter 对吗?如果您不在完成块中使用 ALAssetsLibrary 调用,则相机胶卷中不会出现任何内容。或者您的问题是视频在您开始创作时出现,而不是在您全部完成之后?
    猜你喜欢
    • 1970-01-01
    • 2010-10-19
    • 2023-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多