Преглед изворни кода

UI: Add custom muxer settings to advanced FFmpeg output

Palana пре 10 година
родитељ
комит
edec540695

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

@@ -348,6 +348,7 @@ Basic.Settings.Output.Adv.FFmpeg.VEncoder="Video Encoder"
 Basic.Settings.Output.Adv.FFmpeg.VEncoderSettings="Video Encoder Settings (if any)"
 Basic.Settings.Output.Adv.FFmpeg.VEncoderSettings="Video Encoder Settings (if any)"
 Basic.Settings.Output.Adv.FFmpeg.AEncoder="Audio Encoder"
 Basic.Settings.Output.Adv.FFmpeg.AEncoder="Audio Encoder"
 Basic.Settings.Output.Adv.FFmpeg.AEncoderSettings="Audio Encoder Settings (if any)"
 Basic.Settings.Output.Adv.FFmpeg.AEncoderSettings="Audio Encoder Settings (if any)"
+Basic.Settings.Output.Adv.FFmpeg.MuxerSettings="Muxer Settings (if any)"
 
 
 # basic mode 'video' settings
 # basic mode 'video' settings
 Basic.Settings.Video="Video"
 Basic.Settings.Video="Video"

+ 26 - 16
obs/forms/OBSBasicSettings.ui

@@ -1281,14 +1281,14 @@
                        </property>
                        </property>
                       </widget>
                       </widget>
                      </item>
                      </item>
-                     <item row="4" column="0">
+                     <item row="5" column="0">
                       <widget class="QLabel" name="label_40">
                       <widget class="QLabel" name="label_40">
                        <property name="text">
                        <property name="text">
                         <string>Basic.Settings.Output.VideoBitrate</string>
                         <string>Basic.Settings.Output.VideoBitrate</string>
                        </property>
                        </property>
                       </widget>
                       </widget>
                      </item>
                      </item>
-                     <item row="4" column="1">
+                     <item row="5" column="1">
                       <widget class="QSpinBox" name="advOutFFVBitrate">
                       <widget class="QSpinBox" name="advOutFFVBitrate">
                        <property name="minimum">
                        <property name="minimum">
                         <number>0</number>
                         <number>0</number>
@@ -1301,7 +1301,7 @@
                        </property>
                        </property>
                       </widget>
                       </widget>
                      </item>
                      </item>
-                     <item row="5" column="0">
+                     <item row="6" column="0">
                       <widget class="QCheckBox" name="advOutFFUseRescale">
                       <widget class="QCheckBox" name="advOutFFUseRescale">
                        <property name="sizePolicy">
                        <property name="sizePolicy">
                         <sizepolicy hsizetype="Minimum" vsizetype="Expanding">
                         <sizepolicy hsizetype="Minimum" vsizetype="Expanding">
@@ -1317,7 +1317,7 @@
                        </property>
                        </property>
                       </widget>
                       </widget>
                      </item>
                      </item>
-                     <item row="5" column="1">
+                     <item row="6" column="1">
                       <widget class="QComboBox" name="advOutFFRescale">
                       <widget class="QComboBox" name="advOutFFRescale">
                        <property name="enabled">
                        <property name="enabled">
                         <bool>false</bool>
                         <bool>false</bool>
@@ -1327,34 +1327,34 @@
                        </property>
                        </property>
                       </widget>
                       </widget>
                      </item>
                      </item>
-                     <item row="6" column="0">
+                     <item row="7" column="0">
                       <widget class="QLabel" name="label_37">
                       <widget class="QLabel" name="label_37">
                        <property name="text">
                        <property name="text">
                         <string>Basic.Settings.Output.Adv.FFmpeg.VEncoder</string>
                         <string>Basic.Settings.Output.Adv.FFmpeg.VEncoder</string>
                        </property>
                        </property>
                       </widget>
                       </widget>
                      </item>
                      </item>
