Merge pull request #1589 from caffeinetv/minor-improvements
Minor improvements
This commit is contained in:
commit
b2bc1e159b
@ -714,28 +714,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;
|
||||
@ -789,12 +800,15 @@ bool SimpleOutput::StartStreaming(obs_service_t *service)
|
||||
}
|
||||
|
||||
const char *error = obs_output_get_last_error(streamOutput);
|
||||
bool has_last_error = error && *error;
|
||||
bool hasLastError = error && *error;
|
||||
if (hasLastError)
|
||||
lastError = error;
|
||||
else
|
||||
lastError = string();
|
||||
|
||||
blog(LOG_WARNING, "Stream output type '%s' failed to start!%s%s",
|
||||
type,
|
||||
has_last_error ? " Last Error: " : "",
|
||||
has_last_error ? error : "");
|
||||
blog(LOG_WARNING, "Stream output type '%s' failed to start!%s%s", type,
|
||||
hasLastError ? " Last Error: " : "",
|
||||
hasLastError ? error : "");
|
||||
return false;
|
||||
}
|
||||
|
||||
@ -1506,30 +1520,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;
|
||||
@ -1581,12 +1607,15 @@ bool AdvancedOutput::StartStreaming(obs_service_t *service)
|
||||
}
|
||||
|
||||
const char *error = obs_output_get_last_error(streamOutput);
|
||||
bool has_last_error = error && *error;
|
||||
bool hasLastError = error && *error;
|
||||
if (hasLastError)
|
||||
lastError = error;
|
||||
else
|
||||
lastError = string();
|
||||
|
||||
blog(LOG_WARNING, "Stream output type '%s' failed to start!%s%s",
|
||||
type,
|
||||
has_last_error ? " Last Error: " : "",
|
||||
has_last_error ? error : "");
|
||||
blog(LOG_WARNING, "Stream output type '%s' failed to start!%s%s", type,
|
||||
hasLastError ? " Last Error: " : "",
|
||||
hasLastError ? error : "");
|
||||
return false;
|
||||
}
|
||||
|
||||
|
@ -15,6 +15,7 @@ struct BasicOutputHandler {
|
||||
OBSBasic *main;
|
||||
|
||||
std::string outputType;
|
||||
std::string lastError;
|
||||
|
||||
OBSSignal startRecording;
|
||||
OBSSignal stopRecording;
|
||||
|
@ -4970,6 +4970,9 @@ void OBSBasic::StartStreaming()
|
||||
}
|
||||
|
||||
if (!outputHandler->StartStreaming(service)) {
|
||||
QString message = !outputHandler->lastError.empty()
|
||||
? QTStr(outputHandler->lastError.c_str())
|
||||
: QTStr("Output.StartFailedGeneric");
|
||||
ui->streamButton->setText(QTStr("Basic.Main.StartStreaming"));
|
||||
ui->streamButton->setEnabled(true);
|
||||
ui->streamButton->setChecked(false);
|
||||
@ -4979,9 +4982,8 @@ void OBSBasic::StartStreaming()
|
||||
sysTrayStream->setEnabled(true);
|
||||
}
|
||||
|
||||
QMessageBox::critical(this,
|
||||
QTStr("Output.StartStreamFailed"),
|
||||
QTStr("Output.StartFailedGeneric"));
|
||||
QMessageBox::critical(this, QTStr("Output.StartStreamFailed"),
|
||||
message);
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -255,13 +255,17 @@ bool obs_output_actual_start(obs_output_t *output)
|
||||
bool obs_output_start(obs_output_t *output)
|
||||
{
|
||||
bool encoded;
|
||||
bool has_service;
|
||||
if (!obs_output_valid(output, "obs_output_start"))
|
||||
return false;
|
||||
if (!output->context.data)
|
||||
return false;
|
||||
|
||||
encoded = (output->info.flags & OBS_OUTPUT_ENCODED) != 0;
|
||||
has_service = (output->info.flags & OBS_OUTPUT_SERVICE) != 0;
|
||||
if (has_service && !obs_service_initialize(output->service, output))
|
||||
return false;
|
||||
|
||||
encoded = (output->info.flags & OBS_OUTPUT_ENCODED) != 0;
|
||||
if (encoded && output->delay_sec) {
|
||||
return obs_output_delay_start(output);
|
||||
} else {
|
||||
@ -1746,8 +1750,6 @@ bool obs_output_initialize_encoders(obs_output_t *output, uint32_t flags)
|
||||
|
||||
if (!encoded)
|
||||
return false;
|
||||
if (has_service && !obs_service_initialize(output->service, output))
|
||||
return false;
|
||||
if (has_video && !obs_encoder_initialize(output->video_encoder))
|
||||
return false;
|
||||
if (has_audio && !initialize_audio_encoders(output, num_mixes))
|
||||
|
Loading…
x
Reference in New Issue
Block a user