If I've understood you correctly, your video appears upright when viewed in portrait orientation and rotated in landscape. This suggests the image is stored in a landscape matrix but with no rotation tag set. If so, there are two things you can try using ffmpeg, a free command line tool.
ffmpeg -i input.mp4 -c copy -metadata:s:v rotate=90 output.mp4
If your landscape devices don't understand or obey the rotation tag,
ffmpeg -i input.mp4 -c copy -vf transpose=2 -c:v libx264 -crf 20 output.mp4
The 2nd command will re-encode the video portion of your file. CRF controls the quality - lower is better but will produce bigger files.
In the commands, you may have to switch the 90
with -90
and 2
with 1
depending on how the video was stored.