-                     <item row="6" column="1">
+                     <item row="7" column="1">
                       <widget class="QComboBox" name="advOutFFVEncoder"/>
                       <widget class="QComboBox" name="advOutFFVEncoder"/>
                      </item>
                      </item>
-                     <item row="8" column="0">
+                     <item row="9" column="0">
                       <widget class="QLabel" name="label_38">
                       <widget class="QLabel" name="label_38">
                        <property name="text">
                        <property name="text">
                         <string>Basic.Settings.Output.Adv.FFmpeg.VEncoderSettings</string>
                         <string>Basic.Settings.Output.Adv.FFmpeg.VEncoderSettings</string>
                        </property>
                        </property>
                       </widget>
                       </widget>
                      </item>
                      </item>
-                     <item row="8" column="1">
+                     <item row="9" column="1">
                       <widget class="QLineEdit" name="advOutFFVCfg"/>
                       <widget class="QLineEdit" name="advOutFFVCfg"/>
                      </item>
                      </item>
-                     <item row="9" column="0">
+                     <item row="10" column="0">
                       <widget class="QLabel" name="label_41">
                       <widget class="QLabel" name="label_41">
                        <property name="text">
                        <property name="text">
                         <string>Basic.Settings.Output.AudioBitrate</string>
                         <string>Basic.Settings.Output.AudioBitrate</string>
                        </property>
                        </property>
                       </widget>
                       </widget>
                      </item>
                      </item>
-                     <item row="9" column="1">
+                     <item row="10" column="1">
                       <widget class="QSpinBox" name="advOutFFABitrate">
                       <widget class="QSpinBox" name="advOutFFABitrate">
                        <property name="minimum">
                        <property name="minimum">
                         <number>32</number>
                         <number>32</number>
@@ -1370,14 +1370,14 @@
                        </property>
                        </property>
                       </widget>
                       </widget>
                      </item>
                      </item>
-                     <item row="10" column="0">
+                     <item row="11" column="0">
                       <widget class="QLabel" name="label_47">
                       <widget class="QLabel" name="label_47">
                        <property name="text">
                        <property name="text">
                         <string>Basic.Settings.Output.Adv.AudioTrack</string>
                         <string>Basic.Settings.Output.Adv.AudioTrack</string>
                        </property>
                        </property>
                       </widget>
                       </widget>
                      </item>
                      </item>
-                     <item row="10" column="1">
+                     <item row="11" column="1">
                       <widget class="QWidget" name="widget_10" native="true">
                       <widget class="QWidget" name="widget_10" native="true">
                        <property name="sizePolicy">
                        <property name="sizePolicy">
                         <sizepolicy hsizetype="Maximum" vsizetype="Preferred">
                         <sizepolicy hsizetype="Maximum" vsizetype="Preferred">
@@ -1432,24 +1432,24 @@
                        </layout>
                        </layout>
                       </widget>
                       </widget>
                      </item>
                      </item>
-                     <item row="11" column="0">
+                     <item row="12" column="0">
                       <widget class="QLabel" name="label_39">
                       <widget class="QLabel" name="label_39">
                        <property name="text">
                        <property name="text">
                         <string>Basic.Settings.Output.Adv.FFmpeg.AEncoder</string>
                         <string>Basic.Settings.Output.Adv.FFmpeg.AEncoder</string>
                        </property>
                        </property>
                       </widget>
                       </widget>
                      </item>
                      </item>
-                     <item row="11" column="1">
+                     <item row="12" column="1">
                       <widget class="QComboBox" name="advOutFFAEncoder"/>
                       <widget class="QComboBox" name="advOutFFAEncoder"/>
                      </item>
                      </item>
-                     <item row="12" column="0">
+                     <item row="13" column="0">
                       <widget class="QLabel" name="label_46">
                       <widget class="QLabel" name="label_46">
                        <property name="text">
                        <property name="text">
                         <string>Basic.Settings.Output.Adv.FFmpeg.AEncoderSettings</string>
                         <string>Basic.Settings.Output.Adv.FFmpeg.AEncoderSettings</string>
                        </property>
                        </property>
                       </widget>
                       </widget>
                      </item>
                      </item>
