From d07664b1296d9804d7f0e31aab5a2dea9b498e66 Mon Sep 17 00:00:00 2001 From: jp9000 Date: Fri, 29 May 2015 09:45:54 -0700 Subject: [PATCH] UI: Add option to select recording format Add a listboxes to recording to allow changing file formats (allows mp4, mov, mkv, ts, flv) --- obs/data/locale/en-US.ini | 1 + obs/forms/OBSBasicSettings.ui | 244 ++++++++++++++++++++---------- obs/window-basic-main-outputs.cpp | 8 +- obs/window-basic-main.cpp | 3 + obs/window-basic-settings.cpp | 14 ++ 5 files changed, 190 insertions(+), 80 deletions(-) diff --git a/obs/data/locale/en-US.ini b/obs/data/locale/en-US.ini index 34b7f7ebe..cc2a9cf97 100644 --- a/obs/data/locale/en-US.ini +++ b/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" diff --git a/obs/forms/OBSBasicSettings.ui b/obs/forms/OBSBasicSettings.ui index 07fd4547d..bf8469b56 100644 --- a/obs/forms/OBSBasicSettings.ui +++ b/obs/forms/OBSBasicSettings.ui @@ -430,14 +430,14 @@ - + Basic.Settings.Output.VideoBitrate - + 200 @@ -450,14 +450,14 @@ - + Basic.Settings.Output.AudioBitrate - + 4 @@ -504,7 +504,7 @@ - + Basic.Settings.Output.Reconnect @@ -514,28 +514,28 @@ - + Basic.Settings.Output.RetryDelay - + 30 - + Basic.Settings.Output.MaxRetries - + 1 @@ -545,7 +545,7 @@ - + Basic.Settings.Output.Advanced @@ -555,7 +555,7 @@ - + Basic.Settings.Output.UseCBR @@ -565,7 +565,7 @@ - + true @@ -575,7 +575,7 @@ - + @@ -619,7 +619,7 @@ - + @@ -635,7 +635,7 @@ - + false @@ -651,16 +651,52 @@ - + Basic.Settings.Output.CustomEncoderSettings - + + + + + Basic.Settings.Output.Format + + + + + + + + flv + + + + + mp4 + + + + + mov + + + + + mkv + + + + + ts + + + + @@ -1074,68 +1110,50 @@ - - - - Basic.Settings.Output.Encoder - - - - - - - - - - - 0 - 0 - - - - Qt::RightToLeft - - - Basic.Settings.Output.Adv.Rescale - - - - - - - - 0 - - - 0 - - - 0 - - - 0 - - - - - false - - - true - - - - - - + + + Basic.Settings.Output.Format + + + + + + + + flv + + + + + mp4 + + + + + mov + + + + + mkv + + + + + ts + + + + + Basic.Settings.Output.Adv.AudioTrack - + @@ -1190,6 +1208,60 @@ + + + + Basic.Settings.Output.Encoder + + + + + + + + + + + 0 + 0 + + + + Qt::RightToLeft + + + Basic.Settings.Output.Adv.Rescale + + + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + false + + + true + + + + + + @@ -2017,12 +2089,20 @@ - + true + + + 0 + 0 + 98 + 28 + + @@ -2356,16 +2436,24 @@ true + + + 0 + 0 + 98 + 28 + + - - 0 - QFormLayout::AllNonFixedFieldsGrow Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + 0 + @@ -2399,8 +2487,8 @@ 0 0 - 724 - 536 + 734 + 553 diff --git a/obs/window-basic-main-outputs.cpp b/obs/window-basic-main-outputs.cpp index d0d9392ac..3bb82137e 100644 --- a/obs/window-basic-main-outputs.cpp +++ b/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()); diff --git a/obs/window-basic-main.cpp b/obs/window-basic-main.cpp index 24aaeef3a..5a3fe33d1 100644 --- a/obs/window-basic-main.cpp +++ b/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", diff --git a/obs/window-basic-settings.cpp b/obs/window-basic-settings.cpp index 6ed4b3981..fd8e9553f 100644 --- a/obs/window-basic-settings.cpp +++ b/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");