使用 AFnetworking 保存 mp4
Posted
技术标签:
【中文标题】使用 AFnetworking 保存 mp4【英文标题】:Using AFnetworking to save mp4 【发布时间】:2013-06-15 11:46:09 【问题描述】:我一直在使用 AFnetworking 从远程服务器下载视频。除了将文件下载为数据而不是原始格式(在本例中为 mp4)之外,它的效果很好。
有没有办法设置 AFnetworking 将文件下载为 mp4?在播放方面,每次播放视频时将数据文件转换回 mp4 似乎是浪费时间和资源。
我目前获取文件的代码如下:
NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:[URL url]]];
AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc]
initWithRequest:request];
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *path = [[paths objectAtIndex:0] stringByAppendingPathComponent:[URL title]];
operation.outputStream = [NSOutputStream outputStreamToFileAtPath:path append:NO];
[operation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject)
NSLog(@"Successfully downloaded file to %@", path);
URL.videolocal = @"YES";
[self saveToCoreData]; // video is not saved in core data, only a reference
failure:^(AFHTTPRequestOperation *operation, NSError *error)
NSLog(@"Error: %@", error);
];
[operation start];
【问题讨论】:
您确定远程服务器允许您下载文件吗?它是文件,还是只是一个流? 此代码将保存从服务器接收到的原始数据。如果来自服务器的数据不是 MP4 格式,那么您将需要将其转码为 MP4 以将其保存(重要)。如果来自服务器的数据是为 MP4 格式,那么您需要做的就是给本地文件一个.mp4
扩展名,然后就可以了。视频转码将远远超出 AFNetworking 的能力范围。
谢谢大家。我忘记添加扩展名了! ipmcc,如果你想把你的评论作为答案,我很乐意接受它:)
【参考方案1】:
如果来自服务器的数据已经是 MP4 格式,那么只需使用 .mp4
后缀命名文件。
【讨论】:
以上是关于使用 AFnetworking 保存 mp4的主要内容,如果未能解决你的问题,请参考以下文章
AFNetworking 2.0,使用 CoreData (MagicalRecord) 保存下载状态
iOS - 使用 AFNetworking 保存和持久化 JSON 结果的策略
AFNetworking 和 Swift - 保存 json 响应