From dd89ae7432c0a92fc47478b5cb7a372f7707710f Mon Sep 17 00:00:00 2001 From: derrod Date: Sat, 27 Dec 2025 15:30:11 +0100 Subject: [PATCH] obs-ffmpeg: Set initial_padding in FFmpeg muxer --- plugins/obs-ffmpeg/ffmpeg-mux/ffmpeg-mux.c | 6 ++++++ plugins/obs-ffmpeg/obs-ffmpeg-mux.c | 1 + 2 files changed, 7 insertions(+) diff --git a/plugins/obs-ffmpeg/ffmpeg-mux/ffmpeg-mux.c b/plugins/obs-ffmpeg/ffmpeg-mux/ffmpeg-mux.c index 19662bf47..7aefe7592 100644 --- a/plugins/obs-ffmpeg/ffmpeg-mux/ffmpeg-mux.c +++ b/plugins/obs-ffmpeg/ffmpeg-mux/ffmpeg-mux.c @@ -105,6 +105,7 @@ struct audio_params { int abitrate; int sample_rate; int frame_size; + int initial_padding; int channels; }; @@ -288,6 +289,8 @@ static bool get_audio_params(struct audio_params *audio, int *argc, char ***argv return false; if (!get_opt_int(argc, argv, &audio->frame_size, "audio frame size")) return false; + if (!get_opt_int(argc, argv, &audio->initial_padding, "audio padding")) + return false; if (!get_opt_int(argc, argv, &audio->channels, "audio channels")) return false; return true; @@ -554,6 +557,9 @@ static void create_audio_stream(struct ffmpeg_mux *ffm, int idx) if (ffm->output->oformat->flags & AVFMT_GLOBALHEADER) context->flags |= AV_CODEC_FLAG_GLOBAL_HEADER; + // Set initial padding so that priming samples are skipped + context->initial_padding = ffm->audio[idx].initial_padding; + avcodec_parameters_from_context(stream->codecpar, context); ffm->audio_infos[ffm->num_audio_streams].stream = stream; diff --git a/plugins/obs-ffmpeg/obs-ffmpeg-mux.c b/plugins/obs-ffmpeg/obs-ffmpeg-mux.c index 8a03c045a..f152b2849 100644 --- a/plugins/obs-ffmpeg/obs-ffmpeg-mux.c +++ b/plugins/obs-ffmpeg/obs-ffmpeg-mux.c @@ -211,6 +211,7 @@ static void add_audio_encoder_params(os_process_args_t *args, obs_encoder_t *aen os_process_args_add_argf(args, "%d", bitrate); os_process_args_add_argf(args, "%d", (int)obs_encoder_get_sample_rate(aencoder)); os_process_args_add_argf(args, "%d", (int)obs_encoder_get_frame_size(aencoder)); + os_process_args_add_argf(args, "%d", (int)obs_encoder_get_priming_samples(aencoder)); os_process_args_add_argf(args, "%d", (int)audio_output_get_channels(audio)); }