diff --git a/transcode.c b/transcode.c
index 782e9a4cfb161dab9103fcc6c08f40b8e19b4f7b..42f179b85988d2b515f2179eceb15d7016743bd9 100644
--- a/transcode.c
+++ b/transcode.c
@@ -171,6 +171,9 @@ static void setup_output_stream(char *stream, AVStream *st, AVCodecContext *enc,
 	parse_dict(&opts, jlookup(stream, "options"));
 	if ((err = avcodec_open2(enc, enc->codec, &opts)) < 0)
 		job_failed("Opening encoder failed: %s", av_err2str(err));
+	if (enc->codec_type == AVMEDIA_TYPE_AUDIO &&
+			!(enc->codec->capabilities & AV_CODEC_CAP_VARIABLE_FRAME_SIZE && enc->frame_size))
+		av_buffersink_set_frame_size(sink, enc->frame_size);
 	assert_empty_opts(opts);
 	avcodec_parameters_from_context(st->codecpar, enc);
 }