Skip to content

Commit

Permalink
update sdk to 38200 and add video buffer
Browse files Browse the repository at this point in the history
  • Loading branch information
sbd021 committed Apr 20, 2022
1 parent b7c6826 commit ba895b9
Show file tree
Hide file tree
Showing 13 changed files with 124 additions and 45 deletions.
2 changes: 1 addition & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -92,7 +92,7 @@ if(WIN32)
libobs
Qt5::Core
Qt5::Widgets
"${CMAKE_SOURCE_DIR}/deps/Agora/${AGORA_ARCH}/agora_rtc_sdk.lib"
"${CMAKE_SOURCE_DIR}/deps/Agora/${AGORA_ARCH}/agora_rtc_sdk.dll.lib"
"${CMAKE_SOURCE_DIR}/deps/libyuv/${AGORA_ARCH}/yuv.lib"
"${CMAKE_SOURCE_DIR}/deps/curl/${AGORA_ARCH}/libcurl.lib")
endif()
Expand Down
4 changes: 3 additions & 1 deletion data/locale/Ru-RU.ini
Original file line number Diff line number Diff line change
Expand Up @@ -108,4 +108,6 @@ Plugin.Settings.Camera.Token="Camera Занята(на выбор)"
Plugin.Settings.Error.EmptyUrl="URL запроса пуст. Заполните действительный http-URL"
Basic.Main.Agora.Invalid.CameraToken = "Ошибка подключения камеры к каналу, возможно, неверный appid/канал, недопустимый или просроченный токен и т. Д."
Basic.Main.Agora.Empty.CameraToken = "Ошибка присоединения камеры к каналу, токен камеры пуст."
Plugin.Settings.Log.Interval="Audio and Video log interval(seconds)"
Plugin.Settings.Log.Interval="Audio and Video log interval(seconds)"
Basic.Setting.Video.Buffer.Interval="Время задержки стрима (макс. 10 мин.)"
Second="секунда "
4 changes: 3 additions & 1 deletion data/locale/de-DE.ini
Original file line number Diff line number Diff line change
Expand Up @@ -108,4 +108,6 @@ Plugin.Settings.Camera.Token="Kamera-Token(Optional)"
Plugin.Settings.Error.EmptyUrl="Anfrage-URL ist leer. Geben Sie eine gültige http-URL ein"
Basic.Main.Agora.Invalid.CameraToken="Kamera-Verbindung fehlgeschlagen, möglicherweise ungültige Appid, ungültiger Kanal, ungültiger Token, abgelaufener Token usw."
Basic.Main.Agora.Empty.CameraToken="Kamera-Verbindung fehlgeschlagen, Kamera-Token ist leer."
Plugin.Settings.Log.Interval="Audio and Video log interval(seconds)"
Plugin.Settings.Log.Interval="Audio and Video log interval(seconds)"
Basic.Setting.Video.Buffer.Interval="Stream-Verzögerung(max.: 10 min.)"
Second="zweite"
4 changes: 3 additions & 1 deletion data/locale/en-US.ini
Original file line number Diff line number Diff line change
Expand Up @@ -109,4 +109,6 @@ Plugin.Settings.Error.EmptyUrl="Reuqest url is empty. Fill valid http url"
Basic.Main.Agora.Invalid.CameraToken="Camera Join Channel Failed, maybe invalid token , expired token etc."
Basic.Main.Agora.Empty.CameraToken="Camera Join Channel Failed, camera token is empty."
Plugin.Settings.Log.Interval="Audio and Video log interval(seconds)"
Basic.Settings.SetAudioProfile="Set Audio Profile"
Basic.Settings.SetAudioProfile="Set Audio Profile"
Basic.Setting.Video.Buffer.Interval="Video Buffer Time(Maximum 10 minitues)"
Second="Seconds"
4 changes: 3 additions & 1 deletion data/locale/es-ES.ini
Original file line number Diff line number Diff line change
Expand Up @@ -108,4 +108,6 @@ Plugin.Settings.Camera.Token="Token de cámara(opcional)"
Plugin.Settings.Error.EmptyUrl="La URL de la solicitud está vacía. Complete una URL http válida"
Basic.Main.Agora.Invalid.CameraToken="Falló la activación de la cámara del canal, puede ser appid no válido, canal no válido, token no válido, token caducado, etc."
Basic.Main.Agora.Empty.CameraToken="Falló la activación de la cámara del canal, el token de la cámara está vacío."
Plugin.Settings.Log.Interval="Audio and Video log interval(seconds)"
Plugin.Settings.Log.Interval="Audio and Video log interval(seconds)"
Basic.Setting.Video.Buffer.Interval="duración de la caché de transmisión (máx.: 10 minutos)"
Second="Segundos"
4 changes: 3 additions & 1 deletion data/locale/zh-CN.ini
Original file line number Diff line number Diff line change
Expand Up @@ -109,4 +109,6 @@ Plugin.Settings.Error.EmptyUrl="请求信息为空。填入有效http url"
Basic.Main.Agora.Invalid.CameraToken="摄像头加入频道失败,摄像头Token无效,或者Token过期"
Basic.Main.Agora.Empty.CameraToken="摄像头加入频道失败,摄像头Token为空"
Plugin.Settings.Log.Interval="音视频日志时间间隔(秒)"
Basic.Settings.SetAudioProfile="设置Audio Profile"
Basic.Settings.SetAudioProfile="设置Audio Profile"
Basic.Setting.Video.Buffer.Interval="视频缓存时间(最长10分钟)"
Second=""
4 changes: 3 additions & 1 deletion data/locale/zh-TW.ini
Original file line number Diff line number Diff line change
Expand Up @@ -110,4 +110,6 @@ Plugin.Settings.Error.EmptyUrl="请求信息为空。填入有效http url"
Basic.Main.Agora.Invalid.CameraToken="攝像頭加入頻道失敗,攝像頭Token無效,或者Token過期"
Basic.Main.Agora.Empty.CameraToken="攝像頭加入頻道失敗,攝像頭Token爲空"
Plugin.Settings.Log.Interval="音視頻日志時間間隔(秒)"
Basic.Settings.SetAudioProfile="設置Audio Profile"
Basic.Settings.SetAudioProfile="設置Audio Profile"
Basic.Setting.Video.Buffer.Interval="視頻緩存時間(最長時間10分鐘)"
Second=""
12 changes: 10 additions & 2 deletions src/Agora/agorartcengine.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@ class AgoraRtcEngineEvent :public QObject,
emit m_engine.onRemoteVideoStateChanged(uid, (int)state, (int)reason, elapsed);
}

