I reproduce it with Winamp (yes I know, the old thing, it works with Wine) and it seems that it's a VBR file.
The media info applied to theese files says that they are really HEv2, so I'm confused...
Winamp uses so-called FHG AAC, not FDK AAC. It's a different codec, and it's better than fdkaac (at least, FHG AAC was better than fdkaac several years ago).
I believe what he means, is that he uses Winamp for playback. In which case the codec as such is non-sequitur as playback of AAC files is deterministic.
You can use HE-AAC (LC + SBR + PS) at a target bitrate of ~64kb/s, at a sampling rate of 48kHz and two channels. In fact this is a pretty common setup. Since you have what is I files with sampling rates of 44.1kHz, that's totally fine, as well.
The VBR mode (AACENC_BITRATEMODE) is either 2 or 3, since this is VBR, it's always a range, not a particular target bitrate.
As always, I'd suggest sticking to the defaults.
I'd try if a simple
ffmpeg -i <input> -c:a libfdk_aac -vbr 2 <output>
does it for you. Or use '3' with the -vbr option.
Now, if you don't want to use FFmpeg, that's fine, I suggest using fdkaac (https://github.com/nu774/fdkaac) it should be in the repos of your distro. It's a bit easier to use than FFmpeg, and can use FLAC as input.
Don't use a manual lowpass filter. Let the FDK_AAC library do the SBR and apply the filter. You seem to be using a bunch of quality opitions (-global_quality) that overlap, and you shouldn't do that. Use only what the library supports.
With fdkaac, here's a little script converting all FLAC files into .m4a containing AAC:
for fn in *flac; do
flac -s -d -c $fn | fdkaac -i -p 29 -m 2 -o ${fn%.*}.m4a -
done
Note that the AOT must be 29 for HE-AAC v2 or 156 for MPEG-2 HE-AAC v2. However you can also simply not use those settings and let the defaults figure out the best settings for you. Note that I used -i to make fdkaac ignore the WAV file length, since we're piping that one from flac directly into fdkaac. I used -m 2 to set a target VBR rate at 32kb/s per stereo channel. You can use '3' there, if that's more to your liking.
Anyway, you should use as little options as possible. You're always more likely to change things for the worse, when drifting away from the defaults. And do a listening test inside your car. It might just be, that audio with -m 2 is absolutely enough for your car audio system.
Now. If you simply can't stomach the sound that FDK_AAC makes, even though it's kinda the best one for anything that isn't Apple or Windows, you can use qaac (https://sites.google.com/site/qaacpage/). This is a Windows program, so you need a Windows VM, for instance, with Apple QuickTime installed. qaac is a command line tool giving you access to the Apple AAC encoder, currently regarded as the best one in existence.
Please refer to listening tests like these: https://listening-test.coresv.net/results.htm
Or these: https://hydrogenaud.io/index.php/topic,102699.0.html
(or make your own)
Keep in mind FDK_AAC is an encoder released by Fraunhofer. It's the code they kinda dump into Debian and Android, so it's available on Android phones, otherwise they'd descend into obscurity pretty fast...
Winamp uses so-called FHG AAC, not FDK AAC. It's a different codec, and it's better than fdkaac (at least, FHG AAC was better than fdkaac several years ago).
And probably still is. YouTube probably uses FDK-AAC for encoding low bitrate HE-AACv2 audio. It activates when I have poor network connection. This encoder is so crappy that I hear the difference every time. It sounds so... metallic.
Well, that assumption is a bit odd. Youtube uses MPEG-DASH to select from a plethora of pre-encoded formats. The main reason for the overall low quality, is because Youtube must re-encode from already lossy sources, this excarberates errors. What encoders they use in the back is not that easy to tell, but they definitely use Opus, for instance. It can be safely assumed, that Youtube uses decent encoders, and in fact for very low bitrates, it uses Opus. It is very unlikely, that what you're hearing are FDK_AAC artifacts. Those are probably artifacts from multiple re-encodings, and just the low bitrate in general.
I wanted to check HE-AACv2 out so I installed Winamp and encoded some songs with Winamp's FhG-AAC encoder. It sounds less metallic than FDK-AAC and it has less "hoarseness". FhG-AAC encode sounds just more... musical? FDK-AAC encode sounds more artificial.
I don't know yet how to extract FDK HE-AACv2 streams from YouTube. But if I get to know that, I'll extract some music and compare it with my own FhG-AAC encodes I'll make from higher quality YouTube streams.
You can easily download and examine all pre-encoded streams with youtube-dl (https://youtube-dl.org):
% youtube-dl -F "https://www.youtube.com/watch?v=Kh-UFfwmuIA"
[youtube] Kh-UFfwmuIA: Downloading webpage
[youtube] Kh-UFfwmuIA: Downloading video info webpage
[info] Available formats for Kh-UFfwmuIA:
format code extension resolution note
249 webm audio only DASH audio 55k , opus @ 50k, 6.45MiB
250 webm audio only DASH audio 77k , opus @ 70k, 8.13MiB
171 webm audio only DASH audio 84k , vorbis@128k, 9.61MiB
140 m4a audio only DASH audio 131k , m4a_dash container, mp4a.40.2@128k, 17.97MiB
251 webm audio only DASH audio 132k , opus @160k, 14.25MiB
160 mp4 256x144 144p 111k , avc1.4d400c, 30fps, video only, 6.61MiB
278 webm 256x144 144p 142k , webm container, vp9, 30fps, video only, 12.55MiB
242 webm 426x240 240p 224k , vp9, 30fps, video only, 15.27MiB
133 mp4 426x240 240p 238k , avc1.4d4015, 30fps, video only, 11.60MiB
243 webm 640x360 360p 412k , vp9, 30fps, video only, 27.56MiB
134 mp4 640x360 360p 464k , avc1.4d401e, 30fps, video only, 25.41MiB
244 webm 854x480 480p 649k , vp9, 30fps, video only, 41.82MiB
135 mp4 854x480 480p 828k , avc1.4d401f, 30fps, video only, 39.52MiB
247 webm 1280x720 720p 1107k , vp9, 30fps, video only, 74.39MiB
136 mp4 1280x720 720p 1370k , avc1.4d401f, 30fps, video only, 68.31MiB
43 webm 640x360 medium , vp8.0, vorbis@128k, 102.16MiB
18 mp4 640x360 medium 463k , avc1.42001E, mp4a.40.2@ 96k (44100Hz), 64.30MiB
22 mp4 1280x720 hd720 621k , avc1.64001F, mp4a.40.2@192k (44100Hz) (best)
Note how most of those streams are either video, or audio. Which one gets intermixed into a WEBM or MP4 stream, gets negotiated while the stream is playing.
Here's another one from a very recent VEVO video, they should be concerned with audio quality, as they're a music promotion channel, etc:
% youtube-dl -F "https://www.youtube.com/watch?v=3ZdNW4ZSOTs"
[youtube] 3ZdNW4ZSOTs: Downloading webpage
[youtube] 3ZdNW4ZSOTs: Downloading video info webpage
[youtube] 3ZdNW4ZSOTs: Downloading js player vflhRp6T6
[info] Available formats for 3ZdNW4ZSOTs:
format code extension resolution note
249 webm audio only DASH audio 59k , opus @ 50k, 1.05MiB
250 webm audio only DASH audio 77k , opus @ 70k, 1.36MiB
140 m4a audio only DASH audio 130k , m4a_dash container, mp4a.40.2@128k, 2.49MiB
171 webm audio only DASH audio 131k , vorbis@128k, 2.34MiB
251 webm audio only DASH audio 151k , opus @160k, 2.62MiB
394 mp4 256x144 144p 93k , av01.0.05M.08, 30fps, video only, 1.48MiB
160 mp4 256x144 144p 110k , avc1.4d400c, 30fps, video only, 1.47MiB
278 webm 256x144 144p 123k , webm container, vp9, 30fps, video only, 1.81MiB
395 mp4 426x240 240p 211k , av01.0.05M.08, 30fps, video only, 2.88MiB
242 webm 426x240 240p 216k , vp9, 30fps, video only, 2.95MiB
133 mp4 426x240 240p 297k , avc1.4d4015, 30fps, video only, 3.12MiB
396 mp4 640x360 360p 377k , av01.0.05M.08, 30fps, video only, 5.01MiB
243 webm 640x360 360p 380k , vp9, 30fps, video only, 5.07MiB
134 mp4 640x360 360p 550k , avc1.4d401e, 30fps, video only, 5.68MiB
244 webm 854x480 480p 596k , vp9, 30fps, video only, 7.52MiB
397 mp4 854x480 480p 630k , av01.0.05M.08, 30fps, video only, 8.44MiB
135 mp4 854x480 480p 798k , avc1.4d401f, 30fps, video only, 8.05MiB
247 webm 1280x720 720p 1022k , vp9, 30fps, video only, 12.45MiB
136 mp4 1280x720 720p 1239k , avc1.4d401f, 30fps, video only, 11.62MiB
248 webm 1920x1080 1080p 2621k , vp9, 30fps, video only, 32.75MiB
137 mp4 1920x1080 1080p 3439k , avc1.640028, 30fps, video only, 36.79MiB
18 mp4 640x360 medium 539k , avc1.42001E, mp4a.40.2@ 96k (44100Hz), 10.36MiB (best)
In fact, youtube-dl by default downloads best audio and best video, and muxes them together after download.
You can download a specific variant like this:
youtube-dl -f 18 "https://www.youtube.com/watch?v=3ZdNW4ZSOTs"
The resulting file (Vevo - Hot This Week - March 15th, 2019-3ZdNW4ZSOTs.mp4) can then be inspected with FFmpeg:
% ffmpeg -i Vevo\ -\ Hot\ This\ Week\ -\ March\ 15th,\ \ 2019-3ZdNW4ZSOTs.mp4
ffmpeg version N-45774-g223f3dff8-static https://johnvansickle.com/ffmpeg/ Copyright (c) 2000-2018 the FFmpeg developers
built with gcc 6.3.0 (Debian 6.3.0-18+deb9u1) 20170516
configuration: --enable-gpl --enable-version3 --enable-static --disable-debug --disable-ffplay --disable-indev=sndio --disable-outdev=sndio --cc=gcc-6 --enable-libxml2 --enable-fontconfig --enable-frei0r --enable-gnutls --enable-gray --enable-libfribidi --enable-libass --enable-libfreetype --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-librubberband --enable-libsoxr --enable-libspeex --enable-libvorbis --enable-libopus --enable-libtheora --enable-libvidstab --enable-libvo-amrwbenc --enable-libvpx --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxml2 --enable-libxvid --enable-libzimg
libavutil 56. 15.100 / 56. 15.100
libavcodec 58. 19.100 / 58. 19.100
libavformat 58. 13.100 / 58. 13.100
libavdevice 58. 4.100 / 58. 4.100
libavfilter 7. 18.100 / 7. 18.100
libswscale 5. 2.100 / 5. 2.100
libswresample 3. 2.100 / 3. 2.100
libpostproc 55. 2.100 / 55. 2.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'Vevo - Hot This Week - March 15th, 2019-3ZdNW4ZSOTs.mp4':
Metadata:
major_brand : mp42
minor_version : 0
compatible_brands: isommp42
creation_time : 2019-03-15T16:36:00.000000Z
Duration: 00:02:41.12, start: 0.000000, bitrate: 539 kb/s
Stream #0:0(und): Video: h264 (Constrained Baseline) (avc1 / 0x31637661), yuv420p(tv, bt709), 640x360 [SAR 1:1 DAR 16:9], 440 kb/s, 29.97 fps, 29.97 tbr, 30k tbn, 59.94 tbc (default)
Metadata:
creation_time : 2019-03-15T16:36:00.000000Z
handler_name : ISO Media file produced by Google Inc. Created on: 03/15/2019.
Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 96 kb/s (default)
Metadata:
creation_time : 2019-03-15T16:36:00.000000Z
handler_name : ISO Media file produced by Google Inc. Created on: 03/15/2019.
At least one output file must be specified
So you can easily verify and test those files, etc. And yes - I should update my FFmpeg version.
Oh and one last thing, because I know this confuses people: FDK_AAC is from Fraunhofer, the same people that made FhG-AAC. The main difference is, that FDK_AAC open source (though non-free), and only uses integer math.
And one other suggestion: if you're using youtube through a browser, you can right-click into the video and select "Stats for nerds", it'll display the codec and bitrate currently in use.
If you're gonna try to test Youtube's encoder, you'd have to upload lossless sources, and even then you can't really be sure how the internal encoding pipeline works.