다음과 같은 컨트롤러에서 비디오를 재생하고 있습니다.
func playMovie() {
let path = Bundle.main.path(forResource: "xyz", ofType:"mov")
let url = URL(fileURLWithPath: path!)
self.player = AVPlayer(url: url)
let layer: AVPlayerLayer = AVPlayerLayer(player: self.player)
layer.frame = self.view.frame
layer.videoGravity = AVLayerVideoGravityResizeAspectFill
self.view.layer.addSublayer(layer)
self.player.play()
}
컨트롤러가 파괴되어 더 이상 사용되지 않는 경우에도 매 초 마다이 로그 메시지가 나타납니다.
AQDefaultDevice (173): skipping input stream 0 0 0x0
이 로그를 숨기는 방법을 묻지 않습니다. 내가 설정하여 해당 작업을 수행하는 방법을 알고 OS_ACTIVITY_MODE
에 disable
( 이 로그를 숨기는 방법이를 참조하십시오 ). 내 관심사는 컨트롤러가 파괴 된 후에도 영화가 여전히 어떻게 든 재생되고 있다는 것입니다. 영화를 재생하는 방식에 문제가 있습니까? 아니면 추가 정리를 수행해야합니까?
답변
iOS Simulator (xcode 8.1)에서 AVPlayer Foundation을 사용할 때이 문제가 발생하지만 iOS 장치에 더 이상 기록되지 않습니다. 제 생각에는 로그 버그입니다. 플레이어 또는 레이어가 파괴되었습니다.
최신 정보
원치 않는 로그 메시지 를 수정 하기 위해 이것을 얻었습니다.
답변
아니요, 당신은 아무 잘못도 없습니다. 이것은 Xcode8 + iOS10의 로그 관련 버그입니다.
우리는 이런 식으로 그것을 얻을 수 있습니다 (장치와 시뮬레이터는 다른 값이 필요합니다) :
이름 OS_ACTIVITY_MODE
과 값을 추가 ${DEBUG_ACTIVITY_MODE}
하고 확인하십시오 (제품-> 구성표-> 구성표 편집-> 실행-> 인수-> 환경에서).
사용자 정의 설정을 추가 DEBUG_ACTIVITY_MODE
추가 한 후, Any iOS Simulator SDK
대한 Debug
과에의 값을 설정 disable
(프로젝트에서 -> 빌드 설정 -> + -> 사용자 정의 설정)
답변
실제로 대답은 아니지만 누군가가 이것을 디버깅하는 데 도움이 될 수있는 더 많은 단서가 있습니다 …
Xcode 9 / iOS 11 프로젝트에서 AVFoundation 프레임 워크를 제거하자마자이 경고가 표시되기 시작했습니다. AVFoundation (특히 AVPlayer 및 AVPlayerLayer)을 사용하고 있지만 대상의 Linked Frameworks and Libraries 편집기에서 프레임 워크를 제거한 다음 Frameworks 폴더에서 프레임 워크를 제거한 후에도 여전히 제대로 실행되고 컴파일되었습니다 (다른 런타임 경고를 제거하려고했습니다). .
Linked Frameworks and Libraries 편집기를 통해 다시 추가하면 콘솔의 런타임 경고가 제거되었습니다.