2016-10-19 6 views
1

私はAFNetworking 3.0ビデオを使用してビデオを投稿しています。制限は180秒です。メモリエラーが発生しました。chunkks.shortでビデオを送信したいのですが、ビデオがサーバーに投稿されていますが、メモリエラーとアプリクラッシュ高速サーバーのビデオポスト

-(void)videoPost{ 
    [SVProgressHUD show]; 

    NSLog(@"DD Paths %@", Match_ID); 
    NSString *[email protected]"http://202.164.59.107/stands_app/webservices/User/uploadfile"; 

    AFHTTPSessionManager *manager1 = [AFHTTPSessionManager manager]; 
    manager1.responseSerializer.acceptableContentTypes = [NSSet setWithObject:@"text/html"]; 

    [manager1 POST:urlString parameters:nil constructingBodyWithBlock:^(id<AFMultipartFormData> formData) { 
     NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
     NSString *documentsDirectory = [paths objectAtIndex:0]; 
     // NSLog(@"DD Paths %@", documentsDirectory); 
     filePathsArray = [[NSFileManager defaultManager] subpathsOfDirectoryAtPath:documentsDirectory error:nil]; 
     //NSLog(@"files array %@", filePathsArray); 
     NSString *fullpath; 
     for (NSString *apath in filePathsArray) 
     { 
      fullpath = [documentsDirectory stringByAppendingPathComponent:apath]; 
      videoURL =[NSURL fileURLWithPath:fullpath]; 
      [URLpaths addObject:videoURL]; 
     } 
     // NSLog(@"vurl %@",vedioURL); 
     //[URLpaths removeObjectAtIndex:0]; 
     videoURL=[URLpaths lastObject]; 
     NSData *videoData = [NSData dataWithContentsOfURL:videoURL]; 

     [formData appendPartWithFileData:videoData name:@"file" fileName:@"video.mov" mimeType:@"video/quicktime"]; 
     [formData appendPartWithFormData:[self.FileType dataUsingEncoding:NSUTF8StringEncoding]name:@"type"]; 
     [formData appendPartWithFormData:[LoginID dataUsingEncoding:NSUTF8StringEncoding]name:@"userid"]; 
     [formData appendPartWithFormData:[Match_ID dataUsingEncoding:NSUTF8StringEncoding]name:@"matchid"]; 
    } progress:nil success:^(NSURLSessionDataTask *task, id responseObject) { 
     NSLog(@"Response: %@",task); 
     NSLog(@"Response is success : %@", responseObject); 

     NSString *Status=[responseObject valueForKey:@"success"]; 
     // success or not 
     if([Status isEqualToString:@"1"]) 
     { 

      [SVProgressHUD dismiss]; 
      [Utility showAlertWithMessage:@"Video Upload sucessfully."]; 
     } 
     else 
     { 
      [Utility showAlertWithMessage:@"Faul to upload video."]; 
     } 

    } failure:^(NSURLSessionDataTask *task, NSError *error) { 
     //Error not task is sucess 
     NSLog(@"Response data sucessfully : %@",task); 
     [videoURL removeAllCachedResourceValues]; 
    }]; 
} 
+0

はサーバーの制限値の180秒ですか、メモリ警告があなたのアプリケーションをダウンさせる前にアップロードできるビデオの最大量は180秒ですか? –

+0

カメラに制限を加えると、ディレクトリに保存される時間が180秒になると自動的にビデオが保存されます。 – viveksharma

答えて

1

あなたはNSDataに何を変換するとき、それはあなたのデビックのメモリを使用しますので、

NSData *videoData = [NSData dataWithContentsOfURL:videoURL]; 

[formData appendPartWithFileURL:yourFileUrlForVideo name:@"file" fileName:@"video.mov" mimeType:@"video/quicktime" error:nil]; //I thing videoURL is FileURL in your case 

であなたの

[formData appendPartWithFileData:videoData name:@"file" fileName:@"video.mov" mimeType:@"video/quicktime"]; 

を交換して、線の下にコメントそれは一度にデータ全体にファイルを変換します。たとえば、ビデオのサイズが1000 MBで、URLに変換してデータにする場合は、1000 MBのメモリが必要です(メモリはRAMを意味します)。したがって、urlを使用してNSDataに変換することなく、ディスク(デバイスのストレージ - 私はドキュメントディレクトリを意味します)から直接データを送信する方が良いです。したがって、不要なメモリは使用しません。

アプリケーションの実行中に、memory usageDebug Navigatorから見ることができます。

+0

ビデオのURLを追加して、ビデオの長さをサーバーに投稿できますか? – viveksharma

+0

イオス側からの制限はありません!それはあなたのサーバーにどれだけの長さがサポートされているかによって異なります! – Lion

+0

私はthik私のネットが遅い来ていない私の側の成功は兄弟が兄弟です。 – viveksharma

関連する問題