4
我看到一張紙條,上面這個地址 http://developer.apple.com/library/ios/#qa/qa1668/_index.html視頻播放的背景
注:如果您在電影中禁用視頻軌道,或將其從相關AVPlayer卸下AVPlayerLayer它將使電影音頻繼續在後臺播放。但是,這些更改必須在應用程序切換到後臺之前生效。
[[UIApplication sharedApplication] beginReceivingRemoteControlEvents];
[self becomeFirstResponder];
[[AVAudioSession sharedInstance] setDelegate: self];
[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:nil];
[[AVAudioSession sharedInstance] setActive: YES error: nil];
AVPlayerItem *playerItem = [AVPlayerItem playerItemWithURL:[NSURL fileURLWithPath:AnUrl]];
AVPlayer *avPlayer = [AVPlayer playerWithPlayerItem:playerItem];
AVPlayerLayer *avPlayerLayer = [AVPlayerLayer playerLayerWithPlayer:avPlayer];
avPlayerLayer.frame = self.view.layer.bounds;
UIView *newView = [[UIView alloc] initWithFrame:self.view.bounds];
[newView.layer addSublayer:avPlayerLayer];
[self.view addSubview:newView];
[avPlayer play];
該程序的工作原理。但在背景中,聲音被切斷。我想繼續播放背景音效。我如何從AVPlayer中分離AVPlayerLayer?
我認爲這可能正是我所需要的!但是,快速的問題(可能是noobish):'applicationWillResignActive'是一個'AppDelegate'方法,我所有的'AVPlayerLayer'代碼都在一個單獨的ViewController文件中。能夠在AppDelegate中引用VideoViewController的播放器的最佳方式是什麼?將VideoVideoController導入到AppDelegate中,還是在應用程序範圍內「獲取AVPlayer當前正在運行的」方法或其他東西?那裏的最佳做法是什麼? – Nerrolken
您可以使用委託或通知。 (1)對於代表的使用,請參閱此stackoverflow問題:http://stackoverflow.com/questions/626898/how-do-i-create-delegates-in-objective-c。 (2)有關通知,請參閱:http://stackoverflow.com/questions/9011868/whats-the-best-way-to-detect-when-the-app-is-entering-the-background-for-我的看法。我會建議使用通知。 (使用UIApplicationDidBecomeActiveNotification和UIApplicationWillResignActiveNotification)。 – mltpyt