Я дурачился с кодом целую вечность этого, я был бы очень благодарен, если кто-то мог бы предоставить пример кода, который загрузил этот файл с сервера 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.