OpenTok을 사용하여 iOS 용 음성 및 영상 채팅 앱을 만들고 있습니다. 비디오 스트림과 오디오 전용 스트림의 오디오는 헤드셋이 연결되어있을 때 작동합니다. 그렇지 않으면 스피커폰을 통해 재생됩니다. 어떻게 변경합니까? 오디오 장치와 오디오 버스 설정스트림의 오디오를 iPhone의 일반 (스피커폰 아님) 스피커로 재생하려면 어떻게합니까?
답변
[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을 참조하십시오.
전화기의 소형 전화기 스피커를 통해 오디오를 보내는 오디오 드라이버가 있습니까? 평소 통화에서 사용하는 스피커와 비슷합니까? – spnkr
@spnkr 앱에서 사용할 맞춤 오디오 장치를 설정하는 데 사용됩니다. 오디오 장치는 오디오 캡처 및 렌더링 하드웨어에 대한 액세스를 관리합니다. 자세한 내용은 https://tokbox.com/developer/sdks/ios/reference/Classes/OTAudioDeviceManager.html –
@spnkr 귀하의 질문에 따라 답변 드리겠습니다. –
누구나 [OTAudioDeviceManager setAudioDevice :] 또는 OTAudioBus 클래스에 문제가 없었습니까? – spnkr