How to downsample 4k to 1080p using ffmpeg while maintaining the quality? I have some 4K 3840x2160 footage in MP4 format that I need to bring down to 1080p. I tried running 

ffmpeg -i orig.mp4 -vf scale=1920:1080 smaller.mp4  


but the result is very poor quality, with the entire image being composed of square "tiles" as if I was magnifying 4:1.

Here is the output of running this command:

Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'origs/P1000003.MP4':
  Metadata:
    major_brand     : mp42
    minor_version   : 1
    compatible_brands: mp42avc1
    creation_time   : 2015-02-19 17:10:38
  Duration: 00:05:14.48, start: 0.000000, bitrate: 95903 kb/s
    Stream #0.0(und): Video: h264 (High), yuvj420p, 3840x2160 [PAR 1:1 DAR 16:9], 95792 kb/s, 25 fps, 25 tbr, 90k tbn, 50 tbc
    Metadata:
      creation_time   : 2015-02-19 17:10:38
    Stream #0.1(und): Audio: aac, 48000 Hz, stereo, s16, 125 kb/s
    Metadata:
      creation_time   : 2015-02-19 17:10:38
Incompatible pixel format 'yuvj420p' for codec 'mpeg4', auto-selecting format 'yuv420p'
[buffer @ 0x22a3420] w:3840 h:2160 pixfmt:yuvj420p
[scale @ 0x22a3ce0] w:3840 h:2160 fmt:yuvj420p -&gt; w:1920 h:1080 fmt:yuv420p flags:0x4
Output #0, mp4, to '1-short.mp4':
  Metadata:
    major_brand     : mp42
    minor_version   : 1
    compatible_brands: mp42avc1
    creation_time   : 2015-02-19 17:10:38
    encoder         : Lavf53.21.1
    Stream #0.0(und): Video: mpeg4, yuv420p, 1920x1080 [PAR 1:1 DAR 16:9], q=2-31, 200 kb/s, 25 tbn, 25 tbc
    Metadata:
      creation_time   : 2015-02-19 17:10:38
    Stream #0.1(und): Audio: libvo_aacenc, 48000 Hz, stereo, s16, 200 kb/s
    Metadata:
      creation_time   : 2015-02-19 17:10:38
Stream mapping:
  Stream #0.0 -&gt; #0.0
  Stream #0.1 -&gt; #0.1
Press ctrl-c to stop encoding
frame=  125 fps=  6 q=31.0 Lsize=     968kB time=5.00 bitrate=1586.7kbits/s    
video:842kB audio:123kB global headers:0kB muxing overhead 0.421047%


I know from experience that ffmpeg is an excellent tool, so I must be screwing up the options/parameters somehow...

How can I do this?
The default settings for ffmpeg are very low quality, and since you don't specify any codec or quality parameters it's just using the defaults (I don't know why the devs don't fix that because it generates a lot of questions on forums everywhere).
Edit: the defaults are now quite sane. With a recent (as in later than 2017) build of ffmpeg you don't need to specify anything more than input and output files to achieve good useable results. You can, of course tweak to your heart's desire.
Try adding -c:v libx264 -crf 20 -preset slow to the command.

-c:v libx264 tells it to use the libx264 encoder, this is the default now, no need to specify it
crf 20 uses the Constant Rate Factor quantiser (which paradoxially means variable bit rate, but constant quality) with a value of 20 (pretty good quality; lower is better quality / larger files, higher is crappier / smaller)—default is 23,
the slow preset is a shortcut for a bunch of encoder settings that means it puts a bit more effort into it than the default (medium). Note that the speed presets don't change the quality of the encoded file, just the efficiency, meaning a slower encode will result in a smaller file of the same quality and a faster encode will mean a larger file of the same quality.

You can tweak these settings, see the h.264 encoding guide for instructions on what knobs to twiddle.
And if you're using the audio as-is, add c:a copy. That will do a straight copy of the audio stream without re-encoding.