virtual void onRtmpStreamingStateChanged(const char *url, RTMP_STREAM_PUBLISH_STATE state, RTMP_STREAM_PUBLISH_ERROR errCode) override
virtual void onRtmpStreamingStateChanged(const char *url, RTMP_STREAM_PUBLISH_STATE state, RTMP_STREAM_PUBLISH_ERROR_TYPE errCode) override
{
emit m_engine.onRtmpStreamingStateChanged(url, state, errCode);
}
Expand Down Expand Up @@ -280,7 +280,7 @@ bool AgoraRtcEngine::InitEngine(std::string appid)
m_rtcEngine->enableVideo();
m_rtcEngine->setClientRole(CLIENT_ROLE_BROADCASTER);
m_pMediaEngine->setExternalVideoSource(true, false);
m_rtcEngine->setExternalAudioSource(true, 48000, 2);
m_pMediaEngine->setExternalAudioSource(true, 48000, 2);

m_audioDeviceManager = new AAudioDeviceManager(m_rtcEngine);
m_initialize = true;
Expand Down Expand Up @@ -569,6 +569,14 @@ void AgoraRtcEngine::SetPcmInfo(bool b, std::string path)
}
}

void AgoraRtcEngine::SetVideoBuffer(int second)
{
AParameter apm(m_rtcEngine);
char szParam[200] = { 0 };
sprintf(szParam, "{\"rtc.media_send_delay\":%d}", second * 1000);
apm->setParameters(szParam);
}

