0

我有一个 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 上做同样的事情。视频本身比特定 URL 低 26.8 MB。3G对IOS一次下载量有限制吗?是否可以通过 3G 网络播放视频?

感谢您的时间!

4

1 回答 1

0

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

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

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

顺便说一句,您没有显示 的​​声明videoPlayerController,但您需要确保它是您的视图控制器的属性,或者以某种方式确保它的生命周期与播放视频一样长为了。

于 2013-07-26T01:20:29.950 回答