Despite having used it for years, I very recently learnt (or maybe relearnt) that FFmpeg encodes by default even when not asked to, unless the streams are explicitly passed through with -c copy.
This led me to use ffprobe to check the codec of a video I recently encoded using minimal parameters, and I now realise the video was encoded with x264 and audio with libvorbis.
x264 is unsurprising since it's the current video standard, but libvorbis surprises me given that the FFmpeg wiki ranks it lower than libopus and libfdk_aac:
libopus – usable range ≥ 32Kbps. Recommended range ≥ 64Kbps
libfdk_aac default AAC LC profile – recommended range ≥ 128Kbps; see AAC Encoding Guide.
libfdk_aac -profile:a aac_he_v2 – usable range ≤ 48Kbps CBR. Transparency: Does not reach transparency. Use AAC LC instead to achieve transparency
libfdk_aac -profile:a aac_he – usable range ≥ 48Kbps and ≤ 80Kbps CBR. Transparency: Does not reach transparency. Use AAC LC instead to achieve transparency
libvorbis – usable range ≥ 96Kbps. Recommended range -aq 4 (≥ 128Kbps)
libmp3lame – usable range ≥ 128Kbps. Recommended range -aq 2 (≥ 192Kbps)
ac3 or eac3 – usable range ≥ 160Kbps. Recommended range ≥ 160Kbps
libtwolame – usable range ≥ 192Kbps. Recommended range ≥ 256Kbps
mp2 – usable range ≥ 320Kbps. Recommended range ≥ 320Kbps
I compiled my FFmpeg build with both libopus and libfdk_aac, so is there a reason the audio is defaulting to libvorbis here?
And is there a way to change these defaults to ensure FFmpeg will always use libfdk_aac (unless otherwise specified)?