You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用AVCaptureSession录制视频如何免拷贝直接存入iOS系统相册

解决方案

可以实现,使用iOS原生的PhotoKit框架即可直接将沙盒内的视频文件移动到系统相册,无需生成额外拷贝,也就不需要预留两倍视频大小的存储空间。

前置要求

  • 应用适配iOS 9.0及以上系统版本
  • 先在Info.plist中添加NSPhotoLibraryAddUsageDescription权限声明,获取用户相册写入授权后再执行保存操作

核心逻辑

旧接口UISaveVideoAtPathToSavedPhotosAlbum(:::)内部默认执行文件拷贝逻辑,会生成一份完整的视频副本写入相册。而PhotoKit提供的PHAssetCreationRequest支持移动文件选项,会直接修改文件系统的文件映射关系,将沙盒内的视频文件转移到相册目录,全程无额外数据拷贝,操作完成后原沙盒路径的文件会被系统自动清理。

代码示例

Swift版本

import Photos

// 替换为你录制好的视频在沙盒内的本地路径
let videoLocalURL = URL(fileURLWithPath: "your_video_sandbox_path")

PHPhotoLibrary.shared().performChanges {
    let createRequest = PHAssetCreationRequest.forAsset()
    let resourceOptions = PHAssetResourceCreationOptions()
    // 开启移动文件开关,核心配置
    resourceOptions.isMoveFile = true
    createRequest.addResource(with: .video, fileURL: videoLocalURL, options: resourceOptions)
} completionHandler: { isSuccess, error in
    if isSuccess {
        // 保存成功,原沙盒路径的视频已被系统自动删除
    } else {
        // 保存失败,可通过error判断具体原因:权限不足/空间不足/格式不支持等
        print("保存视频失败: \(error?.localizedDescription ?? "未知错误")")
    }
}

Objective-C版本

#import <Photos/Photos.h>

// 替换为你录制好的视频在沙盒内的本地路径
NSURL *videoLocalUrl = [NSURL fileURLWithPath:@"your_video_sandbox_path"];

[[PHPhotoLibrary sharedPhotoLibrary] performChanges:^{
    PHAssetCreationRequest *createRequest = [PHAssetCreationRequest creationRequestForAsset];
    PHAssetResourceCreationOptions *resourceOptions = [[PHAssetResourceCreationOptions alloc] init];
    // 开启移动文件开关,核心配置
    resourceOptions.moveFile = YES;
    [createRequest addResourceWithType:PHAssetResourceTypeVideo fileURL:videoLocalUrl options:resourceOptions];
} completionHandler:^(BOOL isSuccess, NSError * _Nullable error) {
    if (isSuccess) {
        // 保存成功,原沙盒路径的视频已被系统自动删除
    } else {
        // 保存失败,可通过error判断具体原因
        NSLog(@"保存视频失败: %@", error.localizedDescription);
    }
}];

注意事项

  • 仅当视频文件和相册存储在同一个磁盘分区时才会执行移动操作,iOS设备默认满足该条件,无需额外处理
  • 保存成功后不要手动删除原沙盒路径的文件,系统会自动完成清理
  • 如果保存失败,原沙盒路径的视频文件会被保留,你可以自行决定重试或者删除

内容的提问来源于stack exchange,提问作者odyth

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 10:39:04