使用AFNetworking将从一台服务器下载的视频卡盘上传到另一台服务器

时间:2015-09-25 05:47:06

标签: ios iphone upload streaming afnetworking

我正在创建一个应用程序,将数据从眼镜传输到服务器进行广播。 直到现在我能够从眼镜下载数据到我的iPhone文档目录。 现在我想将下载的数据上传到我的服务器,以便我们可以将这些数据广播给我们的用户。

我的iPhone和眼镜在WiFi的帮助下相互连接,我正在尝试通过蜂窝网络上传下载的数据。

所以基本上我的概念是从眼镜下载数据并将其上传到服务器。

我已经尝试将我的iPhone作为服务器,我的后端团队可以从我的iPhone下载数据。

我在这个方法上取得了成功,但问题是,对于这个过程,客户端和服务器应该在相同的私有ip网络上。

所以现在我们只剩下一种方式从眼镜下载TS卡盘,同时将TS文件上传到我们的服务器进行广播。

我正在使用NFNetworking从眼镜下载视频卡盘" TS File"但无法将该卡盘上传到我的服务器。

NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://xxx.xx.xx.x/abc/trunk/WebServices/app/webroot/xyz"]];
        AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc] initWithRequest:request] ; 



operation.outputStream = [NSOutputStream outputStreamWithURL:[NSURL URLWithString:@"http://abc.aa.a.a/xyz/trunk/WebServices/app/webroot/img/glasses/test/demo.ts"] append:NO];

    [operation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) {
        //   NSLog(@"Successfully downloaded file to %@", path);
        // NSLog(@"download finished!");
        if(_delegate && [_delegate respondsToSelector:@selector(ZBTM3U8SegmentDownloaderFinishDownload:)])
        {
            [_delegate ZBTM3U8SegmentDownloaderFinishDownload:self];
        }

    } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
        //  NSLog(@"Error: %@", error);
    }];
    [operation start];

它处于成功状态但数据未上载到服务器上 服务器文件夹显示为空。

- (void)postVideoOnServer {


NSDictionary *requestDict = @{ @"uniqueToken":@"101", @"user_id":@"102",};

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *path = [[paths objectAtIndex:0] stringByAppendingPathComponent:_tsFileName];

NSData *selectedVideo = [NSData dataWithContentsOfFile:path];


AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
AFHTTPRequestOperation *operation = [manager POST:@"http://xxx.x.x.xx/myi/public_html/WebServices/broad/axy" parameters:requestDict constructingBodyWithBlock: ^(id <AFMultipartFormData> formData) {
    [formData appendPartWithFileData:selectedVideo name:@"file" fileName:@"filename.ts" mimeType:@"video/quicktime"];
} success: ^(AFHTTPRequestOperation *operation, id responseObject)
                                     {

                                         NSInteger statusCode = operation.response.statusCode;
                                         NSLog(@"Status Code ::%d", statusCode);
                                         NSLog(@"Response ::%@", responseObject);
                                         [self handleVideoServiceResponse:responseObject];
                                     }
                                        failure  : ^(AFHTTPRequestOperation *operation, NSError *error)
                                     {
                                         NSLog(@"Error: %@  %@", operation.responseString, error);

                                     }];
[operation start];
}

它总是返回请求超时错误。

提前致谢。

1 个答案:

答案 0 :(得分:0)

您确定NSData * selectedVideo不是零吗?我怀疑你是否也是mime?只是建议尝试使用MIME:video / MP2T,它应该解决你的问题。