ビデオ再生用に AVPlayer からカスタム プレーヤーを作成します。Apple docs によると、ビデオレイヤーを設定します。
self.player = [IPLPlayer new];
self.player.playerLayer = (AVPlayerLayer *)self.playerView.layer;
self.playerView は、これらのドキュメントの通常のクラスです。
@implementation PlayerView
+ (Class) layerClass {
return [AVPlayerLayer class];
}
- (AVPlayer *)player {
return [(AVPlayerLayer *)[self layer] player];
}
- (void)setPlayer:(AVPlayer *) player {
[(AVPlayerLayer *) [self layer] setPlayer:player];
}
問題は、アプリ (ホーム ボタン) を閉じるか、画面をブロックすると、ビデオの再生が停止し、オーディオ再生のみを再開すると、画面上の画像はブロック画面の前のもののままです。完全に静的であり、変更フレームに注意してください。
画面がブロックされた後にビデオの再生を再開する方法は?
通知を登録する必要があるようです。アプリがアクティブになったら、ビデオ レイヤーを再開します。
-(void)registerNotification
{
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(willEnterBackground)
name:UIApplicationWillResignActiveNotification object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(didEnterForeground)
name:UIApplicationDidBecomeActiveNotification object:nil];
}
-(void)unregisterNotification
{
[[NSNotificationCenter defaultCenter] removeObserver:self];
}
-(void)willEnterBackground
{
NSLog(@"willEnterBackground");
[self.playerView willEnterBackground];
}
-(void)didEnterForeground
{
NSLog(@"didEnterForeground");
[self.playerView didEnterForeground];
}