2017-02-23 7 views
3

사용자가 비디오를 재생하고 백그라운드 모드 (HLS 스트림 사용)로 들어갈 때 사용하는 대역폭을 줄이고 싶습니다. 오디오는 계속 재생되기를 원하지만 AVPlayer가 필요하지 않아도 (사용자가 아무 것도 볼 수없는 경우에도) 비디오 세그먼트를 계속 다운로드하는 것처럼 보입니다.앱이 백그라운드로 들어갈 때 오디오를 유지하고 AVPlayer의 비디오 스트림을 제거하십시오.

이론적으로 매우 낮은 비트 전송률 (예 : 검정색 화면)의 비디오를 가질 수 있으며 앱이 배경 모드로 들어갈 때 player.currentItem.preferredPeakBitRate = 1으로 설정 될 수 있습니다. 그런 다음 앱이 거대한 숫자를 다운로드하지 못하도록 차단합니다. 사용자가 돌아 오면 오랜 기간 동안 검은 색 화면을 표시합니다. 또한, 사용자가 연결 상태가 좋지 않은 경우 블랙 스크린이 전경 모드로 표시되는 것을 어떻게 방지 할 수 있는지 명확하지 않습니다.

또한 AVURLAsset의 - (AVMediaSelectionGroup *)mediaSelectionGroupForMediaCharacteristic:(NSString *)mediaCharacteristic을 통해 비디오를 비활성화하려고했습니다. 오디오의 경우이 작업을 수행 할 수 있지만 비디오의 경우 수행하지 않을 수 있습니다. 메서드가 매개 변수 AVMediaCharacteristicVisual에 대해 nil을 반환하기 때문입니다. 이 기능을 사용하려면 내 HLS 매니페스트에서 변경할 수 있습니까?

+0

같은 딜레마에 직면했습니다. 너 무슨 짓을 한거야? –

답변

0

이 문제를 처리하는 가장 좋은 방법은 매니페스트를 통해 들어오는 오디오 프로필을 사용하고 클라이언트 쪽에서는별로하지 않는 것입니다. 이는 오디오 전용 프로필이 오디오 + 비디오 프로필보다 비트 전송률이 상대적으로 낮고 조건을 확인하면 매니페스트가 가진 최소 오디오 + 비디오 프로필보다 적게 표시되면 자동으로 오디오 프로필로 전환되기 때문입니다 필요합니다.

또한 AVPlayerItemNewAccessLogEntry에 대한 관찰자를 추가해야합니다.