mirror of
https://github.com/obsproject/obs-studio.git
synced 2024-09-19 20:32:15 +02:00
UI: Allow multi-track recording in advanced output
This commit is contained in:
parent
d07664b129
commit
a24af63527
@ -1175,31 +1175,28 @@
|
||||
<number>0</number>
|
||||
</property>
|
||||
<item>
|
||||
<widget class="QRadioButton" name="advOutRecTrack1">
|
||||
<widget class="QCheckBox" name="advOutRecTrack1">
|
||||
<property name="text">
|
||||
<string notr="true">1</string>
|
||||
</property>
|
||||
<property name="checked">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QRadioButton" name="advOutRecTrack2">
|
||||
<widget class="QCheckBox" name="advOutRecTrack2">
|
||||
<property name="text">
|
||||
<string notr="true">2</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QRadioButton" name="advOutRecTrack3">
|
||||
<widget class="QCheckBox" name="advOutRecTrack3">
|
||||
<property name="text">
|
||||
<string notr="true">3</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QRadioButton" name="advOutRecTrack4">
|
||||
<widget class="QCheckBox" name="advOutRecTrack4">
|
||||
<property name="text">
|
||||
<string notr="true">4</string>
|
||||
</property>
|
||||
@ -2487,8 +2484,8 @@
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>734</width>
|
||||
<height>553</height>
|
||||
<width>325</width>
|
||||
<height>229</height>
|
||||
</rect>
|
||||
</property>
|
||||
<layout class="QVBoxLayout" name="verticalLayout_16">
|
||||
|
@ -490,15 +490,11 @@ inline void AdvancedOutput::SetupRecording()
|
||||
"RecRescale");
|
||||
const char *rescaleRes = config_get_string(main->Config(), "AdvOut",
|
||||
"RecRescaleRes");
|
||||
bool multitrack = config_get_bool(main->Config(), "AdvOut",
|
||||
"RecMultitrack");
|
||||
int trackIndex = config_get_int(main->Config(), "AdvOut",
|
||||
"RecTrackIndex");
|
||||
int trackCount = config_get_int(main->Config(), "AdvOut",
|
||||
"RecTrackCount");
|
||||
int tracks = config_get_int(main->Config(), "AdvOut", "RecTracks");
|
||||
obs_data_t *settings = obs_data_create();
|
||||
unsigned int cx = 0;
|
||||
unsigned int cy = 0;
|
||||
int idx = 0;
|
||||
|
||||
if (useStreamEncoder) {
|
||||
obs_output_set_video_encoder(fileOutput, h264Streaming);
|
||||
@ -515,16 +511,11 @@ inline void AdvancedOutput::SetupRecording()
|
||||
obs_output_set_video_encoder(fileOutput, h264Recording);
|
||||
}
|
||||
|
||||
if (multitrack) {
|
||||
int i = 0;
|
||||
for (; i < trackCount; i++)
|
||||
for (int i = 0; i < MAX_AUDIO_MIXES; i++) {
|
||||
if ((tracks & (1<<i)) != 0) {
|
||||
obs_output_set_audio_encoder(fileOutput, aacTrack[i],
|
||||
i);
|
||||
for (; i < 4; i++)
|
||||
obs_output_set_audio_encoder(fileOutput, nullptr, i);
|
||||
} else {
|
||||
obs_output_set_audio_encoder(fileOutput,
|
||||
aacTrack[trackIndex - 1], 0);
|
||||
idx++);
|
||||
}
|
||||
}
|
||||
|
||||
obs_data_set_string(settings, "path", path);
|
||||
|
@ -496,8 +496,7 @@ bool OBSBasic::InitBasicConfigDefaults()
|
||||
false);
|
||||
config_set_default_bool (basicConfig, "AdvOut", "RecMultitrack",
|
||||
false);
|
||||
config_set_default_uint (basicConfig, "AdvOut", "RecTrackIndex", 1);
|
||||
config_set_default_uint (basicConfig, "AdvOut", "RecTrackCount", 1);
|
||||
config_set_default_uint (basicConfig, "AdvOut", "RecTracks", (1<<0));
|
||||
config_set_default_string(basicConfig, "AdvOut", "RecEncoder",
|
||||
"none");
|
||||
|
||||
|
@ -1042,8 +1042,7 @@ void OBSBasicSettings::LoadAdvOutputRecordingSettings()
|
||||
"RecRescale");
|
||||
const char *rescaleRes = config_get_string(main->Config(), "AdvOut",
|
||||
"RecRescaleRes");
|
||||
int trackIndex = config_get_int(main->Config(), "AdvOut",
|
||||
"RecTrackIndex");
|
||||
int tracks = config_get_int(main->Config(), "AdvOut", "RecTracks");
|
||||
|
||||
int typeIndex = (astrcmpi(type, "FFmpeg") == 0) ? 1 : 0;
|
||||
ui->advOutRecType->setCurrentIndex(typeIndex);
|
||||
@ -1054,12 +1053,10 @@ void OBSBasicSettings::LoadAdvOutputRecordingSettings()
|
||||
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;
|
||||
case 3: ui->advOutRecTrack3->setChecked(true); break;
|
||||
case 4: ui->advOutRecTrack4->setChecked(true); break;
|
||||
}
|
||||
ui->advOutRecTrack1->setChecked(tracks & (1<<0));
|
||||
ui->advOutRecTrack2->setChecked(tracks & (1<<1));
|
||||
ui->advOutRecTrack3->setChecked(tracks & (1<<2));
|
||||
ui->advOutRecTrack4->setChecked(tracks & (1<<3));
|
||||
}
|
||||
|
||||
void OBSBasicSettings::LoadAdvOutputRecordingEncoderProperties()
|
||||
@ -2006,9 +2003,12 @@ void OBSBasicSettings::SaveOutputSettings()
|
||||
SaveComboData(ui->advOutRecEncoder, "AdvOut", "RecEncoder");
|
||||
SaveCheckBox(ui->advOutRecUseRescale, "AdvOut", "RecRescale");
|
||||
SaveCombo(ui->advOutRecRescale, "AdvOut", "RecRescaleRes");
|
||||
SaveTrackIndex(main->Config(), "AdvOut", "RecTrackIndex",
|
||||
ui->advOutRecTrack1, ui->advOutRecTrack2,
|
||||
ui->advOutRecTrack3, ui->advOutRecTrack4);
|
||||
|
||||
config_set_int(main->Config(), "AdvOut", "RecTracks",
|
||||
(ui->advOutRecTrack1->isChecked() ? (1<<0) : 0) |
|
||||
(ui->advOutRecTrack2->isChecked() ? (1<<1) : 0) |
|
||||
(ui->advOutRecTrack3->isChecked() ? (1<<2) : 0) |
|
||||
(ui->advOutRecTrack4->isChecked() ? (1<<3) : 0));
|
||||
|
||||
SaveEdit(ui->advOutFFURL, "AdvOut", "FFURL");
|
||||
SaveFormat(ui->advOutFFFormat);
|
||||
|
Loading…
Reference in New Issue
Block a user