void* AgoraRtcEngine::AgoraAudioObserver_Create()
{
m_externalAudioframe.channels = 2;
Expand Down
1 change: 1 addition & 0 deletions src/Agora/agorartcengine.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -85,6 +85,7 @@ class AgoraRtcEngine : public QObject
void SetJoinFlag(bool b) { m_joined = b; }
void SetLogInterval(int interval) { m_logInterval = interval;}

void SetVideoBuffer(int second);
agora::rtc::IRtcEngine* getRtcEngine() { return m_rtcEngine; }
signals:
void onJoinChannelSuccess(const char* channel, unsigned int uid, int elapsed);
Expand Down
102 changes: 74 additions & 28 deletions src/forms/AgoraSettings.ui
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,7 @@
<item>
<widget class="QStackedWidget" name="settingsPages">
<property name="currentIndex">
<number>1</number>
<number>0</number>
</property>
<widget class="QWidget" name="agoraPage">
<layout class="QVBoxLayout" name="verticalLayout_16">
Expand Down Expand Up @@ -112,9 +112,9 @@
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<y>-112</y>
<width>679</width>
<height>506</height>
<height>570</height>
</rect>
</property>
<layout class="QVBoxLayout" name="verticalLayout_23">
Expand Down Expand Up @@ -311,6 +311,23 @@
</property>
</widget>
</item>
<item row="15" column="1">
<layout class="QHBoxLayout" name="horizontalLayout_Camera">
<item>
<widget class="QLineEdit" name="lineEditCameraUID"/>
</item>
<item>
<widget class="QLabel" name="labelCameraToken">
<property name="text">
<string>Plugin.Settings.Camera.Token</string>
</property>
</widget>
</item>
<item>
<widget class="QLineEdit" name="lineEditCameraToken"/>
</item>
</layout>
</item>
<item row="16" column="0">
<widget class="QLabel" name="labSystemCPU">
<property name="text">
Expand Down Expand Up @@ -364,44 +381,73 @@
</property>
</widget>
</item>
<item row="15" column="1">
<layout class="QHBoxLayout" name="horizontalLayout_Camera">
<item>
<widget class="QLineEdit" name="lineEditCameraUID"/>
</item>
<item>
<widget class="QLabel" name="labelCameraToken">
<property name="text">
<string>Plugin.Settings.Camera.Token</string>
</property>
</widget>
</item>
<item>
<widget class="QLineEdit" name="lineEditCameraToken"/>
</item>
</layout>
</item>
<item row="20" column="1">
<widget class="QCheckBox" name="chkPersistSaveAppid">
<property name="text">
<string>Basic.Settings.Agora.PersistSaveAppid</string>
</property>
</widget>
</item>
<item row="19" column="1">
<widget class="QCheckBox" name="chkDualStream">
<property name="text">
<string>Agora.Settings.DualStream</string>
</property>
</widget>
</item>
<item row="20" column="0">
<item row="21" column="0">
<widget class="QCheckBox" name="chkAutoLoadConfig">
<property name="text">
<string>Basic.Agora.AutoLoadConfig</string>
</property>
</widget>
</item>
<item row="21" column="1">
<widget class="QCheckBox" name="chkPersistSaveAppid">
<property name="text">
<string>Basic.Settings.Agora.PersistSaveAppid</string>
</property>
</widget>
</item>
<item row="26" column="1">
<layout class="QHBoxLayout" name="horizontalLayout_3">
<item>
<widget class="QLabel" name="labVideoBufferInterval">
<property name="text">
<string>Basic.Setting.Video.Buffer.Interval</string>
</property>
</widget>
</item>
<item>
<widget class="QSpinBox" name="spinSecond">
<property name="minimumSize">
<size>
<width>60</width>
<height>0</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>16777215</width>
<height>16777215</height>
</size>
</property>
<property name="maximum">
<number>600</number>
</property>
<property name="displayIntegerBase">
<number>10</number>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="labSecond">
<property name="maximumSize">
<size>
<width>80</width>
<height>16777215</height>
</size>
</property>
<property name="text">
<string>Second</string>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</widget>
</item>
Expand Down
9 changes: 8 additions & 1 deletion src/forms/window-agora-main.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -187,6 +187,8 @@ AgoraBasic::~AgoraBasic()
}

config_set_bool(globalAgoraConfig, "AgoraTool", "savePcm", m_settings.savePcm);
config_set_int(globalAgoraConfig, "AgoraTool", "videoInterval", m_settings.videoInterval);

config_set_bool(globalAgoraConfig, "AgoraTool", "setAudioProfile", m_settings.setAudioProfile);
config_set_uint(globalAgoraConfig, "AgoraTool", "logInterval", m_settings.logInterval);
config_set_uint(globalAgoraConfig, "AgoraTool", "InformationMode", m_settings.info_mode);
Expand Down Expand Up @@ -227,6 +229,7 @@ AgoraBasic::~AgoraBasic()

config_set_bool(globalAgoraConfig, "AgoraTool", "savePcm", false);
config_set_bool(globalAgoraConfig, "AgoraTool", "setAudioProfile", false);
config_set_int(globalAgoraConfig, "AgoraTool", "videoInterval", 0);

config_set_uint(globalAgoraConfig, "AgoraTool", "InformationMode", 0);
config_set_string(globalAgoraConfig, "AgoraTool", "InformationUrl", "");
Expand Down Expand Up @@ -387,6 +390,8 @@ void AgoraBasic::InitBasicConfig()
m_settings.logInterval = 20;

m_settings.savePcm = config_get_bool(globalAgoraConfig, "AgoraTool", "savePcm");
m_settings.videoInterval = config_get_int(globalAgoraConfig, "AgoraTool", "videoInterval");

