An .mov video that is upside down in Windows appears right side up in OSX

Videos that come from rotated iPhones have a rotate attribute.

If the video appears upside down in standard players that don't respect this attribute, that means it actually is upside down and the attribute is set to 180.

You can remove the rotation flag altogether, e.g. with ffmpeg:

ffmpeg -i input.mp4 -c copy -metadata:s:v:0 rotate=0 output.mp4

This will just alter the metadata and won't re-encode the video. Now, your video should play upside down in any player.

Of course, if you want to upload it to YouTube, it'll appear upside down. You now have two choices:

  1. Rotate the video on YouTube with its video editor.
  2. Rotate the video by re-encoding it on your machine, e.g. with ffmpeg, applying the hflip and vflip filters:

    ffmpeg -i input.mp4 -c:v libx264 -filter:v "hflip,vflip" -c:a copy output.mp4
    

    You may want to add the -crf 20 option after -c:v libx264 to force a higher quality, since re-encoding the video will diminish its quality to some extent. Lower CRF parameter means better quality, and normally you'd use values from 18 to 28. 23 is default.