6

通話にミュートボタンを実装したかったのです。私はiPhone用のVOIPアプリケーションに取り組んでいます。電話がかかってきてユーザーが応答したときに、ユーザーが通話または会議をミュートできるように、[ミュート] ボタンを表示したいと考えています。PJSIP API を使用して同じことを行いました。

-(int) mutethecall
{
    pj_status_t status =   pjsua_conf_adjust_rx_level (0,0);
    status = pjsua_conf_adjust_tx_level (0,0);
    return (PJ_SUCCESS == status);
}
-(int) unmutethecall
{
    pj_status_t status =   pjsua_conf_adjust_rx_level (0,1);
    status = pjsua_conf_adjust_tx_level (0,1);
    return (PJ_SUCCESS == status);
}

問題は、このコードは 1 対 1 の通話では機能しますが、会議のシナリオでは機能しないことです。

マイクを直接オフにできるかどうか疑問に思います: PJSIP API をバイパスする iOS を使用して同じことを実装できますか?

これは可能ですか?

4

1 に答える 1

8

ミュートを解除したい場合は、pjsua_conf_disconnect と pjsua_conf_connect を使用して、会議からマイクを完全に切断できます。

トリックを実行するいくつかの Objective-C コードを次に示します。

+(void)muteMicrophone
{
    @try {
        if( pjsipConfAudioId != 0 ) {
            NSLog(@"WC_SIPServer microphone disconnected from call");
            pjsua_conf_disconnect(0, pjsipConfAudioId);
        }
    }
    @catch (NSException *exception) {
        NSLog(@"Unable to mute microphone: %@", exception);
    }
}

+(void)unmuteMicrophone
{
    @try {
        if( pjsipConfAudioId != 0 ) {
            NSLog(@"WC_SIPServer microphone reconnected to call");
            pjsua_conf_connect(0,pjsipConfAudioId);
        }
    }
    @catch (NSException *exception) {
        NSLog(@"Unable to un-mute microphone: %@", exception);
    }
}

pjsipConfAudioID は、呼び出しが確立されたときに取得されたことに注意してください。これも Objective-C で...

static void on_call_state(pjsua_call_id call_id, pjsip_event *e)
{
    pjsua_call_info ci;
    PJ_UNUSED_ARG(e);
    pjsua_call_get_info(call_id, &ci);
    pjsipConfAudioId = ci.conf_slot;
    ...
}

それが役立つことを願っています!

于 2012-07-26T18:44:51.097 に答える