UI: Add option to select recording format

Add a listboxes to recording to allow changing file formats (allows mp4,
mov, mkv, ts, flv)
master
jp9000 2015-05-29 09:45:54 -07:00
parent 227508a72a
commit d07664b129
5 changed files with 190 additions and 80 deletions

View File

@ -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"

View 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">

View File

@ -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());

View File

@ -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",

View File

@ -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");