web-dev-qa-db-ja.com

iPhoneにビデオをストリーミングするアプリを書く

中央サーバーからYouTubeスタイルでビデオをストリーミングできるiPhoneアプリの作成に興味があります。誰かがこれまでにこれを試みたことがあるかどうか、最も抵抗力のない既存のAPIなどのパスは何ですか?私はこれが一般的にどのように行われるかについて本当に何も知りません。ソケットを使用しますか?ここで方向性を探しているだけです。ありがとう!

23
Jameson

ストリーミングサーバーの準備ができていれば、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は、iOS3.2以降にあるFWViewControllerへのMediaPlayerの追加メソッドであり、View Controllerを作成してスタックにプッシュし、slide-from-でアニメーション化します。 youtube.appのように下のアニメーション。

19
duhanebel

Appleには、メディアストリーミング用のサーバー側の設定に関する詳細な記事があります。

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

およびベストプラクティス注:

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

ストリーミングサービスのアーキテクチャとその構築に使用されるツールに関する情報が含まれているだけでなく、満たす必要のあるそのような種類のサービスに対するいくつかの要件と、ライブテストストリームへの参照も含まれています。

7
Anton

このコードを使用して、低メモリを使用します。ストリーミングビデオについて...

-(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];
}
3
Dilip Rajkumar

QuickTimeビデオはすでに電話にストリーミングされています。抵抗が最も少ないパスは、メディアプレーヤーコントローラーを使用して、ストリーミングサーバー上のストリーミングメディアファイルを指すようにすることです。

2
Kevin Hoffman

既存の回答は適切ですが、HTTP以外のストリーム(mmsやrtmpなど)またはAppleサポートされているオーディオ/ビデオコーデック)を使用する必要がある場合は、状況が少し複雑になります。

私自身は専門家ではありませんが、これを使用して VideoStreaming SDK これらの問題を解決し、クライアントのカスタマイズ(バックグラウンドストリーミング、ストリームの一時停止など)をはるかに簡単にします。これらの要件もある場合は、一見の価値があるかもしれません。

1
Eran Galperin

2018回答AVPlayerViewControllerはiOS9以降非推奨であるため、MPMoviePlayerControllerを使用できます

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