编写应用程序以将视频流式传输到iPhone

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了编写应用程序以将视频流式传输到iPhone相关的知识,希望对你有一定的参考价值。

我有兴趣创建一个可以从YouTube中央服务器流式传输视频的iPhone应用程序。我想知道是否有人曾尝试过这样做,最不具有抵抗力的现有API的路径是什么?我真的不知道如何做到这一点。我会使用套接字吗?只是在这里寻找一些方向。谢谢!

答案

如果你已准备好流媒体服务器,那么实现一个弹出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。

另一答案

Apple有一篇关于为媒体流设置服务器端的详细文章:

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

和最佳实践注意:

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

它不仅包含有关流服务架构和用于构建它的工具的信息,而且还对必须满足的此类服务和对实时测试流的引用有一些要求。

另一答案

使用此代码使用低内存。关于流媒体视频....

-(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];
}
另一答案

QuickTime视频已经流式传输到手机上。阻力最小的路径是使用媒体播放器控制器并将其指向流媒体服务器上的流媒体文件。

另一答案

虽然现有答案很好,但如果您需要使用非HTTP流(例如mms或rtmp)或非Apple支持的音频/视频编解码器,事情会变得复杂一些。

我自己不是专家,但我一直在使用这个VideoStreaming SDK来解决这些问题,它使得客户端的定制变得更加容易(后台流式传输,暂停流等)。如果您有这些要求,可能值得一看。

另一答案

2018回答您可以使用AVPlayerViewController,因为自iOS 9以来,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];

以上是关于编写应用程序以将视频流式传输到iPhone的主要内容,如果未能解决你的问题,请参考以下文章

如何模拟通话以将蓝牙音频流式传输到车辆中?

iPhone 应用程序中的 flv 视频 URL 流式传输

如何从充当服务器的 iPhone 流式传输视频?

如何确保 YouTube API 仅返回可在 iPhone 上流式传输的视频?

从服务器流式传输视频。 iPhone SDK

如何将 4K HDR 视频流式传输到 Apple TV 4K?