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
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.
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.
hat Apple einen ausführlichen Artikel über Server-Seite für Media-Streaming-Einrichtung:
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.
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];
}
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.
2018 Antwort Sie AVPlayerViewController
seit MPMoviePlayerController
verwenden können, da 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];
Dies ist nicht für mich arbeiten jede mögliche Weise. – Deepukjayan
wird dieser Code für das Streaming verwendet? – Dilip