ios - Objective-C 中的渐进式下载和视频播放

标签 ios objective-c video-streaming afnetworking progressive-download

有没有办法在 Objective-C 中下载视频时播放它?我正在尝试使用 AFNetworking 设置渐进式下载,因为我希望进程是异步的,这样我就不会卡住 UI,而且我需要一些凭据才能访问该文件。但是任何其他不涉及 AFNetworking 的解决方案也可以。

这是我正在处理的代码。我想在视频完全加载之前启动视频播放,但我坚持这样一个事实,即在下载完成之前响应对象不可用。

NSMutableURLRequest *request = [[AFHTTPRequestSerializer serializer] multipartFormRequestWithMethod:@"POST" URLString:url parameters:nil constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {

    [formData appendPartWithFormData:[pwd dataUsingEncoding:NSUTF8StringEncoding] name:@"password"];
    [formData appendPartWithFormData:[user_id dataUsingEncoding:NSUTF8StringEncoding] name:@"userid"];

} error:nil];

AFURLSessionManager *manager = [[AFURLSessionManager alloc] initWithSessionConfiguration:[NSURLSessionConfiguration defaultSessionConfiguration]];
manager.responseSerializer = [AFHTTPResponseSerializer serializer];

NSURLSessionUploadTask *uploadTask = [manager uploadTaskWithStreamedRequest:request progress:^(NSProgress * _Nonnull uploadProgress) {
    dispatch_async(dispatch_get_main_queue(), ^{
        NSLog(@"Fraction completed: %f", uploadProgress.fractionCompleted);
    });

} completionHandler:^(NSURLResponse * _Nonnull response, id  _Nullable responseObject, NSError * _Nullable error) {

    // Here I save the responseObject to the drive and convert it to an AVPlayer asset for playing

}];
[uploadTask resume];

最佳答案

为此,您可以尝试使用 AVPlayer 的资源加载器。

资源加载器将使您能够控制 AVPlayer 用来播放视频的数据。

这样,您将继续在资源加载器的委托(delegate)中接收数据,资源加载器将向 avplayer 提供相同的数据以播放视频。一次网络通话,您就可以流式传输视频并下载视频。

关于ios - Objective-C 中的渐进式下载和视频播放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42954792/

相关文章:

iphone - 为 CLLocationManger 区域画一个圆圈

ios - 在 Swift 中的 View Controller 之间传递数据不起作用

OpenCV - 在版本 3.4 中使用 FFMPEG 通过 RTSP 流式传输 H264

c - 如何从一系列位图创建视频流并通过 IP 网络发送?

Android RTSP 流式传输失败

ios - Cocoapods init for ios 7。如何更新?

iphone - 当用户旋转到横向时全屏播放视频,然后在视频停止时以编程方式旋转回来

ios - 需要有关自动布局的帮助

ios - Objective-C - 理解 View Controller

objective-c - 在 Cocoa 的标题栏中隐藏按钮