我正在尝试通过HTTP直播(使用Adobe Media Server)与MPMoviePlayerController播放视频。
- (void) viewDidAppear:(BOOL)animated{
[super viewDidAppear:animated];
[self playVideo];
}
- (void) playVideo{
NSURL *url = [NSURL URLWithString:@"http://192.168.10.27/hls-vod/test.mp4.m3u8"];
MPMoviePlayerController *moviePlayer =
[[MPMoviePlayerController alloc] initWithContentURL:url];
moviePlayer.controlStyle = MPMovieControlStyleDefault;
[self.view addSubview:moviePlayer.view];
[moviePlayer setFullscreen:YES animated:YES];
[moviePlayer play];
}
播放器正在正常启动,但它仍在加载并且无法开始播放视频。 我在我的设备下尝试了Safari上的一些链接,它运行正常!
你对这个问题有任何想法吗?
答案 0 :(得分:3)
我找到了解决方案!我只需要在控制器的界面中声明moviePlayer并启动它一个playVideo方法,它就可以了!
答案 1 :(得分:0)
您是否尝试使用真实设备?有时MPMoviePlayerControllers无法在模拟器中正常播放。
您是否一次创建多个MPMoviePlayerController?您只能实例化一个MPMoviePlayerController,因此如果您需要播放第二个视频,第一个视频必须被销毁或重复使用。
m3u8
文件是播放列表,而不是视频文件,因此请查看该文件并确保其指向MPMoviePlayerController支持的文件类型。
另外:请注意,您正在使用viewDidAppear方法播放视频。请注意,只要用户退出MPMoviePlayerController上的全屏,就会调用它,因此您可能希望在那里包含更多逻辑来决定是否显示它。 (除非你总是想永远展示它。)
答案 2 :(得分:0)
(FIXED !!!!!)
我之前遇到过这个问题。
问题是由于静态播放器造成的。 尝试使用MPMoviewPlayer的属性
示例代码如下所示:
@interface YourViewController ()
@property (nonatomic, strong) MPMoviewPlayer *mp;
@end
@implementation YourViewController
- (void)playVideo {
NSURL *movieURL = [NSURL URLWithString:@"http://the/url/playlist.m3u8"];
self.mp = [[MPMoviePlayerController alloc] initWithContentURL:movieURL];
if (self.mp)
{
self.mp.view.frame = self.view.bounds;
[self.view addSubview:self.mp.view];
// save the movie player object
[self.mp setFullscreen:YES];
// Play the movie!
[self.mp play];
}
}
@end