UI: Fix unencoded stream failure
A stream will fail to start if the output_info does not have an encoded_audio_codecs string, even if the output is not flagged as encoded. This allows unencoded outputs to omit that string.
This commit is contained in:
parent
047e586eaf
commit
f41bc2c32b
@ -685,28 +685,39 @@ bool SimpleOutput::StartStreaming(obs_service_t *service)
|
||||
obs_output_get_signal_handler(streamOutput),
|
||||
"stop", OBSStopStreaming, this);
|
||||
|
||||
const char *codec =
|
||||
obs_output_get_supported_audio_codecs(streamOutput);
|
||||
if (!codec) {
|
||||
return false;
|
||||
}
|
||||
bool isEncoded = obs_output_get_flags(streamOutput)
|
||||
& OBS_OUTPUT_ENCODED;
|
||||
|
||||
if (strcmp(codec, "aac") != 0) {
|
||||
const char *id = FindAudioEncoderFromCodec(codec);
|
||||
int audioBitrate = GetAudioBitrate();
|
||||
obs_data_t *settings = obs_data_create();
|
||||
obs_data_set_int(settings, "bitrate", audioBitrate);
|
||||
|
||||
aacStreaming = obs_audio_encoder_create(id,
|
||||
"alt_audio_enc", nullptr, 0, nullptr);
|
||||
obs_encoder_release(aacStreaming);
|
||||
if (!aacStreaming)
|
||||
if (isEncoded) {
|
||||
const char *codec =
|
||||
obs_output_get_supported_audio_codecs(
|
||||
streamOutput);
|
||||
if (!codec) {
|
||||
blog(LOG_WARNING, "Failed to load audio codec");
|
||||
return false;
|
||||
}
|
||||
|
||||
obs_encoder_update(aacStreaming, settings);
|
||||
obs_encoder_set_audio(aacStreaming, obs_get_audio());
|
||||
if (strcmp(codec, "aac") != 0) {
|
||||
const char *id = FindAudioEncoderFromCodec(
|
||||
codec);
|
||||
int audioBitrate = GetAudioBitrate();
|
||||
obs_data_t *settings = obs_data_create();
|
||||
obs_data_set_int(settings, "bitrate",
|
||||
audioBitrate);
|
||||
|
||||
obs_data_release(settings);
|
||||
aacStreaming = obs_audio_encoder_create(id,
|
||||
"alt_audio_enc", nullptr, 0,
|
||||
nullptr);
|
||||
obs_encoder_release(aacStreaming);
|
||||
if (!aacStreaming)
|
||||
return false;
|
||||
|
||||
obs_encoder_update(aacStreaming, settings);
|
||||
obs_encoder_set_audio(aacStreaming,
|
||||
obs_get_audio());
|
||||
|
||||
obs_data_release(settings);
|
||||
}
|
||||
}
|
||||
|
||||
outputType = type;
|
||||
@ -1463,30 +1474,42 @@ bool AdvancedOutput::StartStreaming(obs_service_t *service)
|
||||
obs_output_get_signal_handler(streamOutput),
|
||||
"stop", OBSStopStreaming, this);
|
||||
|
||||
const char *codec =
|
||||
obs_output_get_supported_audio_codecs(streamOutput);
|
||||
if (!codec) {
|
||||
return false;
|
||||
}
|
||||
bool isEncoded = obs_output_get_flags(streamOutput)
|
||||
& OBS_OUTPUT_ENCODED;
|
||||
|
||||
if (strcmp(codec, "aac") == 0) {
|
||||
streamAudioEnc = aacTrack[trackIndex - 1];
|
||||
} else {
|
||||
const char *id = FindAudioEncoderFromCodec(codec);
|
||||
int audioBitrate = GetAudioBitrate(trackIndex - 1);
|
||||
obs_data_t *settings = obs_data_create();
|
||||
obs_data_set_int(settings, "bitrate", audioBitrate);
|
||||
|
||||
streamAudioEnc = obs_audio_encoder_create(id,
|
||||
"alt_audio_enc", nullptr,
|
||||
trackIndex - 1, nullptr);
|
||||
if (!streamAudioEnc)
|
||||
if (isEncoded) {
|
||||
const char *codec =
|
||||
obs_output_get_supported_audio_codecs(
|
||||
streamOutput);
|
||||
if (!codec) {
|
||||
blog(LOG_WARNING, "Failed to load audio codec");
|
||||
return false;
|
||||
}
|
||||
|
||||
obs_encoder_update(streamAudioEnc, settings);
|
||||
obs_encoder_set_audio(streamAudioEnc, obs_get_audio());
|
||||
if (strcmp(codec, "aac") == 0) {
|
||||
streamAudioEnc = aacTrack[trackIndex - 1];
|
||||
} else {
|
||||
obs_data_t *settings = obs_data_create();
|
||||
const char *id =
|
||||
FindAudioEncoderFromCodec(codec);
|
||||
int audioBitrate =
|
||||
GetAudioBitrate(trackIndex - 1);
|
||||
|
||||
obs_data_set_int(settings, "bitrate",
|
||||
audioBitrate);
|
||||
streamAudioEnc = obs_audio_encoder_create(id,
|
||||
"alt_audio_enc", nullptr,
|
||||
trackIndex - 1, nullptr);
|
||||
|
||||
obs_data_release(settings);
|
||||
if (!streamAudioEnc)
|
||||
return false;
|
||||
|
||||
obs_encoder_update(streamAudioEnc, settings);
|
||||
obs_encoder_set_audio(streamAudioEnc,
|
||||
obs_get_audio());
|
||||
|
||||
obs_data_release(settings);
|
||||
}
|
||||
}
|
||||
|
||||
outputType = type;
|
||||
|
Loading…
x
Reference in New Issue
Block a user