Browse Source

UI: Add option to select recording format

Add a listboxes to recording to allow changing file formats (allows mp4,
mov, mkv, ts, flv)
jp9000 10 years ago
parent
commit
d07664b129

+ 1 - 0
obs/data/locale/en-US.ini

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

+ 157 - 69
obs/forms/OBSBasicSettings.ui

@@ -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>
+                           <item row="1" column="0">
+                            <widget class="QLabel" name="label_43">
                              <property name="text">
-                              <string>Basic.Settings.Output.Adv.Rescale</string>
+                              <string>Basic.Settings.Output.Format</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>
+                           <item row="1" column="1">
+                            <widget class="QComboBox" name="advOutRecFormat">
+                             <item>
+                              <property name="text">
+                               <string notr="true">flv</string>
                               </property>
-                              <property name="topMargin">
-                               <number>0</number>
+                             </item>
+                             <item>
+                              <property name="text">
+                               <string notr="true">mp4</string>
                               </property>
-                              <property name="rightMargin">
-                               <number>0</number>
+                             </item>
+                             <item>
+                              <property name="text">
+                               <string notr="true">mov</string>
                               </property>
-                              <property name="bottomMargin">
-                               <number>0</number>
+                             </item>
+                             <item>
+                              <property name="text">
+                               <string notr="true">mkv</string>
                               </property>
-                              <item>
-                               <widget class="QComboBox" name="advOutRecRescale">
-                                <property name="enabled">
-                                 <bool>false</bool>
-                                </property>
-                                <property name="editable">
-                                 <bool>true</bool>
-                                </property>
-                               </widget>
-                              </item>
-                             </layout>
+                             </item>
+                             <item>
+                              <property name="text">
+                               <string notr="true">ts</string>
+                              </property>
+                             </item>
                             </widget>
                            </item>
-                           <item row="1" column="0">
+                           <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">

+ 6 - 2
obs/window-basic-main-outputs.cpp

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

+ 3 - 0
obs/window-basic-main.cpp

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

+ 14 - 0
obs/window-basic-settings.cpp

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