2017-12-30 13 views
0

OpenTok을 사용하여 iOS 용 음성 및 영상 채팅 앱을 만들고 있습니다. 비디오 스트림과 오디오 전용 스트림의 오디오는 헤드셋이 연결되어있을 때 작동합니다. 그렇지 않으면 스피커폰을 통해 재생됩니다. 어떻게 변경합니까? 오디오 장치와 오디오 버스 설정스트림의 오디오를 iPhone의 일반 (스피커폰 아님) 스피커로 재생하려면 어떻게합니까?

+0

누구나 [OTAudioDeviceManager setAudioDevice :] 또는 OTAudioBus 클래스에 문제가 없었습니까? – spnkr

답변

2

[OTAudioDeviceManager setAudioDevice : [OTKBasicAudioDevice ALLOC]을 초기화하기];

OpenTok iOS SDK에 정의 된 OTAudioFormat 클래스를 사용하여 사용자 정의 오디오 드라이버에서 사용되는 오디오 포맷을 정의하십시오. 에서 [OTKBasicAudioDevice INIT]에있어서, 상기 OTAudioFormat 클래스의 인스턴스를 생성하고, 오디오 포맷에 대한 채널의 샘플링 속도 및 횟수 설정 :

- (id)init 
{ 
    self = [super init]; 
    if (self) { 
     self = [super init]; 
     if (self) { 
      _otAudioFormat = [[OTAudioFormat alloc] init]; 
      _otAudioFormat.sampleRate = kSampleRate; 
      _otAudioFormat.numChannels = 1; 
     } 

     // ... 
    } 
    return self; 
} 

초기화 방법은 또한 디바이스가 있는지보고 몇몇 로컬 속성 설정을 이 렌더링 여부 캡쳐가 초기화되었는지 여부와 묘화가 초기화되었는지 여부를 캡처 :

_isDeviceCapturing = NO; 
_isCaptureInitialized = NO; 
_isDeviceRendering = NO; 
_isRenderingInitialized = NO; 

init 메소드는 파일로 수신 된 오디오를 저장하는 파일을 설정한다.

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, 
                NSUserDomainMask, 
                YES); 
NSString *path = [paths[0] stringByAppendingPathComponent:kOutputFileSampleName]; 

[[NSFileManager defaultManager] createFileAtPath:path 
             contents:nil 
             attributes:nil]; 
_outFile = [NSFileHandle fileHandleForReadingAtPath:path]; 

:이 정의 오디오 드라이버의 오디오 렌더러의 사용 설명하기 간단히 수행된다 OTKBasicAudioDevice setAudioBus를 : (OTAudioDevice 프로토콜에 의해 정의 된) 방법은 오디오 기기에 의해 사용되는 오디오 버스 세트 (정의한 OTAudioBus 프로토콜에 의해). 오디오 장치는이 개체를 사용하여 세션에서 오디오 샘플을 보내고받습니다. 이 객체 인스턴스는 구현 객체의 수명 동안 유지됩니다. 게시자는 OTAudioBus 개체에 액세스하여 오디오 샘플을 가져옵니다. 구독자는 오디오 샘플 (구독 된 스트림에서)을 OTAudioBus 개체로 보냅니다. [OTAudioDevice setAudioBus :] 여기의 OTKBasicAudioDevice 구현은있어서

- (BOOL)setAudioBus:(id<OTAudioBus>)audioBus 
{ 
    self.otAudioBus = audioBus; 
    return YES; 
} 

에서 [OTKBasicAudioDevice setAudioBus : (OTAudioDevice 프로토콜에 의해 정의 된) 방법에있어서 오디오 렌더링 포맷으로 상기에서 작성된 OTAudioFormat 인스턴스를 설정 초기화 방법 :

- (OTAudioFormat*)renderFormat 
{ 
    return self.otAudioFormat; 
} 

자세한 내용을 보려면 this을 참조하십시오.

+0

전화기의 소형 전화기 스피커를 통해 오디오를 보내는 오디오 드라이버가 있습니까? 평소 통화에서 사용하는 스피커와 비슷합니까? – spnkr

+0

@spnkr 앱에서 사용할 맞춤 오디오 장치를 설정하는 데 사용됩니다. 오디오 장치는 오디오 캡처 및 렌더링 하드웨어에 대한 액세스를 관리합니다. 자세한 내용은 https://tokbox.com/developer/sdks/ios/reference/Classes/OTAudioDeviceManager.html –

+0

@spnkr 귀하의 질문에 따라 답변 드리겠습니다. –

관련 문제