2017-04-30 1 views
3

이 오류를 검색했지만 동일한 오류가있는 사람을 찾지 못했습니다. 나는이 오류의 의미를 안다고 확신하지만 그것을 피하는 방법을 모른다.다음 오류를 방지하려면 어떻게해야합니까? AVAudioEngineGraph 필수 조건은 false입니다. NULL! = tap

기본적으로 MultipeerConnectivity를 통해 전화가 왔습니다. AVAudioEngine을 사용하여 오디오를 녹음하고 피어의 오디오를 재생합니다.

나는 사용자가 말한 시간과 다른 장치가 해당 오디오를 재생하는 데 걸리는 시간 사이에 꽤 큰 지연이 있음을 발견했지만 탭을 제거하고 다시 설치하여 문제를 해결했습니다. . 이것은 모든 지연을 완전히 제거합니다. 그러나 때로는 오류가 발생합니다.

또한 사용자가 마이크를 음소거 할 수있게하고, 음소거를 클릭하면 탭이 제거됩니다. 음소거를 클릭하면 탭이 재설치됩니다.

AVAudioEngineGraph.mm:2707 : 다시 때때로이 같은 오류가 발생 InputAvailable : 필요 조건이 거짓! NULL =이 오류는하지만 완전히 무작위 것 같다

누릅니다. 때로는 그것이 발생하지만, 그렇지 않은 경우도 있습니다. 오류를 지속적으로 재현하지 못했습니다.


내 생각은 탭이 이미 존재하는 탭을 설치하려고하기 때문입니다 것입니다,하지만 난 그것을 방지하는 방법을 모르겠어요. 나는 꼭지가 인스톨되고있는 버스를 증가시킬 수 있다고 생각하지만, 이것은 최선의 선택처럼 보이지 않는다.

AVAudioInputNode에 특정 버스에 이미 탭이 설치되어 있는지 알려주는 속성이 있는지도 확인했지만 아무 것도 찾지 못했습니다.

누구든지이 문제에 경험이 있습니까?

+0

나는 또한이 problame 함께 붙어있다. –

+0

@NileshParmar 아직 해결책을 찾지 못했습니다. 내가 할 경우이 질문에 대한 답변을 게시합니다. – Logan

+0

감사합니다. 곧 업데이트하십시오. –

답변

1

더 나은 해결책을 찾으면 알려주십시오. 이것은 100 % 완벽한 해결책은 아니지만, 문제에 관해 제가 거의 도움을주지 않고 찾을 수있는 최선의 방법이었습니다.

다소 해결 방법이 있지만 더 나은 해결책이 될 수 있습니다. 이렇게해도 문제가 완전히 제거되는 것은 아니며 변경을 한 후에 한두 번 문제를 보았습니다.하지만 문제가 발생할 확률은 줄어 듭니다.

기본적으로 내가 한 것은 탭을 제거 할 때 탭 설치를 허용하기 전에 완료 될 때까지 기다려야한다는 것입니다. 필자의 경우에는 음소거 버튼이 있었으며 사용자가 탭을 제거하는 것보다 빠르게 버튼을 터치하지 못하도록했습니다. 따라서 버튼을 터치하자마자 탭을 제거해야만 버튼을 다시 활성화 할 수 있습니다.

둘째,이 작업이 전혀 수행되지 않을 수도 있지만 inputNode에 탭을 설치하기 전에 항상 inputNode.reset()을 호출 한 다음 inputNode.removeTap (onBus : 0)을 먼저 호출 한 다음 설치하십시오. 탭.

inputNode.reset() 
inputNode.removeTap(onBus: 0) 
inputNode.installTap(onBus: 0, bufferSize: 4096, format: localInputFormat) { 
    ... 
} 
+0

좋습니다. 나는 이것을위한 다른 해결책이있다.내가 처음 installTapOnbus를하고 20 초마다 전화를 걸었던 타이머를 다시 시작하면 녹음 인식이 계속됩니다. 나는 100 %가 아니라 95 %의 문제를 해결했다. –

관련 문제