Подтвердить что ты не робот

Написание приложения для потокового видео на iPhone

Я заинтересован в создании приложения для iPhone, которое может транслировать видео с центрального сервера в стиле YouTube. Мне было интересно, если кто-нибудь когда-либо пытался это сделать раньше, каков путь наименее стойких, существующих API и т.д.? Я действительно ничего не знаю о том, как это делается вообще. Будет ли я работать с сокетами? Просто ищите здесь какое-то направление. Спасибо!

4b9b3361

Ответ 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/iphone/library/documentation/NetworkingInternet/Conceptual/StreamingMediaGuide/Introduction/Introduction.html

и рекомендация по лучшей практике:

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 для решения этих проблем, и он настраивает клиента намного проще (потоковое фоновое воспроизведение, приостановка потоков и т.д.). Возможно, стоит посмотреть, есть ли у вас эти требования.