2010-06-04 4 views
23

Ich möchte eine iPhone-App erstellen, die Videos von einem zentralen Server im YouTube-Format streamen kann. Ich habe mich gefragt, ob jemand jemals versucht hat, dies vorher zu tun, was ist der Weg der am wenigsten resistenten, vorhandenen APIs usw.? Ich weiß wirklich nichts darüber, wie das allgemein gemacht wird. Würde ich mit Sockeln arbeiten? Ich suche hier nur eine Richtung. Vielen Dank!Schreiben einer App zum Streamen von Videos auf das iPhone

Antwort

19

Wenn Sie den Streaming-Server bereit haben, ist es sehr einfach, einen Video-Controller zu implementieren, der im youtube-Stil angezeigt wird.

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]; 

Sie müssen den Controller zu handhaben, dass der Video-Player Ansicht angezeigt werden (die self ist in diesem Fall).

In iOS 3.2+ MPMoviePlayerViewController machen es noch einfacher:

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 ist eine weitere Methode, die Mediaplayer zu FWViewController, dass Sie in iOS finden 3.2+ und es kümmert sich eine View-Controller zu erstellen und es auf dem Druck Der Stapel animiert ihn mit einer Slide-from-Bottom-Animation, wie in youtube.app.

+0

Dies ist nicht für mich arbeiten jede mögliche Weise. – Deepukjayan

+0

wird dieser Code für das Streaming verwendet? – Dilip

2

QuickTime-Videos streamen bereits zum Telefon. Der Pfad des geringsten Widerstandes wäre, den Media Player Controller zu verwenden und auf eine Streaming Media Datei auf einem Streaming Server zu verweisen.

7

hat Apple einen ausführlichen Artikel über Server-Seite für Media-Streaming-Einrichtung:

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

und Best Practices Hinweis:

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

Nicht nur er enthält Informationen über Streaming-Dienst-Architektur und Werkzeuge verwendet, um es zu bauen, sondern hat auch einige Anforderungen an solche Art von Service, die erfüllt werden müssen und Referenzen zu Live-Test-Streams.

3

Verwenden Sie diesen Code, um wenig Speicher zu verwenden. Auf 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

Während die vorhandenen Antworten sind gut, wenn Sie nicht HTTP-Streams (mms oder rtmp zum Beispiel) oder nicht von Apple unterstützten Audio/Video-Codecs, die Dinge ein bisschen mehr verwenden müssen kompliziert.

Ich bin kein Experte selbst, aber ich habe diese VideoStreaming SDK verwendet, um diese Probleme zu lösen, und es macht die Anpassung des Clients viel einfacher (Hintergrund-Streaming, Pausieren von Streams, etc). Könnte einen Blick wert sein, wenn Sie diese Anforderungen auch haben.

0

2018 Antwort Sie AVPlayerViewController seit MPMoviePlayerController verwenden können, da iOS 9

veraltet
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];