带IOS的PJSip,话筒音量非常低

带IOS的PJSip,话筒音量非常低,ios,objective-c,iphone,pjsip,avaudiosession,Ios,Objective C,Iphone,Pjsip,Avaudiosession,我们已经创建了一个VOIP软电话,将呼叫方连接到会议网桥。 会议桥接器提示,普通电话上的呼叫者可以很好地听到,但软电话的输入几乎听不见 我们正在使用PJSip、AVAudioSession、Objective C和IOS 10.2 我们尝试使用音频会话设置输入增益,但增益不可设置 有人有什么想法吗? 谢谢您需要在此处混合使用3种iOS特定功能 1.音频会话类别 根据和代码,我将它们列在下面: /* Use this category for background sounds such as

我们已经创建了一个VOIP软电话,将呼叫方连接到会议网桥。 会议桥接器提示,普通电话上的呼叫者可以很好地听到,但软电话的输入几乎听不见

我们正在使用PJSip、AVAudioSession、Objective C和IOS 10.2

我们尝试使用音频会话设置输入增益,但增益不可设置

有人有什么想法吗?
谢谢

您需要在此处混合使用3种iOS特定功能

1.音频会话类别 根据和代码,我将它们列在下面:

/*  Use this category for background sounds such as rain, car engine noise, etc.  
 Mixes with other music. */
public let AVAudioSessionCategoryAmbient: String

/*  Use this category for background sounds.  Other music will stop playing. */
public let AVAudioSessionCategorySoloAmbient: String

/* Use this category for music tracks.*/
public let AVAudioSessionCategoryPlayback: String

/*  Use this category when recording audio. */
public let AVAudioSessionCategoryRecord: String

/*  Use this category when recording and playing back audio. */
public let AVAudioSessionCategoryPlayAndRecord: String

/*  Use this category when using a hardware codec or signal processor while
 not playing or recording audio. */
@available(iOS, introduced: 3.0, deprecated: 10.0)
public let AVAudioSessionCategoryAudioProcessing: String

/*  Use this category to customize the usage of available audio accessories and built-in audio hardware.
 For example, this category provides an application with the ability to use an available USB output 
 and headphone output simultaneously for separate, distinct streams of audio data. Use of 
 this category by an application requires a more detailed knowledge of, and interaction with, 
 the capabilities of the available audio routes.  May be used for input, output, or both.
 Note that not all output types and output combinations are eligible for multi-route.  Input is limited
 to the last-in input port. Eligible inputs consist of the following:
    AVAudioSessionPortUSBAudio, AVAudioSessionPortHeadsetMic, and AVAudioSessionPortBuiltInMic.  
 Eligible outputs consist of the following: 
    AVAudioSessionPortUSBAudio, AVAudioSessionPortLineOut, AVAudioSessionPortHeadphones, AVAudioSessionPortHDMI, 
    and AVAudioSessionPortBuiltInSpeaker.  
 Note that AVAudioSessionPortBuiltInSpeaker is only allowed to be used when there are no other eligible 
 outputs connected.  */
@available(iOS 6.0, *)
public let AVAudioSessionCategoryMultiRoute: String
对于您的用例,我将选择
AVAudioSessionCategoryPlayAndRecord
并使用

对于swift:

AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayAndRecord)
对于Obj-c

[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayAndRecord error:&err]
2.音频会话模式 这些模式有助于自动设置适当的增益、回声消除和其他音频处理功能

/* The default mode */
/*!
@abstract      Modes modify the audio category in order to introduce behavior that is tailored to the specific
use of audio within an application.  Available in iOS 5.0 and greater.
 */
@available(iOS 5.0, *)
public let AVAudioSessionModeDefault: String

/* Only valid with AVAudioSessionCategoryPlayAndRecord.  Appropriate for Voice over IP
(VoIP) applications.  Reduces the number of allowable audio routes to be only those
that are appropriate for VoIP applications and may engage appropriate system-supplied
signal processing.  Has the side effect of setting AVAudioSessionCategoryOptionAllowBluetooth */
@available(iOS 5.0, *)
public let AVAudioSessionModeVoiceChat: String

/* Set by Game Kit on behalf of an application that uses a GKVoiceChat object; valid
 only with the AVAudioSessionCategoryPlayAndRecord category.
 Do not set this mode directly. If you need similar behavior and are not using
 a GKVoiceChat object, use AVAudioSessionModeVoiceChat instead. */
@available(iOS 5.0, *)
public let AVAudioSessionModeGameChat: String

/* Only valid with AVAudioSessionCategoryPlayAndRecord or AVAudioSessionCategoryRecord.
 Modifies the audio routing options and may engage appropriate system-supplied signal processing. */
@available(iOS 5.0, *)
public let AVAudioSessionModeVideoRecording: String

/* Appropriate for applications that wish to minimize the effect of system-supplied signal
processing for input and/or output audio signals. */
@available(iOS 5.0, *)
public let AVAudioSessionModeMeasurement: String

/* Engages appropriate output signal processing for movie playback scenarios.  Currently
only applied during playback over built-in speaker. */
@available(iOS 6.0, *)
public let AVAudioSessionModeMoviePlayback: String

/* Only valid with kAudioSessionCategory_PlayAndRecord. Reduces the number of allowable audio
routes to be only those that are appropriate for video chat applications. May engage appropriate
system-supplied signal processing.  Has the side effect of setting
AVAudioSessionCategoryOptionAllowBluetooth and AVAudioSessionCategoryOptionDefaultToSpeaker. */
@available(iOS 7.0, *)
public let AVAudioSessionModeVideoChat: String

/* Appropriate for applications which play spoken audio and wish to be paused (via audio session interruption) rather than ducked
if another app (such as a navigation app) plays a spoken audio prompt.  Examples of apps that would use this are podcast players and
audio books.  For more information, see the related category option AVAudioSessionCategoryOptionInterruptSpokenAudioAndMixWithOthers. */
@available(iOS 9.0, *)
public let AVAudioSessionModeSpokenAudio: String
我将为您的案例选择
AVAudioSessionModeVideoChat
,并使用

迅捷的

Obj-c

3.音频路由 默认情况下,对于大多数模式/类别,音频路由到
耳机/接收器
。如果您正在查看扬声器模式,则必须使用手动设置

迅捷的

Obj-c


在iOS 9.3.5上,我的应用程序也出现了这个问题。我发布了一个问题,也许有人可以提示我们如何在飞行中放大捕获的数据。你可以试试这个:这些设置不会改变输入音量,我已经试过了。你还有别的建议吗?
AVAudioSession.sharedInstance().setMode(AVAudioSessionModeVideoChat)
[[AVAudioSession sharedInstance] setMode:AVAudioSessionModeVideoChat error:&err]
AVAudioSession.sharedInstance().overrideOutputAudioPort(AVAudioSessionPortOverride.speaker)
[[AVAudioSession sharedInstance] overrideOutputAudioPort:AVAudioSessionPortOverrideSpeaker error:nil];