UI: Fix bug where FTL was using AAC instead of opus
When the streaming audio track was separated from the recording tracks
in advanced output mode in be8c06334, it mistakenly removed the opus
audio encoder code when FTL is used. This restores that code.
This commit is contained in:
parent
f0140cbb74
commit
1986445511
1 changed files with 30 additions and 6 deletions
|
|
@ -1044,7 +1044,7 @@ bool SimpleOutput::ReplayBufferActive() const
|
|||
/* ------------------------------------------------------------------------ */
|
||||
|
||||
struct AdvancedOutput : BasicOutputHandler {
|
||||
OBSEncoder aacStreaming;
|
||||
OBSEncoder streamAudioEnc;
|
||||
OBSEncoder aacTrack[MAX_AUDIO_MIXES];
|
||||
OBSEncoder h264Streaming;
|
||||
OBSEncoder h264Recording;
|
||||
|
|
@ -1212,7 +1212,7 @@ AdvancedOutput::AdvancedOutput(OBSBasic *main_) : BasicOutputHandler(main_)
|
|||
std::string id;
|
||||
int streamTrack =
|
||||
config_get_int(main->Config(), "AdvOut", "TrackIndex") - 1;
|
||||
if (!CreateAACEncoder(aacStreaming, id, GetAudioBitrate(streamTrack),
|
||||
if (!CreateAACEncoder(streamAudioEnc, id, GetAudioBitrate(streamTrack),
|
||||
"avc_aac_stream", streamTrack))
|
||||
throw "Failed to create streaming audio encoder "
|
||||
"(advanced output)";
|
||||
|
|
@ -1283,7 +1283,7 @@ inline void AdvancedOutput::SetupStreaming()
|
|||
}
|
||||
}
|
||||
|
||||
obs_output_set_audio_encoder(streamOutput, aacStreaming, streamTrack);
|
||||
obs_output_set_audio_encoder(streamOutput, streamAudioEnc, streamTrack);
|
||||
obs_encoder_set_scaled_size(h264Streaming, cx, cy);
|
||||
obs_encoder_set_video(h264Streaming, obs_get_video());
|
||||
}
|
||||
|
|
@ -1454,7 +1454,7 @@ inline void AdvancedOutput::UpdateAudioSettings()
|
|||
settings[i]);
|
||||
}
|
||||
|
||||
obs_encoder_update(aacStreaming, settings[i]);
|
||||
obs_encoder_update(streamAudioEnc, settings[i]);
|
||||
}
|
||||
|
||||
obs_data_release(settings[i]);
|
||||
|
|
@ -1468,7 +1468,7 @@ void AdvancedOutput::SetupOutputs()
|
|||
obs_encoder_set_video(h264Recording, obs_get_video());
|
||||
for (size_t i = 0; i < MAX_AUDIO_MIXES; i++)
|
||||
obs_encoder_set_audio(aacTrack[i], obs_get_audio());
|
||||
obs_encoder_set_audio(aacStreaming, obs_get_audio());
|
||||
obs_encoder_set_audio(streamAudioEnc, obs_get_audio());
|
||||
|
||||
SetupStreaming();
|
||||
|
||||
|
|
@ -1490,6 +1490,9 @@ int AdvancedOutput::GetAudioBitrate(size_t i) const
|
|||
|
||||
bool AdvancedOutput::StartStreaming(obs_service_t *service)
|
||||
{
|
||||
int streamTrack =
|
||||
config_get_int(main->Config(), "AdvOut", "TrackIndex") - 1;
|
||||
|
||||
if (!useStreamEncoder ||
|
||||
(!ffmpegOutput && !obs_output_active(fileOutput))) {
|
||||
UpdateStreamSettings();
|
||||
|
|
@ -1553,13 +1556,34 @@ bool AdvancedOutput::StartStreaming(obs_service_t *service)
|
|||
blog(LOG_WARNING, "Failed to load audio codec");
|
||||
return false;
|
||||
}
|
||||
|
||||
if (strcmp(codec, "aac") != 0) {
|
||||
OBSData settings = obs_encoder_get_settings(
|
||||
streamAudioEnc);
|
||||
obs_data_release(settings);
|
||||
|
||||
const char *id =
|
||||
FindAudioEncoderFromCodec(codec);
|
||||
|
||||
streamAudioEnc = obs_audio_encoder_create(
|
||||
id, "alt_audio_enc", nullptr,
|
||||
streamTrack, nullptr);
|
||||
|
||||
if (!streamAudioEnc)
|
||||
return false;
|
||||
|
||||
obs_encoder_release(streamAudioEnc);
|
||||
obs_encoder_update(streamAudioEnc, settings);
|
||||
obs_encoder_set_audio(streamAudioEnc,
|
||||
obs_get_audio());
|
||||
}
|
||||
}
|
||||
|
||||
outputType = type;
|
||||
}
|
||||
|
||||
obs_output_set_video_encoder(streamOutput, h264Streaming);
|
||||
obs_output_set_audio_encoder(streamOutput, aacStreaming, 0);
|
||||
obs_output_set_audio_encoder(streamOutput, streamAudioEnc, 0);
|
||||
|
||||
/* --------------------- */
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue