mirror of
https://github.com/obsproject/obs-studio.git
synced 2024-09-19 20:32:15 +02:00
UI: Add option to select recording format
Add a listboxes to recording to allow changing file formats (allows mp4, mov, mkv, ts, flv)
This commit is contained in:
parent
227508a72a
commit
d07664b129
@ -257,6 +257,7 @@ Basic.Settings.Stream.StreamType="Stream Type"
|
||||
|
||||
# basic mode 'output' settings
|
||||
Basic.Settings.Output="Output"
|
||||
Basic.Settings.Output.Format="Recording Format"
|
||||
Basic.Settings.Output.Encoder="Encoder"
|
||||
Basic.Settings.Output.SelectDirectory="Select Recording Directory"
|
||||
Basic.Settings.Output.SelectFile="Select Recording File"
|
||||
|
@ -430,14 +430,14 @@
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item row="1" column="0">
|
||||
<item row="2" column="0">
|
||||
<widget class="QLabel" name="label_19">
|
||||
<property name="text">
|
||||
<string>Basic.Settings.Output.VideoBitrate</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="1">
|
||||
<item row="2" column="1">
|
||||
<widget class="QSpinBox" name="simpleOutputVBitrate">
|
||||
<property name="minimum">
|
||||
<number>200</number>
|
||||
@ -450,14 +450,14 @@
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="0">
|
||||
<item row="3" column="0">
|
||||
<widget class="QLabel" name="label_20">
|
||||
<property name="text">
|
||||
<string>Basic.Settings.Output.AudioBitrate</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="1">
|
||||
<item row="3" column="1">
|
||||
<widget class="QComboBox" name="simpleOutputABitrate">
|
||||
<property name="currentIndex">
|
||||
<number>4</number>
|
||||
@ -504,7 +504,7 @@
|
||||
</item>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="3" column="1">
|
||||
<item row="4" column="1">
|
||||
<widget class="QCheckBox" name="simpleOutReconnect">
|
||||
<property name="text">
|
||||
<string>Basic.Settings.Output.Reconnect</string>
|
||||
@ -514,28 +514,28 @@
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="4" column="0">
|
||||
<item row="5" column="0">
|
||||
<widget class="QLabel" name="label_17">
|
||||
<property name="text">
|
||||
<string>Basic.Settings.Output.RetryDelay</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="4" column="1">
|
||||
<item row="5" column="1">
|
||||
<widget class="QSpinBox" name="simpleOutRetryDelay">
|
||||
<property name="maximum">
|
||||
<number>30</number>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="5" column="0">
|
||||
<item row="6" column="0">
|
||||
<widget class="QLabel" name="label_22">
|
||||
<property name="text">
|
||||
<string>Basic.Settings.Output.MaxRetries</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="5" column="1">
|
||||
<item row="6" column="1">
|
||||
<widget class="QSpinBox" name="simpleOutMaxRetries">
|
||||
<property name="minimum">
|
||||
<number>1</number>
|
||||
@ -545,7 +545,7 @@
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="6" column="1">
|
||||
<item row="7" column="1">
|
||||
<widget class="QCheckBox" name="simpleOutAdvanced">
|
||||
<property name="text">
|
||||
<string>Basic.Settings.Output.Advanced</string>
|
||||
@ -555,7 +555,7 @@
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="7" column="1">
|
||||
<item row="8" column="1">
|
||||
<widget class="QCheckBox" name="simpleOutUseCBR">
|
||||
<property name="text">
|
||||
<string>Basic.Settings.Output.UseCBR</string>
|
||||
@ -565,7 +565,7 @@
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="8" column="0">
|
||||
<item row="9" column="0">
|
||||
<widget class="QLabel" name="label_24">
|
||||
<property name="enabled">
|
||||
<bool>true</bool>
|
||||
@ -575,7 +575,7 @@
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="8" column="1">
|
||||
<item row="9" column="1">
|
||||
<widget class="QComboBox" name="simpleOutPreset">
|
||||
<item>
|
||||
<property name="text">
|
||||
@ -619,7 +619,7 @@
|
||||
</item>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="9" column="0">
|
||||
<item row="10" column="0">
|
||||
<widget class="QCheckBox" name="simpleOutUseBufsize">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Minimum" vsizetype="Expanding">
|
||||
@ -635,7 +635,7 @@
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="9" column="1">
|
||||
<item row="10" column="1">
|
||||
<widget class="QSpinBox" name="simpleOutVBufsize">
|
||||
<property name="enabled">
|
||||
<bool>false</bool>
|
||||
@ -651,16 +651,52 @@
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="10" column="0">
|
||||
<item row="11" column="0">
|
||||
<widget class="QLabel" name="label_23">
|
||||
<property name="text">
|
||||
<string>Basic.Settings.Output.CustomEncoderSettings</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="10" column="1">
|
||||
<item row="11" column="1">
|
||||
<widget class="QLineEdit" name="simpleOutCustom"/>
|
||||
</item>
|
||||
<item row="1" column="0">
|
||||
<widget class="QLabel" name="label_45">
|
||||
<property name="text">
|
||||
<string>Basic.Settings.Output.Format</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="1">
|
||||
<widget class="QComboBox" name="simpleOutRecFormat">
|
||||
<item>
|
||||
<property name="text">
|
||||
<string notr="true">flv</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string notr="true">mp4</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string notr="true">mov</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string notr="true">mkv</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string notr="true">ts</string>
|
||||
</property>
|
||||
</item>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
@ -1074,68 +1110,50 @@
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item row="2" column="0">
|
||||
<widget class="QLabel" name="advOutRecEncLabel">
|
||||
<property name="text">
|
||||
<string>Basic.Settings.Output.Encoder</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="1">
|
||||
<widget class="QComboBox" name="advOutRecEncoder"/>
|
||||
</item>
|
||||
<item row="3" column="0">
|
||||
<widget class="QCheckBox" name="advOutRecUseRescale">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Minimum" vsizetype="Expanding">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="layoutDirection">
|
||||
<enum>Qt::RightToLeft</enum>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Basic.Settings.Output.Adv.Rescale</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="3" column="1">
|
||||
<widget class="QWidget" name="advOutRecRescaleContainer" native="true">
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_4">
|
||||
<property name="leftMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="topMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="rightMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="bottomMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<item>
|
||||
<widget class="QComboBox" name="advOutRecRescale">
|
||||
<property name="enabled">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="editable">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="0">
|
||||
<widget class="QLabel" name="label_43">
|
||||
<property name="text">
|
||||
<string>Basic.Settings.Output.Format</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="1">
|
||||
<widget class="QComboBox" name="advOutRecFormat">
|
||||
<item>
|
||||
<property name="text">
|
||||
<string notr="true">flv</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string notr="true">mp4</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string notr="true">mov</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string notr="true">mkv</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string notr="true">ts</string>
|
||||
</property>
|
||||
</item>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="0">
|
||||
<widget class="QLabel" name="label_29">
|
||||
<property name="text">
|
||||
<string>Basic.Settings.Output.Adv.AudioTrack</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="1">
|
||||
<item row="2" column="1">
|
||||
<widget class="QWidget" name="widget_9" native="true">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Maximum" vsizetype="Preferred">
|
||||
@ -1190,6 +1208,60 @@
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="3" column="0">
|
||||
<widget class="QLabel" name="advOutRecEncLabel">
|
||||
<property name="text">
|
||||
<string>Basic.Settings.Output.Encoder</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="3" column="1">
|
||||
<widget class="QComboBox" name="advOutRecEncoder"/>
|
||||
</item>
|
||||
<item row="4" column="0">
|
||||
<widget class="QCheckBox" name="advOutRecUseRescale">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Minimum" vsizetype="Expanding">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="layoutDirection">
|
||||
<enum>Qt::RightToLeft</enum>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Basic.Settings.Output.Adv.Rescale</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="4" column="1">
|
||||
<widget class="QWidget" name="advOutRecRescaleContainer" native="true">
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_4">
|
||||
<property name="leftMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="topMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="rightMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="bottomMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<item>
|
||||
<widget class="QComboBox" name="advOutRecRescale">
|
||||
<property name="enabled">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="editable">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
@ -2017,12 +2089,20 @@
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="7" colspan="2">
|
||||
<item row="7" column="0" colspan="2">
|
||||
<widget class="QScrollArea" name="audioSourceScrollArea">
|
||||
<property name="widgetResizable">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<widget class="QWidget" name="audioSourceWidget">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>98</width>
|
||||
<height>28</height>
|
||||
</rect>
|
||||
</property>
|
||||
</widget>
|
||||
</widget>
|
||||
</item>
|
||||
@ -2356,16 +2436,24 @@
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<widget class="QWidget" name="hotkeyWidget">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>98</width>
|
||||
<height>28</height>
|
||||
</rect>
|
||||
</property>
|
||||
<layout class="QFormLayout" name="hotkeyLayout">
|
||||
<property name="verticalSpacing">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="fieldGrowthPolicy">
|
||||
<enum>QFormLayout::AllNonFixedFieldsGrow</enum>
|
||||
</property>
|
||||
<property name="labelAlignment">
|
||||
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
||||
</property>
|
||||
<property name="verticalSpacing">
|
||||
<number>0</number>
|
||||
</property>
|
||||
</layout>
|
||||
</widget>
|
||||
</widget>
|
||||
@ -2399,8 +2487,8 @@
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>724</width>
|
||||
<height>536</height>
|
||||
<width>734</width>
|
||||
<height>553</height>
|
||||
</rect>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="verticalLayout_16">
|
||||
|
@ -216,6 +216,8 @@ bool SimpleOutput::StartRecording()
|
||||
|
||||
const char *path = config_get_string(main->Config(),
|
||||
"SimpleOutput", "FilePath");
|
||||
const char *format = config_get_string(main->Config(),
|
||||
"SimpleOutput", "RecFormat");
|
||||
|
||||
os_dir_t *dir = path ? os_opendir(path) : nullptr;
|
||||
|
||||
@ -235,7 +237,7 @@ bool SimpleOutput::StartRecording()
|
||||
if (lastChar != '/' && lastChar != '\\')
|
||||
strPath += "/";
|
||||
|
||||
strPath += GenerateTimeDateFilename("flv");
|
||||
strPath += GenerateTimeDateFilename(format);
|
||||
|
||||
SetupOutputs();
|
||||
|
||||
@ -711,6 +713,8 @@ bool AdvancedOutput::StartRecording()
|
||||
if (!ffmpegRecording) {
|
||||
const char *path = config_get_string(main->Config(),
|
||||
"AdvOut", "RecFilePath");
|
||||
const char *format = config_get_string(main->Config(),
|
||||
"AdvOut", "RecFormat");
|
||||
|
||||
os_dir_t *dir = path ? os_opendir(path) : nullptr;
|
||||
|
||||
@ -730,7 +734,7 @@ bool AdvancedOutput::StartRecording()
|
||||
if (lastChar != '/' && lastChar != '\\')
|
||||
strPath += "/";
|
||||
|
||||
strPath += GenerateTimeDateFilename("flv");
|
||||
strPath += GenerateTimeDateFilename(format);
|
||||
|
||||
obs_data_t *settings = obs_data_create();
|
||||
obs_data_set_string(settings, "path", strPath.c_str());
|
||||
|
@ -456,6 +456,8 @@ bool OBSBasic::InitBasicConfigDefaults()
|
||||
|
||||
config_set_default_string(basicConfig, "SimpleOutput", "FilePath",
|
||||
GetDefaultVideoSavePath().c_str());
|
||||
config_set_default_string(basicConfig, "SimpleOutput", "RecFormat",
|
||||
"flv");
|
||||
config_set_default_uint (basicConfig, "SimpleOutput", "VBitrate",
|
||||
2500);
|
||||
config_set_default_uint (basicConfig, "SimpleOutput", "ABitrate", 160);
|
||||
@ -489,6 +491,7 @@ bool OBSBasic::InitBasicConfigDefaults()
|
||||
|
||||
config_set_default_string(basicConfig, "AdvOut", "RecFilePath",
|
||||
GetDefaultVideoSavePath().c_str());
|
||||
config_set_default_string(basicConfig, "AdvOut", "RecFormat", "flv");
|
||||
config_set_default_bool (basicConfig, "AdvOut", "RecUseRescale",
|
||||
false);
|
||||
config_set_default_bool (basicConfig, "AdvOut", "RecMultitrack",
|
||||
|
@ -234,6 +234,7 @@ OBSBasicSettings::OBSBasicSettings(QWidget *parent)
|
||||
HookWidget(ui->outputMode, COMBO_CHANGED, OUTPUTS_CHANGED);
|
||||
HookWidget(ui->streamType, COMBO_CHANGED, STREAM1_CHANGED);
|
||||
HookWidget(ui->simpleOutputPath, EDIT_CHANGED, OUTPUTS_CHANGED);
|
||||
HookWidget(ui->simpleOutRecFormat, COMBO_CHANGED, OUTPUTS_CHANGED);
|
||||
HookWidget(ui->simpleOutputVBitrate, SCROLL_CHANGED, OUTPUTS_CHANGED);
|
||||
HookWidget(ui->simpleOutputABitrate, COMBO_CHANGED, OUTPUTS_CHANGED);
|
||||
HookWidget(ui->simpleOutReconnect, CHECK_CHANGED, OUTPUTS_CHANGED);
|
||||
@ -259,6 +260,7 @@ OBSBasicSettings::OBSBasicSettings(QWidget *parent)
|
||||
HookWidget(ui->advOutApplyService, CHECK_CHANGED, OUTPUTS_CHANGED);
|
||||
HookWidget(ui->advOutRecType, COMBO_CHANGED, OUTPUTS_CHANGED);
|
||||
HookWidget(ui->advOutRecPath, EDIT_CHANGED, OUTPUTS_CHANGED);
|
||||
HookWidget(ui->advOutRecFormat, COMBO_CHANGED, OUTPUTS_CHANGED);
|
||||
HookWidget(ui->advOutRecEncoder, COMBO_CHANGED, OUTPUTS_CHANGED);
|
||||
HookWidget(ui->advOutRecUseRescale, CHECK_CHANGED, OUTPUTS_CHANGED);
|
||||
HookWidget(ui->advOutRecRescale, CBEDIT_CHANGED, OUTPUTS_CHANGED);
|
||||
@ -907,6 +909,8 @@ void OBSBasicSettings::LoadSimpleOutputSettings()
|
||||
{
|
||||
const char *path = config_get_string(main->Config(), "SimpleOutput",
|
||||
"FilePath");
|
||||
const char *format = config_get_string(main->Config(), "SimpleOutput",
|
||||
"RecFormat");
|
||||
int videoBitrate = config_get_uint(main->Config(), "SimpleOutput",
|
||||
"VBitrate");
|
||||
int videoBufsize = config_get_uint(main->Config(), "SimpleOutput",
|
||||
@ -936,6 +940,9 @@ void OBSBasicSettings::LoadSimpleOutputSettings()
|
||||
ui->simpleOutVBufsize->setValue(
|
||||
useBufsize ? videoBufsize : videoBitrate);
|
||||
|
||||
int idx = ui->simpleOutRecFormat->findText(format);
|
||||
ui->simpleOutRecFormat->setCurrentIndex(idx);
|
||||
|
||||
SetComboByName(ui->simpleOutputABitrate,
|
||||
std::to_string(audioBitrate).c_str());
|
||||
|
||||
@ -1027,6 +1034,8 @@ void OBSBasicSettings::LoadAdvOutputRecordingSettings()
|
||||
{
|
||||
const char *type = config_get_string(main->Config(), "AdvOut",
|
||||
"RecType");
|
||||
const char *format = config_get_string(main->Config(), "AdvOut",
|
||||
"RecFormat");
|
||||
const char *path = config_get_string(main->Config(), "AdvOut",
|
||||
"RecFilePath");
|
||||
bool rescale = config_get_bool(main->Config(), "AdvOut",
|
||||
@ -1042,6 +1051,9 @@ void OBSBasicSettings::LoadAdvOutputRecordingSettings()
|
||||
ui->advOutRecUseRescale->setChecked(rescale);
|
||||
ui->advOutRecRescale->setCurrentText(rescaleRes);
|
||||
|
||||
int idx = ui->advOutRecFormat->findText(format);
|
||||
ui->advOutRecFormat->setCurrentIndex(idx);
|
||||
|
||||
switch (trackIndex) {
|
||||
case 1: ui->advOutRecTrack1->setChecked(true); break;
|
||||
case 2: ui->advOutRecTrack2->setChecked(true); break;
|
||||
@ -1962,6 +1974,7 @@ void OBSBasicSettings::SaveOutputSettings()
|
||||
SaveSpinBox(ui->simpleOutputVBitrate, "SimpleOutput", "VBitrate");
|
||||
SaveCombo(ui->simpleOutputABitrate, "SimpleOutput", "ABitrate");
|
||||
SaveEdit(ui->simpleOutputPath, "SimpleOutput", "FilePath");
|
||||
SaveCombo(ui->simpleOutRecFormat, "SimpleOutput", "RecFormat");
|
||||
SaveCheckBox(ui->simpleOutReconnect, "SimpleOutput", "Reconnect");
|
||||
SaveSpinBox(ui->simpleOutRetryDelay, "SimpleOutput", "RetryDelay");
|
||||
SaveSpinBox(ui->simpleOutMaxRetries, "SimpleOutput", "MaxRetries");
|
||||
@ -1989,6 +2002,7 @@ void OBSBasicSettings::SaveOutputSettings()
|
||||
RecTypeFromIdx(ui->advOutRecType->currentIndex()));
|
||||
|
||||
SaveEdit(ui->advOutRecPath, "AdvOut", "RecFilePath");
|
||||
SaveCombo(ui->advOutRecFormat, "AdvOut", "RecFormat");
|
||||
SaveComboData(ui->advOutRecEncoder, "AdvOut", "RecEncoder");
|
||||
SaveCheckBox(ui->advOutRecUseRescale, "AdvOut", "RecRescale");
|
||||
SaveCombo(ui->advOutRecRescale, "AdvOut", "RecRescaleRes");
|
||||
|
Loading…
Reference in New Issue
Block a user