You can watch 1080p if you set "dash" as your default quality in preferences, or by adding `&quality=dash` to the end of a video URL. The reason it isn't enabled by default is that it requires proxying streams, which is more bandwidth intensive[0].
You shouldnt need to proxy anything, there are in browser js muxers that can splice separate video/audio streams into one, or find jsvideo player capable of playing it directly.
The most likely reason for the error is badly decoded signature. YT uses &sig as a "crypto" access token (lasting couple of hours last time I checked). I have zero trouble playing dash videos in standalone mplayer (after manually extracting two video audio sources and decoding proper signatures).
Ok, so CORS prevents from manual muxing/proper DASH player playback. How about two separate video audio tags with javascript synchronized playback/seeking?
Yes, 720p and past is only stored on the google servers with audio and video seperate. So, the only way to watch at those resolutions is for invidious to pass through the video.
I think there is a plan to get 1080p working though
0. https://github.com/omarroth/invidious/issues/34