保存视频到自定义位置

来源:互联网 发布:手机淘宝退货退款金额 编辑:程序博客网 时间:2024/05/22 16:44
@implementationALAssetsLibrary (ZHExpand)
 
/**
 *  创建本地相册
 *
 *  @param name                        相册名称
 *  @param enumerateGroupsFailureBlock 遍历相册分组失败回调
 *  @param hasGroup                    本地已经存在该相册,请重新命名
 *  @param createSuccessedBlock        创建相册成功回调
 *  @param createFaieldBlock           创建相册失败回调
 */
- (void)zh_createAssetsGroupWithName:(NSString*)name
        enumerateGroupsFailureBlock:(void(^) (NSError*error))enumerateGroupsFailureBlock
                hasTheNewGroupBlock:(void(^) (ALAssetsGroup*group))hasGroup
               createSuccessedBlock:(void(^) (ALAssetsGroup*group))createSuccessedBlock
                  createFaieldBlock:(void(^) (NSError*error))createFaieldBlock
{
     
    __blockBOOLhasTheNewGroup = NO;
     
    [selfenumerateGroupsWithTypes:ALAssetsGroupAlbumusingBlock:^(ALAssetsGroup*group, BOOL*stop) {
         
        hasTheNewGroup = [name isEqualToString:[groupvalueForProperty:ALAssetsGroupPropertyName]];
        if(hasTheNewGroup) {
 
            [ZHBlockdispatchOnMainThread:^{
                 
                hasGroup(group);
            }];
            *stop = YES;
        }
        if(!group && !hasTheNewGroup && !*stop) {//遍历完毕,本地没有该文件夹,非手动停止的遍历
             
            [selfaddAssetsGroupAlbumWithName:nameresultBlock:^(ALAssetsGroup*agroup) {
                 
                [ZHBlockdispatchOnMainThread:^{
                     
                    createSuccessedBlock(agroup);
                }];
            }failureBlock:^(NSError*error) {
                 
                [ZHBlockdispatchOnMainThread:^{
                     
                    createFaieldBlock(error);
                }];
            }];
        }
    }failureBlock:^(NSError*error) {
         
        [ZHBlockdispatchOnMainThread:^{
             
            enumerateGroupsFailureBlock(error);
        }];
    }];
}
 
/**
 *  保存视频到指定相册(直接调用可保存到指定分组)
 *
 *  @param path             视频路径
 *  @param name             相册名称
 *  @param saveSuccessBlock 保存成功回调
 *  @param saveFaieldBlock  保存失败回调
 */
- (void)zh_saveVideoWithVideoPath:(NSString*)path
                         toAlbum:(NSString*)name
                saveSuccessBlock:(void(^) (ALAssetsGroup*group, NSURL*assetURL, ALAsset*asset))saveSuccessBlock
                 saveFaieldBlock:(void(^) (NSError*error))saveFaieldBlock
{
     
    [selfwriteVideoAtPathToSavedPhotosAlbum:[NSURLfileURLWithPath:path]completionBlock:^(NSURL*assetURL, NSError*error) {//先添加到公众相册
         
        if(error) {
            [ZHBlockdispatchOnMainThread:^{
                 
                saveFaieldBlock(error);
            }];
            return;
        }
         
        [selfzh_addVideoToAssetGroupWithAssetUrl:assetURLtoAlbum:nameaddSuccessBlock:^(ALAssetsGroup*targetGroup, NSURL*currentAssetUrl, ALAsset*currentAsset) {
             
            [ZHBlockdispatchOnMainThread:^{
                 
                saveSuccessBlock(targetGroup,currentAssetUrl,currentAsset);
            }];
        }addFaieldBlock:^(NSError*error) {
             
            [ZHBlockdispatchOnMainThread:^{
                 
                saveFaieldBlock(error);
            }];
        }];
    }];
}
 
/**
 *  添加相册视频到指定分组
 *
 *  @param assetURL        视频在相册的URL
 *  @param name            指定分组名称
 *  @param addSuccessBlock 添加成功回调
 *  @param addFaieldBlock  添加失败回调
 */
- (void)zh_addVideoToAssetGroupWithAssetUrl:(NSURL*)assetURL
                                   toAlbum:(NSString*)name
                           addSuccessBlock:(void(^) (ALAssetsGroup*targetGroup, NSURL*currentAssetUrl, ALAsset*currentAsset))addSuccessBlock
                            addFaieldBlock:(void(^) (NSError*error))addFaieldBlock
{
 
    [selfzh_createAssetsGroupWithName:nameenumerateGroupsFailureBlock:^(NSError*error) {
         
        if(error) {
            [ZHBlockdispatchOnMainThread:^{
                 
                addFaieldBlock(error);
            }];
            return;
        }
    }hasTheNewGroupBlock:^(ALAssetsGroup*group) {
         
        [selfassetForURL:assetURLresultBlock:^(ALAsset*asset) {//得到视频的ALAsset实例
             
            [groupaddAsset:asset];//添加视频到指定相册分组
            [ZHBlockdispatchOnMainThread:^{
                 
                addSuccessBlock(group,assetURL,asset);
            }];
        }failureBlock:^(NSError*error) {
             
            if(error) {
                [ZHBlockdispatchOnMainThread:^{
                     
                    addFaieldBlock(error);
                }];
                return;
            }
        }];
    }createSuccessedBlock:^(ALAssetsGroup*group) {
         
        [selfassetForURL:assetURLresultBlock:^(ALAsset*asset) {
             
            [groupaddAsset:asset];
            [ZHBlockdispatchOnMainThread:^{
                 
                addSuccessBlock(group,assetURL,asset);
            }];
        }failureBlock:^(NSError*error) {
             
            if(error) {
                [ZHBlockdispatchOnMainThread:^{
                     
                    addFaieldBlock(error);
                }];
                return;
            }
        }];
    }createFaieldBlock:^(NSError*error) {
         
        if(error) {
            [ZHBlockdispatchOnMainThread:^{
                 
                addFaieldBlock(error);
            }];
            return;
        }
    }];
}
0 0
原创粉丝点击