如何使用MPMoviePlayerController通过WWAN网络播放视频?

时间:2013-07-25 13:59:04

标签: ios objective-c video-streaming mpmovieplayercontroller mpmovieplayer

我有一个MPMoviePlayerController,它接收链接并播放链接中的视频。使用WiFi这没有问题,视频播放,一切都很好。

然而,使用3G网络时,它会在抛出MPMoviePlayerPlaybackDidFinishNotification之前挂起几秒钟,这是“操作无法完成”的本地化描述。

我的代码如下:

    videoPlayerController =  [[MPMoviePlayerController alloc]
                 initWithContentURL:url];

    [[NSNotificationCenter defaultCenter] addObserver:self
                                         selector:@selector(moviePlayBackDidFinish:)
                                             name:MPMoviePlayerPlaybackDidFinishNotification
                                           object:videoPlayerController];

    [[NSNotificationCenter defaultCenter] addObserver:self
                                         selector:@selector(willEnterFullscreen:)
                                             name:MPMoviePlayerWillEnterFullscreenNotification
                                           object:videoPlayerController];

    videoPlayerController.controlStyle = MPMovieControlStyleDefault;
    videoPlayerController.shouldAutoplay = YES;
    videoPlayerController.repeatMode = MPMovieRepeatModeOne;

    CGRect rect = _documentViewer.frame;
    [videoPlayerController.view setFrame:rect];
    [self.scroller addSubview:videoPlayerController.view];
    [videoPlayerController setFullscreen:NO animated:YES];

正如我所提到的,它使用WiFi连接工作正常,只是不喜欢通过3G做同样的事情。视频本身距离特定网址为26.8 MB。 3G会限制您在IOS上一次下载的金额吗?是否可以通过3G网络播放视频?

感谢您的时间!

1 个答案:

答案 0 :(得分:0)

要通过慢速网络提供视频文件,您应该使用HTTP直播(HLS)。

您的代码无需更改,但您调用它的URL应指向流的索引文件。索引文件相当于单个(通常为10秒)MPEG传输流文件的播放列表。

浏览Apple's HTTP Live Streaming页面上的详细信息,或在Wikipedia获取服务器软件的概述和列表。

顺便说一句,你没有显示videoPlayerController的声明,但是你需要确保它是你的视图控制器的属性,或者以某种方式确保它的生命周期是只要视频正在播放。