소스 검색

UI: Add custom muxer settings for ffmpeg-mux

Palana 10 년 전
부모
커밋
d4c4a0d1aa
4개의 변경된 파일38개의 추가작업 그리고 0개의 파일을 삭제
  1. 1 0
      obs/data/locale/en-US.ini
  2. 20 0
      obs/forms/OBSBasicSettings.ui
  3. 6 0
      obs/window-basic-main-outputs.cpp
  4. 11 0
      obs/window-basic-settings.cpp

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

@@ -334,6 +334,7 @@ Basic.Settings.Output.MaxRetries="Maximum Retries"
 Basic.Settings.Output.Advanced="Enable Advanced Encoder Settings"
 Basic.Settings.Output.EncoderPreset="Encoder Preset (higher = less CPU)"
 Basic.Settings.Output.CustomEncoderSettings="Custom Encoder Settings"
+Basic.Settings.Output.CustomMuxerSettings="Custom Muxer Settings"
 
 # basic mode 'output' settings - advanced section
 Basic.Settings.Output.Adv.Rescale="Rescale Output"

+ 20 - 0
obs/forms/OBSBasicSettings.ui

@@ -667,6 +667,16 @@
                   </property>
                  </widget>
                 </item>
+                <item row="5" column="0">
+                 <widget class="QLabel" name="label_420">
+                  <property name="text">
+                   <string>Basic.Settings.Output.CustomMuxerSettings</string>
+                  </property>
+                 </widget>
+                </item>
+                <item row="5" column="1">
+                 <widget class="QLineEdit" name="simpleOutMuxCustom"/>
+                </item>
                </layout>
               </widget>
              </item>
@@ -1232,6 +1242,16 @@
                              </layout>
                             </widget>
                            </item>
+                           <item row="6" column="0">
+                            <widget class="QLabel" name="label_9001">
+                             <property name="text">
+                              <string>Basic.Settings.Output.CustomMuxerSettings</string>
+                             </property>
+                            </widget>
+                           </item>
+                           <item row="6" column="1">
+                            <widget class="QLineEdit" name="advOutMuxCustom"/>
+                           </item>
                           </layout>
                          </widget>
                         </item>

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

@@ -428,6 +428,8 @@ bool SimpleOutput::StartRecording()
 			"SimpleOutput", "FilePath");
 	const char *format = config_get_string(main->Config(),
 			"SimpleOutput", "RecFormat");
+	const char *mux = config_get_string(main->Config(), "SimpleOutput",
+			"MuxerCustom");
 
 	os_dir_t *dir = path ? os_opendir(path) : nullptr;
 
@@ -459,6 +461,7 @@ bool SimpleOutput::StartRecording()
 	obs_data_t *settings = obs_data_create();
 	obs_data_set_string(settings, ffmpegOutput ? "url" : "path",
 			strPath.c_str());
+	obs_data_set_string(settings, "muxer_settings", mux);
 
 	obs_output_update(fileOutput, settings);
 
@@ -711,6 +714,8 @@ inline void AdvancedOutput::SetupRecording()
 {
 	const char *path = config_get_string(main->Config(), "AdvOut",
 			"RecFilePath");
+	const char *mux = config_get_string(main->Config(), "AdvOut",
+			"RecMuxerCustom");
 	bool rescale = config_get_bool(main->Config(), "AdvOut",
 			"RecRescale");
 	const char *rescaleRes = config_get_string(main->Config(), "AdvOut",
@@ -744,6 +749,7 @@ inline void AdvancedOutput::SetupRecording()
 	}
 
 	obs_data_set_string(settings, "path", path);
+	obs_data_set_string(settings, "muxer_settings", mux);
 	obs_output_update(fileOutput, settings);
 	obs_data_release(settings);
 }

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

@@ -274,6 +274,7 @@ OBSBasicSettings::OBSBasicSettings(QWidget *parent)
 	HookWidget(ui->simpleOutCustom,      EDIT_CHANGED,   OUTPUTS_CHANGED);
 	HookWidget(ui->simpleOutRecQuality,  COMBO_CHANGED,  OUTPUTS_CHANGED);
 	HookWidget(ui->simpleOutRecEncoder,  COMBO_CHANGED,  OUTPUTS_CHANGED);
+	HookWidget(ui->simpleOutMuxCustom,   EDIT_CHANGED,   OUTPUTS_CHANGED);
 	HookWidget(ui->advOutEncoder,        COMBO_CHANGED,  OUTPUTS_CHANGED);
 	HookWidget(ui->advOutUseRescale,     CHECK_CHANGED,  OUTPUTS_CHANGED);
 	HookWidget(ui->advOutRescale,        CBEDIT_CHANGED, OUTPUTS_CHANGED);
