Video HTML attribute width is the same as video.width here so you do need to set it. You can try setting video.width in JS and see how it changes the size eg:
video.width = 500;
When browser loads the video it will change the element rendered size to be the size of the video automatically, however it doesnt explicitly set the video width / height as an attribute which is what many devs use to find the video width/height. It would appear the MediaPipe implementation samples the passed element’s width/height to decide how to process.
So if your HTML looks like this:
<video id="blah" autoplay> </video>
Then that will cause issues. When you use video.width it is referencing the element property width set in the HTML as attribute but as you can see no width attribute is set. Even if you styled using CSS, then video.width would be undefined  (or maybe 0 in some browsers) as no attribute property was explicitly specified which was the case here which is why MediaPipe bailed and returned zero results as it thought it was 0,0 or undefined,undefined which it can not do anything with.
In short, always set your video.width and video.height once you know what it is going to be from getUserMedia’s returned promise (and if it changes for some reason later eg load in new video of different resolution) , just in case other developers are referencing it when drawing to canvas etc as was happening here.
I believe our team is looking into updating to automatically sample videoWidth for video too, but not sure when that change will go through so for now just ensure you set it