我有一个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网络播放视频?
感谢您的时间!
答案 0 :(得分:0)
要通过慢速网络提供视频文件,您应该使用HTTP直播(HLS)。
您的代码无需更改,但您调用它的URL应指向流的索引文件。索引文件相当于单个(通常为10秒)MPEG传输流文件的播放列表。
浏览Apple's HTTP Live Streaming页面上的详细信息,或在Wikipedia获取服务器软件的概述和列表。
顺便说一句,你没有显示videoPlayerController
的声明,但是你需要确保它是你的视图控制器的属性,或者以某种方式确保它的生命周期是只要视频正在播放。