【发布时间】:2016-03-30 22:26:48
【问题描述】:
我正在尝试从 MPMoviePlayerViewController 切换到 AVPlayer 以在我的实现中播放视频,看起来与此类似
NSURL *movieURL = [NSURL URLWithString:@"http://example.com/somefile.m3u8"];
movieController = [[MPMoviePlayerViewController alloc] initWithContentURL:movieURL];
movieController.moviePlayer.movieSourceType = MPMovieSourceTypeStreaming;
[self presentMoviePlayerViewControllerAnimated:movieController];
[movieController.moviePlayer play];
我的AVPlayer 版本播放所有内容,但所需的m3u8 流除外。它设法找到文件,AVPlayerViewController 显示正确的文件持续时间,但挂起并显示活动指示,并且从未真正开始播放。
NSURLComponents *comp = [NSURLComponents componentsWithString:url.absoluteString];
AVURLAsset *asset = [[AVURLAsset alloc] initWithURL:comp.URL options:nil];
AVAssetResourceLoader *loader = asset.resourceLoader;
[loader setDelegate:self queue: dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0)];
AVPlayerItem *playerItem = [[AVPlayerItem alloc] initWithAsset:asset];
self.player = [AVPlayer playerWithPlayerItem:playerItem];
我有一个状态观察者,它最终会在AVPlayer 的状态为ReadyToPlay 时播放。
我无法想象AVPlayer 可以播放MPMoviePlayerController 可以播放的所有内容,那么AVPlayer 版本的正确实现如何使其正常工作。
【问题讨论】:
标签: objective-c mpmovieplayercontroller avplayer m3u8