Написание приложения для потоковой передачи видео на iPhone - PullRequest
23 голосов
/ 05 июня 2010

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

Ответы [ 6 ]

19 голосов
/ 11 июля 2010

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

7 голосов
/ 04 ноября 2010

Apple предлагает подробную статью о настройке потоковой передачи мультимедиа на сервере:

https://developer.apple.com/library/content/documentation/NetworkingInternet/Conceptual/StreamingMediaGuide/Introduction/Introduction.html

и Примечание о передовой практике:

https://developer.apple.com/library/content/technotes/tn2224/_index.html

Он не только содержит информацию об архитектуре потокового сервиса и инструментах, использованных для его создания, но также содержит некоторые требования к такому виду сервиса, который должен быть выполнен, и ссылки на живые тестовые потоки.

3 голосов
/ 20 января 2012

Используйте этот код, чтобы использовать мало памяти. На потоковое видео ....

-(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];
}
2 голосов
/ 17 июня 2010

Видео QuickTime уже транслируется на телефон. Путь наименьшего сопротивления будет использовать контроллер медиапроигрывателя и указать его на файл потокового мультимедиа на сервере потоковой передачи.

1 голос
/ 13 июня 2013

Несмотря на то, что существующие ответы хороши, если вам нужно использовать не HTTP-потоки (например, mms или rtmp) или не поддерживаемые Apple аудио / видео кодеки, все становится немного сложнее.

Я сам не эксперт, но я использую этот VideoStreaming SDK для решения этих проблем, и это значительно упрощает настройку клиента (фоновая передача, приостановка потоков и т.д.) Может быть стоит посмотреть, если у вас есть эти требования.

0 голосов
/ 06 марта 2018

2018 ответ Вы можете использовать AVPlayerViewController, поскольку MPMoviePlayerController устарело с iOS 9

    NSURL *url = [NSURL URLWithString:videoUrl];

    _playerViewController = [[AVPlayerViewController alloc] init];
    _playerViewController.player = [AVPlayer playerWithURL:url];
    _playerViewController.player.volume = 1;
    _playerViewController.showsPlaybackControls = YES;

    _playerViewController.view.frame = CGRectMake(....);
    [self.view addSubview:_playerViewController.view];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...