Я заинтересован в создании приложения для iPhone, которое может транслировать видео с центрального сервера в стиле YouTube. Мне было интересно, если кто-нибудь когда-либо пытался это сделать раньше, каков путь наименее стойких, существующих API и т.д.? Я действительно ничего не знаю о том, как это делается вообще. Будет ли я работать с сокетами? Просто ищите здесь какое-то направление. Спасибо!
Написание приложения для потокового видео на iPhone
Ответ 1
Если у вас есть потоковый сервер вверх и готов, довольно просто реализовать видеоконтроллер, который отображает стиль youtube.
NSString *videoURLString = @"http://path-to-iphone-compliant-video-stream";
NSURL *videoURL = [NSURL URLWithString:videoURLString];
MPMoviePlayerController moviePlayer = [[MPMoviePlayerController alloc] initWithContentURL:videoURL];
[moviePlayer prepareToPlay];
[moviePlayer play];
[self.view addSubview:moviePlayer.view];
Вам нужно обработать контроллер, отображающий вид видеоплеера (в данном случае это self
).
В iOS 3.2+ MPMoviePlayerViewController делает это еще проще:
NSString *videoURLString = @"http://path-to-iphone-compliant-video-stream";
NSURL *videoURL = [NSURL URLWithString:videoURLString];
MPMoviePlayerViewController *moviePlayerView = [[[MPMoviePlayerViewController alloc] initWithContentURL:videoURL] autorelease];
[self presentMoviePlayerViewControllerAnimated:moviePlayerView];
presentMoviePlayerViewControllerAnimated
- дополнительный метод MediaPlayer для FWViewController
, который вы найдете в iOS 3.2+, и он заботится о создании контроллера представления и нажатии его в стеке, анимируя его с помощью слайд-дна анимации, как в youtube.app.
Ответ 2
В Apple есть подробная статья о настройке серверной части для потоковой передачи мультимедиа:
и рекомендация по лучшей практике:
http://developer.apple.com/library/ios/#technotes/tn2010/tn2224.html
Не только он содержит информацию о архитектуре потоковой службы и инструментах, используемых для ее создания, но также имеет некоторые требования к такому сервису, который должен быть выполнен, и ссылки на потоки живых тестов.
Ответ 3
Используйте этот код для использования низкой памяти. По потоковому видео....
-(IBAction)playMovie:(NSURL *) theURL
{
NSURL *fileURL = theURL;
MPMoviePlayerController *moviePlayerController = [[MPMoviePlayerController alloc] initWithContentURL:fileURL];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(moviePlaybackComplete:)
name:MPMoviePlayerPlaybackDidFinishNotification
object:moviePlayerController];
[self.view addSubview:moviePlayerController.view];
moviePlayerController.useApplicationAudioSession = NO;
moviePlayerController.fullscreen = YES;
[moviePlayerController play];
}
- (void)moviePlaybackComplete:(NSNotification *)notification
{
MPMoviePlayerController *moviePlayerController = [notification object];
[[NSNotificationCenter defaultCenter] removeObserver:self
name:MPMoviePlayerPlaybackDidFinishNotification
object:moviePlayerController];
[moviePlayerController.view removeFromSuperview];
[moviePlayerController release];
}
Ответ 4
Видео QuickTime уже транслируются по телефону. Путь наименьшего сопротивления будет состоять в том, чтобы использовать контроллер медиаплеера и указать его на потоковый мультимедийный файл на потоковом сервере.
Ответ 5
В то время как существующие ответы хороши, если вам нужно использовать потоки без HTTP (например, mms или rtmp) или не поддерживаемые Apple аудио/видео кодеки, все становится немного сложнее.
Я не эксперт сам, но я использовал этот VideoStreaming SDK для решения этих проблем, и он настраивает клиента намного проще (потоковое фоновое воспроизведение, приостановка потоков и т.д.). Возможно, стоит посмотреть, есть ли у вас эти требования.