@@ -288,6 +289,7 @@ OBSBasicSettings::OBSBasicSettings(QWidget *parent)
 	HookWidget(ui->advOutRecEncoder,     COMBO_CHANGED,  OUTPUTS_CHANGED);
 	HookWidget(ui->advOutRecUseRescale,  CHECK_CHANGED,  OUTPUTS_CHANGED);
 	HookWidget(ui->advOutRecRescale,     CBEDIT_CHANGED, OUTPUTS_CHANGED);
+	HookWidget(ui->advOutMuxCustom,      EDIT_CHANGED,   OUTPUTS_CHANGED);
 	HookWidget(ui->advOutRecTrack1,      CHECK_CHANGED,  OUTPUTS_CHANGED);
 	HookWidget(ui->advOutRecTrack2,      CHECK_CHANGED,  OUTPUTS_CHANGED);
 	HookWidget(ui->advOutRecTrack3,      CHECK_CHANGED,  OUTPUTS_CHANGED);
@@ -1025,6 +1027,8 @@ void OBSBasicSettings::LoadSimpleOutputSettings()
 			"RecQuality");
 	const char *recEnc = config_get_string(main->Config(), "SimpleOutput",
 			"RecEncoder");
+	const char *muxCustom = config_get_string(main->Config(),
+			"SimpleOutput", "MuxerCustom");
 
 	audioBitrate = FindClosestAvailableAACBitrate(audioBitrate);
 
@@ -1048,6 +1052,8 @@ void OBSBasicSettings::LoadSimpleOutputSettings()
 	idx = ui->simpleOutRecEncoder->findData(QString(recEnc));
 	if (idx == -1) idx = 0;
 	ui->simpleOutRecEncoder->setCurrentIndex(idx);
+
+	ui->simpleOutMuxCustom->setText(muxCustom);
 }
 
 void OBSBasicSettings::LoadAdvOutputStreamingSettings()
@@ -1131,6 +1137,8 @@ void OBSBasicSettings::LoadAdvOutputRecordingSettings()
 			"RecRescale");
 	const char *rescaleRes = config_get_string(main->Config(), "AdvOut",
 			"RecRescaleRes");
+	const char *muxCustom = config_get_string(main->Config(), "AdvOut",
+			"RecMuxerCustom");
 	int tracks = config_get_int(main->Config(), "AdvOut", "RecTracks");
 
 	int typeIndex = (astrcmpi(type, "FFmpeg") == 0) ? 1 : 0;
@@ -1138,6 +1146,7 @@ void OBSBasicSettings::LoadAdvOutputRecordingSettings()
 	ui->advOutRecPath->setText(path);
 	ui->advOutRecUseRescale->setChecked(rescale);
 	ui->advOutRecRescale->setCurrentText(rescaleRes);
+	ui->advOutMuxCustom->setText(muxCustom);
 
 	int idx = ui->advOutRecFormat->findText(format);
 	ui->advOutRecFormat->setCurrentIndex(idx);
@@ -2123,6 +2132,7 @@ void OBSBasicSettings::SaveOutputSettings()
 	SaveEdit(ui->simpleOutCustom, "SimpleOutput", "x264Settings");
 	SaveComboData(ui->simpleOutRecQuality, "SimpleOutput", "RecQuality");
 	SaveComboData(ui->simpleOutRecEncoder, "SimpleOutput", "RecEncoder");
+	SaveEdit(ui->simpleOutMuxCustom, "SimpleOutput", "MuxerCustom");
 
 	SaveCheckBox(ui->advOutApplyService, "AdvOut", "ApplyServiceSettings");
 	SaveComboData(ui->advOutEncoder, "AdvOut", "Encoder");
@@ -2140,6 +2150,7 @@ void OBSBasicSettings::SaveOutputSettings()
 	SaveComboData(ui->advOutRecEncoder, "AdvOut", "RecEncoder");
 	SaveCheckBox(ui->advOutRecUseRescale, "AdvOut", "RecRescale");
 	SaveCombo(ui->advOutRecRescale, "AdvOut", "RecRescaleRes");
+	SaveEdit(ui->advOutMuxCustom, "AdvOut", "RecMuxerCustom");
 
 	config_set_int(main->Config(), "AdvOut", "RecTracks",
 			(ui->advOutRecTrack1->isChecked() ? (1<<0) : 0) |