mirror of
https://github.com/obsproject/obs-studio.git
synced 2026-01-18 11:18:36 -05:00
Merge pull request #5371 from norihiro/automatic-file-splitting
Automatic file splitting
This commit is contained in:
@@ -459,6 +459,11 @@ OBSBasicSettings::OBSBasicSettings(QWidget *parent)
|
||||
HookWidget(ui->advOutRecUseRescale, CHECK_CHANGED, OUTPUTS_CHANGED);
|
||||
HookWidget(ui->advOutRecRescale, CBEDIT_CHANGED, OUTPUTS_CHANGED);
|
||||
HookWidget(ui->advOutMuxCustom, EDIT_CHANGED, OUTPUTS_CHANGED);
|
||||
HookWidget(ui->advOutSplitFile, CHECK_CHANGED, OUTPUTS_CHANGED);
|
||||
HookWidget(ui->advOutSplitFileType, COMBO_CHANGED, OUTPUTS_CHANGED);
|
||||
HookWidget(ui->advOutSplitFileTime, SCROLL_CHANGED, OUTPUTS_CHANGED);
|
||||
HookWidget(ui->advOutSplitFileSize, SCROLL_CHANGED, OUTPUTS_CHANGED);
|
||||
HookWidget(ui->advOutSplitFileRstTS, CHECK_CHANGED, OUTPUTS_CHANGED);
|
||||
HookWidget(ui->advOutRecTrack1, CHECK_CHANGED, OUTPUTS_CHANGED);
|
||||
HookWidget(ui->advOutRecTrack2, CHECK_CHANGED, OUTPUTS_CHANGED);
|
||||
HookWidget(ui->advOutRecTrack3, CHECK_CHANGED, OUTPUTS_CHANGED);
|
||||
@@ -781,6 +786,10 @@ OBSBasicSettings::OBSBasicSettings(QWidget *parent)
|
||||
this, SLOT(SimpleReplayBufferChanged()));
|
||||
connect(ui->simpleRBSecMax, SIGNAL(valueChanged(int)), this,
|
||||
SLOT(SimpleReplayBufferChanged()));
|
||||
connect(ui->advOutSplitFile, SIGNAL(stateChanged(int)), this,
|
||||
SLOT(AdvOutSplitFileChanged()));
|
||||
connect(ui->advOutSplitFileType, SIGNAL(currentIndexChanged(int)), this,
|
||||
SLOT(AdvOutSplitFileChanged()));
|
||||
connect(ui->advReplayBuf, SIGNAL(toggled(bool)), this,
|
||||
SLOT(AdvReplayBufferChanged()));
|
||||
connect(ui->advOutRecTrack1, SIGNAL(toggled(bool)), this,
|
||||
@@ -907,6 +916,7 @@ OBSBasicSettings::OBSBasicSettings(QWidget *parent)
|
||||
ui->buttonBox->button(QDialogButtonBox::Cancel)->setIcon(QIcon());
|
||||
|
||||
SimpleRecordingQualityChanged();
|
||||
AdvOutSplitFileChanged();
|
||||
|
||||
UpdateAutomaticReplayBufferCheckboxes();
|
||||
|
||||
@@ -1964,6 +1974,16 @@ void OBSBasicSettings::LoadAdvOutputRecordingSettings()
|
||||
config_get_string(main->Config(), "AdvOut", "RecMuxerCustom");
|
||||
int tracks = config_get_int(main->Config(), "AdvOut", "RecTracks");
|
||||
int flvTrack = config_get_int(main->Config(), "AdvOut", "FLVTrack");
|
||||
bool splitFile =
|
||||
config_get_bool(main->Config(), "AdvOut", "RecSplitFile");
|
||||
const char *splitFileType =
|
||||
config_get_string(main->Config(), "AdvOut", "RecSplitFileType");
|
||||
int splitFileTime =
|
||||
config_get_int(main->Config(), "AdvOut", "RecSplitFileTime");
|
||||
int splitFileSize =
|
||||
config_get_int(main->Config(), "AdvOut", "RecSplitFileSize");
|
||||
bool splitFileResetTimestamps = config_get_bool(
|
||||
main->Config(), "AdvOut", "RecSplitFileResetTimestamps");
|
||||
|
||||
int typeIndex = (astrcmpi(type, "FFmpeg") == 0) ? 1 : 0;
|
||||
ui->advOutRecType->setCurrentIndex(typeIndex);
|
||||
@@ -1983,6 +2003,13 @@ void OBSBasicSettings::LoadAdvOutputRecordingSettings()
|
||||
ui->advOutRecTrack5->setChecked(tracks & (1 << 4));
|
||||
ui->advOutRecTrack6->setChecked(tracks & (1 << 5));
|
||||
|
||||
idx = (astrcmpi(splitFileType, "Size") == 0) ? 1 : 0;
|
||||
ui->advOutSplitFile->setChecked(splitFile);
|
||||
ui->advOutSplitFileType->setCurrentIndex(idx);
|
||||
ui->advOutSplitFileTime->setValue(splitFileTime);
|
||||
ui->advOutSplitFileSize->setValue(splitFileSize);
|
||||
ui->advOutSplitFileRstTS->setChecked(splitFileResetTimestamps);
|
||||
|
||||
switch (flvTrack) {
|
||||
case 1:
|
||||
ui->flvTrack1->setChecked(true);
|
||||
@@ -3416,6 +3443,14 @@ static inline const char *RecTypeFromIdx(int idx)
|
||||
return "Standard";
|
||||
}
|
||||
|
||||
static inline const char *SplitFileTypeFromIdx(int idx)
|
||||
{
|
||||
if (idx == 1)
|
||||
return "Size";
|
||||
else
|
||||
return "Time";
|
||||
}
|
||||
|
||||
static void WriteJsonData(OBSPropertiesView *view, const char *path)
|
||||
{
|
||||
char full_path[512];
|
||||
@@ -3551,6 +3586,14 @@ void OBSBasicSettings::SaveOutputSettings()
|
||||
SaveCheckBox(ui->advOutRecUseRescale, "AdvOut", "RecRescale");
|
||||
SaveCombo(ui->advOutRecRescale, "AdvOut", "RecRescaleRes");
|
||||
SaveEdit(ui->advOutMuxCustom, "AdvOut", "RecMuxerCustom");
|
||||
SaveCheckBox(ui->advOutSplitFile, "AdvOut", "RecSplitFile");
|
||||
config_set_string(
|
||||
main->Config(), "AdvOut", "RecSplitFileType",
|
||||
SplitFileTypeFromIdx(ui->advOutSplitFileType->currentIndex()));
|
||||
SaveSpinBox(ui->advOutSplitFileTime, "AdvOut", "RecSplitFileTime");
|
||||
SaveSpinBox(ui->advOutSplitFileSize, "AdvOut", "RecSplitFileSize");
|
||||
SaveCheckBox(ui->advOutSplitFileRstTS, "AdvOut",
|
||||
"RecSplitFileResetTimestamps");
|
||||
|
||||
config_set_int(
|
||||
main->Config(), "AdvOut", "RecTracks",
|
||||
@@ -4544,6 +4587,20 @@ void OBSBasicSettings::AdvancedChanged()
|
||||
}
|
||||
}
|
||||
|
||||
void OBSBasicSettings::AdvOutSplitFileChanged()
|
||||
{
|
||||
bool splitFile = ui->advOutSplitFile->isChecked();
|
||||
int splitFileType = splitFile ? ui->advOutSplitFileType->currentIndex()
|
||||
: -1;
|
||||
|
||||
ui->advOutSplitFileType->setEnabled(splitFile);
|
||||
ui->advOutSplitFileTimeLabel->setVisible(splitFileType == 0);
|
||||
ui->advOutSplitFileTime->setVisible(splitFileType == 0);
|
||||
ui->advOutSplitFileSizeLabel->setVisible(splitFileType == 1);
|
||||
ui->advOutSplitFileSize->setVisible(splitFileType == 1);
|
||||
ui->advOutSplitFileRstTS->setVisible(splitFile);
|
||||
}
|
||||
|
||||
void OBSBasicSettings::AdvOutRecCheckWarnings()
|
||||
{
|
||||
auto Checked = [](QCheckBox *box) { return box->isChecked() ? 1 : 0; };
|
||||
|
||||
Reference in New Issue
Block a user