前言:
最近做即时聊天项目,涉及到视频的上传下载。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
版权声明:本文为博主原创文章,未经博主允许不得转载。
时间: 2024-10-09 20:12:44