Работает AppRTC для IOS, проблема RtcEventLog

Я хотел бы добавить интерфейс в AppRTCMobile, этот интерфейс может запустить модуль вызова webrtc, чтобы выполнить аудиовызов между двумя телефонами (LAN, уже знает IP-адрес и номер порта), но когда я запускаюсь успешно, программное обеспечение аварийно завершает работу каждый раз, когда возникает исключение, когда метод вызывается RtcEventLog. Я не знаю, является ли Calling Call разумным или нет. Я искренне благодарю вас за вашу помощь в отсутствии решения. Ниже исходного кода, пожалуйста, помогите мне найти проблему.

    std::unique_ptr<RtcEventLog> event_log = webrtc::RtcEventLog::Create();
    webrtc::Call::Config callConfig = webrtc::Call::Config(event_log.get());
    callConfig.bitrate_config.max_bitrate_bps = 500*1000;
    callConfig.bitrate_config.min_bitrate_bps = 100*1000;
    callConfig.bitrate_config.start_bitrate_bps = 250*1000;

    webrtc::AudioState::Config audio_state_config = webrtc::AudioState::Config();
    cricket::VoEWrapper* g_voe  = nullptr;
    rtc::scoped_refptr<webrtc::AudioDecoderFactory> g_audioDecoderFactory;
    g_audioDecoderFactory = webrtc::CreateBuiltinAudioDecoderFactory();
    g_voe = new cricket::VoEWrapper();
    audio_state_config.audio_processing = webrtc::AudioProcessing::Create();
    g_voe->base()->Init(NULL,audio_state_config.audio_processing,g_audioDecoderFactory);
    audio_state_config.voice_engine = g_voe->engine();

    audio_state_config.audio_mixer = webrtc::AudioMixerImpl::Create();
    callConfig.audio_state = AudioState::Create(audio_state_config);
    std::unique_ptr<RtcEventLog> event_logg = webrtc::RtcEventLog::Create();
    callConfig.event_log = event_logg.get();
    g_call = webrtc::Call::Create(callConfig);



    g_audioSendTransport = new AudioLoopbackTransport();
    webrtc::AudioSendStream::Config config(g_audioSendTransport);
    g_audioSendChannelId = g_voe->base()->CreateChannel();
    config.voe_channel_id = g_audioSendChannelId;
    g_audioSendStream = g_call->CreateAudioSendStream(config);


    webrtc::AudioReceiveStream::Config AudioReceiveConfig;
    AudioReceiveConfig.decoder_factory = g_audioDecoderFactory;
    g_audioReceiveChannelId = g_voe->base()->CreateChannel();
    AudioReceiveConfig.voe_channel_id = g_audioReceiveChannelId;
    g_audioReceiveStream = g_call->CreateAudioReceiveStream(AudioReceiveConfig);

    g_audioSendStream->Start();
    g_audioReceiveStream->Start();

Вот скриншот ошибки, которая произошла, когда произошел сбой. Пожалуйста, скажите мне, если вы хотите узнать больше.

1 ответ

Ваш код произошел сбой в event_log_->LogAudioPlayout()... Очевидно, что объект event_log_ уже освобожден.

Объекты, которыми управляют unique_ptr или scoped_refptr, будут освобождены после выполнения, но эти объекты могут все еще использоваться в вашем случае, что приведет к проблеме сбоя. Поэтому поместите эти объекты в глобальную память или сохраните их.

Другие вопросы по тегам