iOS에서 라이브 스트림을 재생하기 위해 기본 플레이어 (AVPlayer)를 사용하려고합니다. 그러나 재생을 다시 시작할 수 없습니다. 재생을 멈추고 몇 초 후에 다시 시작하면 라이브 스트림의 현재 (마지막) 샘플을 재생하는 대신 일시 중지 한 순간부터 재생이 시작됩니다.AVPlayer 스트림 재생 마지막 샘플
마지막 샘플을 얻는 방법이 있습니까? 재생 버튼을 누를 때 마지막 샘플에서 재생하도록 AVPlayer를 구성 하시겠습니까?
iOS에서 라이브 스트림을 재생하기 위해 기본 플레이어 (AVPlayer)를 사용하려고합니다. 그러나 재생을 다시 시작할 수 없습니다. 재생을 멈추고 몇 초 후에 다시 시작하면 라이브 스트림의 현재 (마지막) 샘플을 재생하는 대신 일시 중지 한 순간부터 재생이 시작됩니다.AVPlayer 스트림 재생 마지막 샘플
마지막 샘플을 얻는 방법이 있습니까? 재생 버튼을 누를 때 마지막 샘플에서 재생하도록 AVPlayer를 구성 하시겠습니까?
내 솔루션은 플레이어 일시 중지 상태로 사용자 거부를 기반으로합니다. 이것은 재생이 다시 시작될 때마다 플레이어를 파괴하는 것입니다. 매번 새로운 인스턴스를 생성하면 재생이 다시 시작됩니다.
Apple 권장 사항에 따르면 AVPlayer가 중지되었는지 여부를 확인하는 유일한 방법은 KVO를 추가하는 것입니다. 이다 : 사용자가 플레이어를 다시 참여하고자 할 때
- (void)setupPlayer {
AVPlayer *player = [AVPlayer playerWithURL:streamURL];
AVPlayerViewController *playerViewController = [[AVPlayerViewController alloc] init];
playerViewController.player = player;
self.playerViewController = playerViewController;
[self configureConstraintsForView:self.playerViewController.view]; //Add Player to View
[self setupObservers];
[player play];
}
- (void)setupObservers {
[self.playerViewController.player addObserver:self
forKeyPath:@"rate"
options:NSKeyValueObservingOptionNew | NSKeyValueObservingOptionOld
context:NULL];
}
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary<NSKeyValueChangeKey, id> *)change context:(void *)context
if ([keyPath isEqualToString:@"rate"] && self.playerViewController.player.rate == CGPointZero.x) {
[self.playerViewController.view removeFromSuperview];
[self.playerViewController.player removeObserver:self forKeyPath:@"rate"];
[self.playerViewController.player pause];
self.playerViewController = nil;
}
}
다음, 단지 마지막 라이브 샘플에서 재생을 시작 -(void)setupPlayer
를 호출합니다.
URL에서 'AVPlayerItem'을 다시 생성하면 원하는 동작을 얻을 수 있습니까? –
마지막으로, 내가 찾은 유일한 해결책은 재생을 다시 시작할 때마다 실시간 스트림 URL을 요청하는 것입니다. – CRoig
어떻게 그럴 수 있습니까? –