I have a few movies on my iMac that I purchased using iTunes. They play fine using iTunes. Is there a way to extract the file from iTunes and save the m4v file to my external drive but also leaving it in iTunes.
You would need an application which is capable of breaking Apple's DRM on the file, which may be illegal in some areas.
NoteBurner M4V Converter Plus for Mac is one such option; however, it does not work on macOS 13 and later, nor on versions of iTunes after 12.8.
There are other such programs which claim to remove DRM from iTunes movies, but I have not used any of them and cannot say if or how well they work.
Also of note: iTunes does not allow downloading of 4K content, only streaming. As with the transition from DVD to Blu-Ray, the studios have taken the opportunity for higher quality to also be "protected" by much more restrictive DRM.
While Keeping the DRM Intact
I'm not interested in breaking Apples DRM. Can't I copy a movie and play it on my iMac without using iTunes?
Ah, well that's something else. Sorry I misunderstood.
You can copy the movie out of iTunes, but then you'll have two copies of the file, which could take up 4GB, or maybe even more. However, once you have it outside of iTunes, you can play the file, but only in QuickTime (due to the DRM).
A better alternative might be to create an alias or link to the original file in the iTunes folder.
Assuming that it's located in the usual place (~/Music/) then you could do something like this:
find ~/Music/ -ipath '*/iTunes Media/Movies/*' -type f -iname \*.m4v -print \ | while read line do ln -s "$line" "$HOME/Desktop" done
That will create a link from each movie file inside the "Movies" folder inside the "iTunes Media" folder to the ~/Desktop/ and won't take up any more actual diskspace.
Once they are linked to the Desktop, you can move the links somewhere else, rename them, etc.
If you don't care about the disk space, you can copy them instead of linking them:
find ~/Music/ -ipath '*/iTunes Media/Movies/*' -type f -iname \*.m4v -print \ | while read line do cp -vn "$line" "$HOME/Desktop" done