我正在使用以下代码在tvOS上播放视频:
NSString *filePath = [[NSBundle mainBundle] pathForResource:name ofType:@"mov"];
NSURL *fileUrl = [NSURL fileURLWithPath:filePath];
self.player = [AVPlayer playerWithURL:fileUrl];
AVPlayerLayer *avPlayerLayer = [AVPlayerLayer playerLayerWithPlayer:self.player];
avPlayerLayer.frame = CGRectMake(0, 0, view.frame.size.width, view.frame.size.height);
[view.layer addSublayer:avPlayerLayer];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(replayMovie:) name:AVPlayerItemDidPlayToEndTimeNotification object:nil];
[self.player play];
但是我收到以下错误
错误:> aqme> 718:MEMixerChannel :: EnableProcessor:无法打开 处理器类型0x705f6571
任何想法如何解决?
答案 0 :(得分:21)
您是在模拟器中还是在Apple TV开发套件中运行应用程序?
对于tvOS,我遇到的大多数与AV相关的错误/崩溃只发生在我使用Apple TV模拟器时 - 一旦我在物理设备上运行应用程序,它们就会消失。
答案 1 :(得分:4)
我正在模拟器上本地加载和播放视频。 我在Swift中写了它,但你应该能够很容易地翻译它。
if let path = NSBundle.mainBundle().pathForResource("4", ofType:"mp4") {
let url = NSURL(fileURLWithPath: path)
let videoPlayer = AVPlayer(URL: url)
let playerLayer = AVPlayerLayer(player: videoPlayer)
playerLayer.frame = self.view.frame
self.view.layer.addSublayer(playerLayer)
videoPlayer.play()
}
确保fileUrl
不是nil
并尝试删除不需要的代码(例如通知部分),以便我们可以推断出哪个部分失败。
我正在使用Xcode 7.1beta3。
答案 2 :(得分:1)
您不希望继承AVPlayerViewController。来自the docs:
重要
不要继承AVPlayerViewController。覆盖这个类 方法不受支持,导致未定义的行为。
相反,使用常规的UIViewController,然后将AVPlayerViewController的视图附加到它。
使用@ AbeanSits的代码(我使用RubyMotion,但你可以转换为Obj-C)工作。这是我的版本:
def viewDidAppear(_)
super
@player_controller = AVPlayerViewController.alloc.init
@player_controller.player = AVPlayer.alloc.initWithURL(current_url)
self.addChildViewController(@player_controller)
self.view.addSubview(@player_controller.view)
@player_controller.view.frame = self.view.frame
@player_controller.player.play
end