使用 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) 保存下载状态

无法保存 AFNetworking 响应对象

iOS - 使用 AFNetworking 保存和持久化 JSON 结果的策略

AFNetworking 和 Swift - 保存 json 响应

AFNetworking + AFHTTPRequestOperation 无法保存数组

AFNetworking 3.0 GET 请求在 iOS 中保存到类中