您的位置:首页 > 理论基础 > 计算机网络

iOS视频下载遇到的问题(附上AFHTTPRequestOperation下载视频方法)

2015-07-23 17:05 501 查看
前言:

最近做即时聊天项目,涉及到视频的上传下载。AFNetworking上传图片和视频(支持多张图片上传)

在视频下载中遇到一些问题,视频下载后无法播放

1 视频下载方法

/**
 * 下载文件
 */
- (void)downloadFileURL:(NSString *)aUrl savePath:(NSString *)aSavePath fileName:(NSString *)aFileName tag:(NSInteger)aTag
{
    NSFileManager *fileManager = [NSFileManager defaultManager];
    
    //检查本地文件是否已存在
    NSString *fileName = [NSString stringWithFormat:@"%@/%@", aSavePath, aFileName];
    
    //检查附件是否存在
    if ([fileManager fileExistsAtPath:fileName]) {
        NSData *audioData = [NSData dataWithContentsOfFile:fileName];
        //...视频下载完毕操作
    }else{
        //创建附件存储目录
        if (![fileManager fileExistsAtPath:aSavePath]) {
            [fileManager createDirectoryAtPath:aSavePath withIntermediateDirectories:YES attributes:nil error:nil];
        }
        
        //下载附件
        NSURL *url = [[NSURL alloc] initWithString:aUrl];
        NSURLRequest *request = [NSURLRequest requestWithURL:url];
        
        AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc] initWithRequest:request];
        operation.inputStream   = [NSInputStream inputStreamWithURL:url];
        operation.outputStream  = [NSOutputStream outputStreamToFileAtPath:fileName append:NO];
        
        //下载进度控制
        /*
         [operation setDownloadProgressBlock:^(NSUInteger bytesRead, long long totalBytesRead, long long totalBytesExpectedToRead) {
         NSLog(@"is download:%f", (float)totalBytesRead/totalBytesExpectedToRead);
         }];
         */
        
        //已完成下载
        [operation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) {
            
            NSData *audioData = [NSData dataWithContentsOfFile:fileName];
            //设置下载数据到res字典对象中并用代理返回下载数据NSData
           //...视频下载完毕操作
            
        } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
            
            //下载失败
            //...视频下载失败操作
        }];
        
        [operation start];
    }
}


2 下载完视频后,文件没有加后缀.MP4 就会出现播放不了的情况,我的解决方法是,在上面的filename加一个后缀.mp4,播放就ok了。

3 在下载其他文件时,如图片,录音,并未发现不加后缀就不正常显示或播放问题,有了解的或做IM项目的欢迎找我交流。我的软件群
156747694
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: