You don't say which version of the camera module you are using. Fortunately the JPEG has retained the EXIF information so I can deduce that it is the V1 Omnivision OV5647, probably a clone seeing as that module hasn't been sold by RPT since 2015.
You don't say exactly what aspect of the image quality you're viewing as terrible, so it's hard to give specifics.
All stills captures will use the full resolution of the sensor (5MPix in this case) and downsize it to make the output image. The sensor can only manage 15fps at full resolution therefore a video mode wanting 30fps has to use a technique calling binning on the sensor to downsize the image. This is a coarser resize than for stills, therefore it will be slightly lower quality.
Secondly your JPEG is 686kB for a single frame. If you maintained that for video you'd be looking at 164Mbit/s. Those sorts of rates are not sustainable, so video is typically at 150-20Mbit/s (raspivid defaults to 18Mbit/s IIRC). Now H264 also uses temporal compression techniques to encode the differences between frames, but that still can't perform miracles. MPEG2 used to be nicknamed Motion Pictures Except Grass (it should be Motion Pictures Experts Group as they wrote the specification), because the high frequency detail of waving grass or running water would always make the codec stumble and become a blocky mess.
With regard the fIeld of view difference it's hard to compare the two images. There is a known issue that the 16:9 binned mode on OV5647 isn't quite centred vertically. Add "-md 4" to your raspivid command line and it'll force the 4:3 binned mode and crop the output to 16:9 and should give the same FOV as raspistill. We are deliberately not fixing it as it would mean that anyone who already has a camera set up and then upgraded their system would find their field of view change, and that is viewed as a worse issue than new users of an obsolete camera module finding they have to deal with the quirk.
Software Engineer at Raspberry Pi Trading. Views expressed are still personal views.
I'm not interested in doing contracts for bespoke functionality - please don't ask.