diff --git a/record/drivers/record_ffmpeg.c b/record/drivers/record_ffmpeg.c
index cfe0b6acd0..b2a9e2038a 100644
--- record/drivers/record_ffmpeg.c
+++ record/drivers/record_ffmpeg.c
@@ -226,28 +226,30 @@ static void ffmpeg_audio_resolve_format(struct ff_audio_info *audio,
 {
    audio->codec->sample_fmt = AV_SAMPLE_FMT_NONE;
 
-   if (ffmpeg_codec_has_sample_format(AV_SAMPLE_FMT_FLTP, codec->sample_fmts))
+   const enum AVSampleFormat *codec_sample_fmts = NULL;
+   avcodec_get_supported_config(NULL, codec, AV_CODEC_CONFIG_SAMPLE_FORMAT, 0, (const void**)&codec_sample_fmts, NULL);
+   if (ffmpeg_codec_has_sample_format(AV_SAMPLE_FMT_FLTP, codec_sample_fmts))
    {
       audio->codec->sample_fmt = AV_SAMPLE_FMT_FLTP;
       audio->use_float         = true;
       audio->is_planar         = true;
       RARCH_LOG("[FFmpeg] Using sample format FLTP.\n");
    }
-   else if (ffmpeg_codec_has_sample_format(AV_SAMPLE_FMT_FLT, codec->sample_fmts))
+   else if (ffmpeg_codec_has_sample_format(AV_SAMPLE_FMT_FLT, codec_sample_fmts))
    {
       audio->codec->sample_fmt = AV_SAMPLE_FMT_FLT;
       audio->use_float         = true;
       audio->is_planar         = false;
       RARCH_LOG("[FFmpeg] Using sample format FLT.\n");
    }
-   else if (ffmpeg_codec_has_sample_format(AV_SAMPLE_FMT_S16P, codec->sample_fmts))
+   else if (ffmpeg_codec_has_sample_format(AV_SAMPLE_FMT_S16P, codec_sample_fmts))
    {
       audio->codec->sample_fmt = AV_SAMPLE_FMT_S16P;
       audio->use_float         = false;
       audio->is_planar         = true;
       RARCH_LOG("[FFmpeg] Using sample format S16P.\n");
    }
-   else if (ffmpeg_codec_has_sample_format(AV_SAMPLE_FMT_S16, codec->sample_fmts))
+   else if (ffmpeg_codec_has_sample_format(AV_SAMPLE_FMT_S16, codec_sample_fmts))
    {
       audio->codec->sample_fmt = AV_SAMPLE_FMT_S16;
       audio->use_float         = false;
@@ -264,19 +266,21 @@ static void ffmpeg_audio_resolve_sample_rate(ffmpeg_t *handle,
    struct record_params *param     = &handle->params;
 
    /* We'll have to force resampling to some supported sampling rate. */
-   if (codec->supported_samplerates && !params->sample_rate)
+   const int *codec_supported_samplerates = NULL;
+   avcodec_get_supported_config(NULL, codec, AV_CODEC_CONFIG_SAMPLE_RATE, 0, (const void**)&codec_supported_samplerates, NULL);
+   if (codec_supported_samplerates && !params->sample_rate)
    {
       unsigned i;
       int input_rate = (int)param->samplerate;
 
       /* Favor closest sampling rate, but always prefer ratio > 1.0. */
-      int best_rate  = codec->supported_samplerates[0];
+      int best_rate  = codec_supported_samplerates[0];
       int best_diff  = best_rate - input_rate;
 
-      for (i = 1; codec->supported_samplerates[i]; i++)
+      for (i = 1; codec_supported_samplerates[i]; i++)
       {
          bool better_rate = false;
-         int diff         = codec->supported_samplerates[i] - input_rate;
+         int diff         = codec_supported_samplerates[i] - input_rate;
 
          if (best_diff < 0)
             better_rate   = (diff > best_diff);
@@ -285,7 +289,7 @@ static void ffmpeg_audio_resolve_sample_rate(ffmpeg_t *handle,
 
          if (better_rate)
          {
-            best_rate = codec->supported_samplerates[i];
+            best_rate = codec_supported_samplerates[i];
             best_diff = diff;
          }
       }