-                     <item row="12" column="1">
+                     <item row="13" column="1">
                       <widget class="QLineEdit" name="advOutFFACfg"/>
                       <widget class="QLineEdit" name="advOutFFACfg"/>
                      </item>
                      </item>
                      <item row="0" column="0">
                      <item row="0" column="0">
@@ -1488,6 +1488,16 @@
                        </item>
                        </item>
                       </widget>
                       </widget>
                      </item>
                      </item>
+                     <item row="4" column="0">
+                      <widget class="QLabel" name="label_1337">
+                       <property name="text">
+                        <string>Basic.Settings.Output.Adv.FFmpeg.MuxerSettings</string>
+                       </property>
+                      </widget>
+                     </item>
+                     <item row="4" column="1">
+                      <widget class="QLineEdit" name="advOutFFMCfg"/>
+                     </item>
                     </layout>
                     </layout>
                    </widget>
                    </widget>
                   </widget>
                   </widget>

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

@@ -594,6 +594,8 @@ inline void AdvancedOutput::SetupFFmpeg()
 			"FFFormat");
 			"FFFormat");
 	const char *mimeType = config_get_string(main->Config(), "AdvOut",
 	const char *mimeType = config_get_string(main->Config(), "AdvOut",
 			"FFFormatMimeType");
 			"FFFormatMimeType");
+	const char *muxCustom = config_get_string(main->Config(), "AdvOut",
+			"FFMCustom");
 	const char *vEncoder = config_get_string(main->Config(), "AdvOut",
 	const char *vEncoder = config_get_string(main->Config(), "AdvOut",
 			"FFVEncoder");
 			"FFVEncoder");
 	int vEncoderId = config_get_int(main->Config(), "AdvOut",
 	int vEncoderId = config_get_int(main->Config(), "AdvOut",
@@ -615,6 +617,7 @@ inline void AdvancedOutput::SetupFFmpeg()
 	obs_data_set_string(settings, "url", url);
 	obs_data_set_string(settings, "url", url);
 	obs_data_set_string(settings, "format_name", formatName);
 	obs_data_set_string(settings, "format_name", formatName);
 	obs_data_set_string(settings, "format_mime_type", mimeType);
 	obs_data_set_string(settings, "format_mime_type", mimeType);
+	obs_data_set_string(settings, "muxer_settings", muxCustom);
 	obs_data_set_int(settings, "video_bitrate", vBitrate);
 	obs_data_set_int(settings, "video_bitrate", vBitrate);
 	obs_data_set_string(settings, "video_encoder", vEncoder);
 	obs_data_set_string(settings, "video_encoder", vEncoder);
 	obs_data_set_int(settings, "video_encoder_id", vEncoderId);
 	obs_data_set_int(settings, "video_encoder_id", vEncoderId);

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

@@ -295,6 +295,7 @@ OBSBasicSettings::OBSBasicSettings(QWidget *parent)
 	HookWidget(ui->advOutFFRecPath,      EDIT_CHANGED,   OUTPUTS_CHANGED);
 	HookWidget(ui->advOutFFRecPath,      EDIT_CHANGED,   OUTPUTS_CHANGED);
 	HookWidget(ui->advOutFFURL,          EDIT_CHANGED,   OUTPUTS_CHANGED);
 	HookWidget(ui->advOutFFURL,          EDIT_CHANGED,   OUTPUTS_CHANGED);
 	HookWidget(ui->advOutFFFormat,       COMBO_CHANGED,  OUTPUTS_CHANGED);
 	HookWidget(ui->advOutFFFormat,       COMBO_CHANGED,  OUTPUTS_CHANGED);
+	HookWidget(ui->advOutFFMCfg,         EDIT_CHANGED,   OUTPUTS_CHANGED);
 	HookWidget(ui->advOutFFVBitrate,     SCROLL_CHANGED, OUTPUTS_CHANGED);
 	HookWidget(ui->advOutFFVBitrate,     SCROLL_CHANGED, OUTPUTS_CHANGED);
 	HookWidget(ui->advOutFFUseRescale,   CHECK_CHANGED,  OUTPUTS_CHANGED);
 	HookWidget(ui->advOutFFUseRescale,   CHECK_CHANGED,  OUTPUTS_CHANGED);
 	HookWidget(ui->advOutFFRescale,      CBEDIT_CHANGED, OUTPUTS_CHANGED);
 	HookWidget(ui->advOutFFRescale,      CBEDIT_CHANGED, OUTPUTS_CHANGED);
@@ -1172,6 +1173,8 @@ void OBSBasicSettings::LoadAdvOutputFFmpegSettings()
 			"FFFormat");
 			"FFFormat");
 	const char *mimeType = config_get_string(main->Config(), "AdvOut",
 	const char *mimeType = config_get_string(main->Config(), "AdvOut",
 			"FFFormatMimeType");
 			"FFFormatMimeType");
