iPhone SDK: как вы загружаете видеофайлы в Справочник документов, а затем воспроизводите их?

Я обманывал код с возрастом на этом, я был бы очень благодарен, если бы кто-то мог предоставить образец кода, который скачал этот файл с сервера http://www.archive.org/download/june_high/june_high_512kb.mp4 , (Кстати, на самом деле это не файл, это просто отличный пример для тех, кто пытается мне помочь), а затем воспроизвести его из каталога документов. Я знаю, что мне кажется ленивым спросить об этом, но я попробовал так много разных вариантов NSURLConnection, что это сводит меня с ума. Кроме того, если бы мне удалось загрузить загруженный видеофайл, я был бы прав, если бы этот код успешно воспроизвел его:

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString *documentsDirectory = [paths objectAtIndex:0]; NSString *path = [documentsDirectory stringByAppendingPathComponent:@"june_high_512kb.mp4"]; NSURL *movieURL = [NSURL fileURLWithPath:path]; self.theMovie = [[MPMoviePlayerController alloc] initWithContentURL:movieURL]; [_theMovie play]; 

Если вышеуказанный код будет работать при воспроизведении видеофайла из каталога документов, то, я думаю, единственное, что мне нужно знать, – это как загрузить видеофайл с сервера. Это то, что кажется моей главной проблемой. Любая помощь приветствуется.

Ваш код будет работать, чтобы воспроизвести файл фильма.

Самый простой способ загрузки – синхронно:

 NSData *data = [NSData dataWithContentsOfURL:movieUrl]; [data writeToURL:movieUrl atomically:YES]; 

Но лучше (для реагирования приложений и т. Д.) Загружать асинхронно:

  NSURLRequest *theRequest = [NSURLRequest requestWithURL:movieUrl cachePolicy:NSURLRequestReloadIgnoringLocalCacheData timeoutInterval:60]; receivedData = [[NSMutableData alloc] initWithLength:0]; NSURLConnection *connection = [[NSURLConnection alloc] initWithRequest:theRequest delegate:self startImmediately:YES]; 

Это требует реализации неофициального протокола NSURLConnection:

 - (void) connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response { [UIApplication sharedApplication].networkActivityIndicatorVisible = YES; [receivedData setLength:0]; } - (void) connection:(NSURLConnection *)connection didReceiveData:(NSData *)data { [receivedData appendData:data]; } - (void) connection:(NSURLConnection *)connection didFailWithError:(NSError *)error { [UIApplication sharedApplication].networkActivityIndicatorVisible = NO; [connection release]; } - (NSCachedURLResponse *) connection:(NSURLConnection *)connection willCacheResponse:(NSCachedURLResponse *)cachedResponse { return nil; } - (void) connectionDidFinishLoading:(NSURLConnection *)connection { [UIApplication sharedApplication].networkActivityIndicatorVisible = NO; [connection release]; [self movieReceived]; } 

а затем сохранить (и воспроизвести) файл фильма в методе movieReceived.

Если вы хотите загружать видео асинхронные, я бы предложил использовать библиотеку ASI, поэтому ваше приложение не блокируется, пока вы ждете завершения загрузки.

http://allseeing-i.com/ASIHTTPRequest/

Interesting Posts
Давайте будем гением компьютера.