obs 推流编码在哪设置_obs rtmp推流地址设置

主要代码在properties-view.cpp

rtmp的URL ,key 对应的QLineEdit是在程序内动态生成的

QWidget *OBSPropertiesView::AddText(obs_property_t *prop, QFormLayout *layout,

QLabel *&label)

{

const char *name = obs_property_name(prop);

const char *val = obs_data_get_string(settings, name);

obs_text_type type = obs_proprety_text_type(prop);

if (type == OBS_TEXT_MULTILINE) {

QPlainTextEdit *edit = new QPlainTextEdit(QT_UTF8(val));

return NewWidget(prop, edit, SIGNAL(textChanged()));

} else if (type == OBS_TEXT_PASSWORD) {

QLayout *subLayout = new QHBoxLayout();

QLineEdit *edit = new QLineEdit();

QPushButton *show = new QPushButton();

show->setText(QTStr("Show"));

show->setCheckable(true);

edit->setText(QT_UTF8(val));

edit->setEchoMode(QLineEdit::Password);

subLayout->addWidget(edit);

subLayout->addWidget(show);

WidgetInfo *info = new WidgetInfo(this, prop, edit);

connect(show, &QAbstractButton::toggled,

info, &WidgetInfo::TogglePasswordText);

connect(show, &QAbstractButton::toggled, [=](bool hide)

{

show->setText(hide ? QTStr("Hide") : QTStr("Show"));

});

children.emplace_back(info);

label = new QLabel(QT_UTF8(obs_property_description(prop)));

layout->addRow(label, subLayout);

edit->setToolTip(QT_UTF8(obs_property_long_description(prop)));

connect(edit, SIGNAL(textEdited(const QString &)),

info, SLOT(ControlChanged()));

return nullptr;

}

QLineEdit *edit = new QLineEdit();

edit->setText(QT_UTF8(val));

edit->setToolTip(QT_UTF8(obs_property_long_description(prop)));

return NewWidget(prop, edit, SIGNAL(textEdited(const QString &)));

}

当修改对应URL时会触发 void WidgetInfo::ControlChanged();

最后把数据写到settings中

void WidgetInfo::TextChanged(const char *setting)

{

obs_text_type type = obs_proprety_text_type(property);

if (type == OBS_TEXT_MULTILINE) {

QPlainTextEdit *edit = static_cast(widget);

obs_data_set_string(view->settings, setting,

QT_TO_UTF8(edit->toPlainText()));

return;

}

QLineEdit *edit = static_cast(widget);

obs_data_set_string(view->settings, setting, QT_TO_UTF8(edit->text()));

}当点击确定时 ,会触发SaveStream1Settings

void OBSBasicSettings::SaveStream1Settings()

{

QString streamType = GetComboData(ui->streamType);

obs_service_t *oldService = main->GetService();

obs_data_t *hotkeyData = obs_hotkeys_save_service(oldService);

obs_service_t *newService = obs_service_create(QT_TO_UTF8(streamType),

"default_service", streamProperties->GetSettings(),

hotkeyData);

obs_data_release(hotkeyData);

if (!newService)

return;

main->SetService(newService);

main->SaveService();

obs_service_release(newService);

}

读取现在配置的settings,创建直播service,最后再把所有的配置信息保存到本地文件中

C:\Users\Administrator\AppData\Roaming\obs-studio\basic\profiles\info\service.json

void OBSBasic::SaveService()

{

if (!service)

return;

char serviceJsonPath[512];

int ret = GetProfilePath(serviceJsonPath, sizeof(serviceJsonPath),

SERVICE_PATH);

if (ret <= 0)

return;

obs_data_t *data = obs_data_create();

obs_data_t *settings = obs_service_get_settings(service);

obs_data_set_string(data, "type", obs_service_get_type(service));

obs_data_set_obj(data, "settings", settings);

if (!obs_data_save_json_safe(data, serviceJsonPath, "tmp", "bak"))

blog(LOG_WARNING, "Failed to save service");

obs_data_release(settings);

obs_data_release(data);

} 下次程序启动时直接读取service.json

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值