From ee63fc69acc58bac2eee421862cc0c88f6e937ea Mon Sep 17 00:00:00 2001 From: jp9000 Date: Fri, 24 Nov 2017 21:17:10 -0800 Subject: [PATCH] obs-ffmpeg: Use muxer settings with AVIOContext In the FFmpeg output, it was not passing the muxer settings to the AVIOContext, so some settings would not be properly passed to protocols. --- plugins/obs-ffmpeg/obs-ffmpeg-output.c | 31 +++++++++++++------------- 1 file changed, 16 insertions(+), 15 deletions(-) diff --git a/plugins/obs-ffmpeg/obs-ffmpeg-output.c b/plugins/obs-ffmpeg/obs-ffmpeg-output.c index 36dbdb332..2e3097987 100644 --- a/plugins/obs-ffmpeg/obs-ffmpeg-output.c +++ b/plugins/obs-ffmpeg/obs-ffmpeg-output.c @@ -373,20 +373,6 @@ static inline bool open_output_file(struct ffmpeg_data *data) AVOutputFormat *format = data->output->oformat; int ret; - if ((format->flags & AVFMT_NOFILE) == 0) { - ret = avio_open(&data->output->pb, data->config.url, - AVIO_FLAG_WRITE); - if (ret < 0) { - blog(LOG_WARNING, "Couldn't open '%s', %s", - data->config.url, av_err2str(ret)); - return false; - } - } - - strncpy(data->output->filename, data->config.url, - sizeof(data->output->filename)); - data->output->filename[sizeof(data->output->filename) - 1] = 0; - AVDictionary *dict = NULL; if ((ret = av_dict_parse_string(&dict, data->config.muxer_settings, "=", " ", 0))) { @@ -405,10 +391,25 @@ static inline bool open_output_file(struct ffmpeg_data *data) AV_DICT_IGNORE_SUFFIX))) dstr_catf(&str, "\n\t%s=%s", entry->key, entry->value); - blog(LOG_INFO, "Using muxer settings:%s", str.array); + blog(LOG_INFO, "Using muxer settings: %s", str.array); dstr_free(&str); } + if ((format->flags & AVFMT_NOFILE) == 0) { + ret = avio_open2(&data->output->pb, data->config.url, + AVIO_FLAG_WRITE, NULL, &dict); + if (ret < 0) { + blog(LOG_WARNING, "Couldn't open '%s', %s", + data->config.url, av_err2str(ret)); + av_dict_free(&dict); + return false; + } + } + + strncpy(data->output->filename, data->config.url, + sizeof(data->output->filename)); + data->output->filename[sizeof(data->output->filename) - 1] = 0; + ret = avformat_write_header(data->output, &dict); if (ret < 0) { blog(LOG_WARNING, "Error opening '%s': %s",