2010-06-04 10 views
23

Jestem zainteresowany tworzeniem aplikacji na iPhone'a, która umożliwia strumieniowe przesyłanie wideo z centralnego serwera w stylu YouTube. Zastanawiam się, czy ktoś kiedykolwiek próbował to zrobić wcześniej, jaka jest ścieżka najmniej odpornych, istniejących interfejsów API itp.? Naprawdę nie wiem nic o tym, jak to się robi. Czy pracowałbym z gniazdkami? Po prostu szukam tu jakiegoś kierunku. Dzięki!Pisanie aplikacji do strumieniowego przesyłania wideo do iPhone'a

Odpowiedz

19

Jeśli masz serwer streamingowy gotowy i gotowy, całkiem łatwo jest zaimplementować kontroler wideo, który wyskoczy w stylu 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]; 

trzeba obsłużyć kontroler że widok wyświetlacza odtwarzacza wideo (która jest self w tym przypadku).

iOS 3.2 lub nowszym W MPMoviePlayerViewController jeszcze łatwiejsze:

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 jest dodatkowa metoda A MEDIAPLAYER do FWViewController które znajdziesz w iOS 3.2 lub nowszym i dba o stworzenie kontrolera widoku i przesuwając ją na stos, animując go animacją zsuwania się z dołu, jak w youtube.app.

+0

To nie działa na mnie w dowolny sposób. – Deepukjayan

+0

czy ten kod jest używany do przesyłania strumieniowego? – Dilip

2

Filmy wideo QuickTime są już przesyłane strumieniowo do telefonu. Ścieżką najmniejszego oporu byłoby użycie kontrolera odtwarzacza multimediów i skierowanie go do pliku multimediów strumieniowych na serwerze transmisji strumieniowej.

7

Apple ma szczegółowy artykuł na temat konfiguracji po stronie serwera do strumieniowania multimediów:

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

i Best Practices UWAGA:

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

Nie tylko zawiera on informacje o architekturze usługi transmisji strumieniowej i narzędzia użyte do jego zbudowania, ale ma również pewne wymagania co do tego rodzaju usługi, które muszą zostać spełnione, oraz odnośniki do strumieni testowych na żywo.

3

Ten kod służy do korzystania z małej ilości pamięci. Na streaming video ....

-(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]; 
} 
1

Chociaż dotychczasowe odpowiedzi są dobre, jeśli trzeba użyć strumieni innych niż HTTP, RTMP (MMS lub na przykład) lub spoza firmy Apple obsługiwanych kodeków audio/wideo, robi się nieco bardziej skomplikowane.

Sam nie jestem ekspertem, ale używam tego VideoStreaming SDK, aby rozwiązać te problemy, co znacznie ułatwia personalizację klienta (streaming w tle, wstrzymywanie strumieni itp.). Może być wart obejrzenia, jeśli masz te wymagania.

0

2018 odpowiedź Można użyć AVPlayerViewController od MPMoviePlayerController jest przestarzała od 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]; 
Powiązane problemy