2010-06-04 171 views
23

我有興趣創建可從中央服務器以YouTube風格傳輸視頻的iPhone應用程序。我想知道是否有人曾嘗試過這樣做,什麼是阻力最小,現有API等的路徑?我完全不知道這通常是如何完成的。我會使用套接字嗎?只是在這裏尋找一些方向。謝謝!編寫應用程序將視頻流式傳輸到iPhone

回答

19

如果您已經準備好流媒體服務器,那麼實現彈出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中,使用從底部滑動的動畫製作動畫。

+0

這不是爲我工作的任何方式已經過時了。 – Deepukjayan 2012-08-23 11:10:03

+0

這個代碼用於流式傳輸嗎? – Dilip 2013-03-01 13:38:48

2

QuickTime視頻已經傳輸到手機。阻力最小的路徑是使用媒體播放器控制器,並將其指向流媒體服務器上的流媒體文件。

7

蘋果公司有關設置服務器端的流媒體一個詳細的文章:

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

和最佳做法注:

https://developer.apple.com/library/content/technotes/tn2224/_index.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]; 
} 
1

雖然現有的回答都不錯,如果你需要使用非HTTP流(MMS或RTMP舉例來說)還是非蘋果支持的音頻/視頻編解碼器,事情就變得有點複雜。

我自己並不是專家,但我一直在使用VideoStreaming SDK來解決這些問題,它使定製客戶端變得更容易(後臺流,暫停流等)。如果你有這些要求,也許值得一看。

0

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]; 
相關問題