+	const char *muxCustom = config_get_string(main->Config(), "AdvOut",
+			"FFMCustom");
 	int videoBitrate = config_get_int(main->Config(), "AdvOut",
 	int videoBitrate = config_get_int(main->Config(), "AdvOut",
 			"FFVBitrate");
 			"FFVBitrate");
 	bool rescale = config_get_bool(main->Config(), "AdvOut",
 	bool rescale = config_get_bool(main->Config(), "AdvOut",
@@ -1199,6 +1202,7 @@ void OBSBasicSettings::LoadAdvOutputFFmpegSettings()
 	ui->advOutFFRecPath->setText(QT_UTF8(path));
 	ui->advOutFFRecPath->setText(QT_UTF8(path));
 	ui->advOutFFURL->setText(QT_UTF8(url));
 	ui->advOutFFURL->setText(QT_UTF8(url));
 	SelectFormat(ui->advOutFFFormat, format, mimeType);
 	SelectFormat(ui->advOutFFFormat, format, mimeType);
+	ui->advOutFFMCfg->setText(muxCustom);
 	ui->advOutFFVBitrate->setValue(videoBitrate);
 	ui->advOutFFVBitrate->setValue(videoBitrate);
 	ui->advOutFFUseRescale->setChecked(rescale);
 	ui->advOutFFUseRescale->setChecked(rescale);
 	ui->advOutFFRescale->setEnabled(rescale);
 	ui->advOutFFRescale->setEnabled(rescale);
@@ -2104,6 +2108,7 @@ void OBSBasicSettings::SaveOutputSettings()
 	SaveEdit(ui->advOutFFRecPath, "AdvOut", "FFFilePath");
 	SaveEdit(ui->advOutFFRecPath, "AdvOut", "FFFilePath");
 	SaveEdit(ui->advOutFFURL, "AdvOut", "FFURL");
 	SaveEdit(ui->advOutFFURL, "AdvOut", "FFURL");
 	SaveFormat(ui->advOutFFFormat);
 	SaveFormat(ui->advOutFFFormat);
+	SaveEdit(ui->advOutFFMCfg, "AdvOut", "FFMCustom");
 	SaveSpinBox(ui->advOutFFVBitrate, "AdvOut", "FFVBitrate");
 	SaveSpinBox(ui->advOutFFVBitrate, "AdvOut", "FFVBitrate");
 	SaveCheckBox(ui->advOutFFUseRescale, "AdvOut", "FFRescale");
 	SaveCheckBox(ui->advOutFFUseRescale, "AdvOut", "FFRescale");
 	SaveCombo(ui->advOutFFRescale, "AdvOut", "FFRescaleRes");
 	SaveCombo(ui->advOutFFRescale, "AdvOut", "FFRescaleRes");