2017-12-30 43 views
0

私は、OpenTokを使ってiOS用のボイス&ビデオチャットアプリを作っています。ビデオストリームとオーディオ専用ストリームのオーディオは、ヘッドセットが接続されているときに検出されます。そうでなければ、スピーカフォンで再生されます。これをどのように変更しますか?オーディオ装置およびオーディオバスストリームのオーディオをiPhoneの通常の(スピーカーではない)スピーカーで再生するにはどうすればよいですか?

セットアップ

+0

誰も[OTAudioDeviceManager setAudioDevice:]またはOTAudioBusクラスに不運がありましたか? – spnkr

答えて

2

[OTAudioDeviceManager setAudioDevice:[[OTKBasicAudioDevice ALLOCは]のinit]。

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; 
} 

initメソッドは、デバイスであるかどうかを報告するいくつかのローカルプロパティを設定しますキャプチャは、キャプチャは、それがレンダリングとレンダリングが初期化されているかどうかをされているかどうか、初期化されているかどうか:

_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インスタンスを設定しますinitメソッド:

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

さらに参照するにはthisを参照してください。

+0

電話の小型スピーカーからオーディオを送信するオーディオドライバはありますか?通常の通話で使用するスピーカーと同じですか? – spnkr

+0

@spnkrアプリで使用するカスタムオーディオデバイスを設定するために使用します。オーディオデバイスは、オーディオキャプチャおよびレンダリングハードウェアへのアクセスを管理します。詳細についてはhttps://tokbox.com/developer/sdks/ios/reference/Classes/OTAudioDeviceManager.html –

+0

@spnkrあなたの質問に基づいて答えます。 –

関連する問題