Transcoding bitrates for livestreams

I’m comparing streaming quality between my self-built streaming solution with Nginx and ffmpeg and Cloudflare Stream and noticed very different bandwidth/bitrate scaling.

On my 20mbit DSL Cloudflare stream doesn’t go past the 480p @ 3,9 mbit quality, while on my own solution I get upscaled to 1080p easily.

Here is the Cloudflare stream HSL file:

~ % curl https://videodelivery.net/xxxx/manifest/video.m3u8
#EXTM3U
#EXT-X-VERSION:6
#EXT-X-INDEPENDENT-SEGMENTS
#EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="group_audio",NAME="und",LANGUAGE="en",DEFAULT=YES,AUTOSELECT=YES,URI="stream_t2_r999999999.m3u8"
#EXT-X-STREAM-INF:RESOLUTION=854x480,CODECS="avc1.64001e,mp4a.40.2",BANDWIDTH=3988960,AVERAGE-BANDWIDTH=3988960,FRAME-RATE=25.000,AUDIO="group_audio"
stream_t1_r2.m3u8
#EXT-X-STREAM-INF:RESOLUTION=1280x720,CODECS="avc1.64001f,mp4a.40.2",BANDWIDTH=7198960,AVERAGE-BANDWIDTH=7840960,FRAME-RATE=25.000,AUDIO="group_audio"
stream_t1_r3.m3u8
#EXT-X-STREAM-INF:RESOLUTION=1920x1080,CODECS="avc1.640028,mp4a.40.2",BANDWIDTH=7198960,AVERAGE-BANDWIDTH=11264960,FRAME-RATE=25.000,AUDIO="group_audio"
stream_t1_r4.m3u8
#EXT-X-STREAM-INF:RESOLUTION=640x360,CODECS="avc1.4d401e,mp4a.40.2",BANDWIDTH=1848960,AVERAGE-BANDWIDTH=1848960,FRAME-RATE=25.000,AUDIO="group_audio"
stream_t1_r1.m3u8
#EXT-X-STREAM-INF:RESOLUTION=426x240,CODECS="avc1.42c015,mp4a.40.2",BANDWIDTH=992960,AVERAGE-BANDWIDTH=992960,FRAME-RATE=25.000,AUDIO="group_audio"
stream_t1_r0.m3u8

This is the HLS file for my own streaming solution

~ % curl https://xxxx/live/xxx.m3u8
#EXTM3U
#EXT-X-VERSION:3
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=3128000,RESOLUTION=1920x1080
xxxx_ultra/index.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=2628000,RESOLUTION=1280x720
xxxx_high/index.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=1596000,RESOLUTION=854x480
xxxx_mid/index.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=814000,RESOLUTION=640x360
xxxx_low/index.m3u8

Am I too conservative with bandwidth, or is Cloudflare shooting way too high? Testing on my retina 27-inch iMac the 1080p @ 3mbit stream my nginx/ffmpeg setup creates, looks better compared to 480p @ 3,9mbit generated by CF Stream.