m_settings.setAudioProfile = config_get_bool(globalAgoraConfig, "AgoraTool", "setAudioProfile");
}

Expand Down Expand Up @@ -808,7 +813,7 @@ void AgoraBasic::JoinChannel(std::string token)
joinFailedTimer.stop();
joinFailedTimer.start(10000);
blog(LOG_INFO, "agora token:%s", m_settings.token.c_str());

rtcEngine->SetVideoBuffer(m_settings.videoInterval);
rtcEngine->JoinChannel(m_settings.token.c_str()
, m_settings.channelName.c_str(), m_settings.uid, m_settings.setAudioProfile ,m_settings.bDualStream,
!m_settings.muteAllRemoteAudioVideo, !m_settings.muteAllRemoteAudioVideo,
Expand Down Expand Up @@ -1206,6 +1211,8 @@ void AgoraBasic::onJoinChannelSuccess_slot(const char* channel, unsigned int uid
obs_enum_sources(EnumSources, this);
RemoveVideoPluginFilters();
AddFilterCurrentScene();


rtcEngine->JoinChannel(m_settings.camera_token.c_str(),
m_settings.channelName.c_str(), m_settings.camera_uid);
rtcEngine->SetCameraEncoderConfiguration(
Expand Down
3 changes: 3 additions & 0 deletions src/forms/window-agora-main.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,9 @@ typedef struct tagAgoraToolSettings {
bool bDualStream = false;
bool bSendObsCamera = false;
unsigned int camera_uid = 0;

int videoInterval = 0;

std::string camera_token = "";
int plugin_camera_fps = 15;
int plugin_camera_bitrate = 0;
Expand Down
16 changes: 9 additions & 7 deletions src/forms/window-agora-settings.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -107,11 +107,11 @@ AgoraSettings::AgoraSettings(QWidget *parent)
ui->chkObsCamera->setText(tr("Plugin.Settings.SendObsCamera"));

ui->labelCameraToken->setText(tr("Plugin.Settings.Camera.Token"));
#if WIN32
#else
ui->labUrl->hide();
ui->lineEditUrl->hide();
#endif

ui->chkSavePCM->setText(tr("Basic.Settings.Agora.Save.PCM"));
ui->labVideoBufferInterval->setText(tr("Basic.Setting.Video.Buffer.Interval"));
ui->labSecond->setText(tr("Second"));

//Audio
ui->audioRecordingDevicesGroupBox->setTitle(tr("Agora.Settings.Recording"));
ui->label_2->setText(tr("Agora.Record.Devices"));
Expand Down Expand Up @@ -312,6 +312,8 @@ AgoraSettings::AgoraSettings(QWidget *parent)
HookWidget(ui->chkSetAudioProfile, CHECK_CHANGED, AUDIO_CHANGED);
HookWidget(ui->spinCPU, SPINBOX_CHANGED, GENERAL_CHANGED);
HookWidget(ui->chkLoopback, CHECK_CHANGED, AUDIO_CHANGED);

HookWidget(ui->spinSecond, SPINBOX_CHANGED, GENERAL_CHANGED);

connect(ui->chkPersistSaveAppid, &QCheckBox::toggled, this, &AgoraSettings::onChkSaveAppidSettings);
connect(ui->chkObsCamera, &QCheckBox::toggled, this, &AgoraSettings::on_chkObsCamera_check);
Expand Down Expand Up @@ -463,7 +465,7 @@ void AgoraSettings::SaveGeneralSettings()
settings.camera_uid = 0;
settings.bSendObsCamera = ui->chkObsCamera->isChecked();
settings.camera_token = ui->lineEditCameraToken->text().toStdString();
settings.cpuThreshold = ui->spinCPU->value();
settings.videoInterval = ui->spinSecond->value();

QString str = ui->lineEditLogInterval->text();
if (str.isEmpty()) {
Expand Down Expand Up @@ -599,7 +601,7 @@ void AgoraSettings::LoadGeneralSettings()
ui->lineEditAgoraRtmpWidth->setText(QString("%1").arg(settings.rtmp_width));
ui->lineEditAgoraRtmpHeight->setText(QString("%1").arg(settings.rtmp_height));
ui->spinCPU->setValue(settings.cpuThreshold);

ui->spinSecond->setValue(settings.videoInterval);
ui->chkObsCamera->setChecked(settings.bSendObsCamera);
if (settings.camera_uid > 0) {
QString strCameraUid = QString("%1").arg(settings.camera_uid);
Expand Down

0 comments on commit ba895b9

Please sign in to comment.