I'm assuming the level of protection you're looking for is the video is not accessible but to only those who have purchased it (and if they purchase it, can they only download it within a certain time frame?).
I've done this with ebooks...
Put the file in a non-web accessible directory. This means no matter how you enter the URL in your browser, you will never get the file. Your hosting provider should allow you to place files one directory above the directory where your site's index.html is located. Example:
Web site hosted from:
/home/myname/public_html/
But I have access to:
/home/myname/ <-- at this dir level is what you want at the minimum
I'd then recommend creating a subdirectory to keep track of your files. Something like this would work:
/home/myname/videos/
You'll need to fiddle with the directory/file permissions so PHP can at least read the files.
Back to your website, you'll need to put together a simple PHP page that specializes in just feeding that video to the browser. It would be something like:
header('Content-type: ' . $filecontenttype);
readfile('/home/myname/videos/' . $videofilename);
You'll need to figure out the content type that matches the video file you plan to send to the client (and change $filecontenttype as need needed).
This sends a file to a client browser (just run the script and it should work).
Trick is now you need to code in your parameters to who has access and who will not.
If you're using sessions, cookies, or something else, you'll need to have this script (lets call it download.php) read those variables and determine if the user is allowed to download the file. You could even check a database - maybe have it look up the purchase date/time and check the current date/time and see if its been X hours since they purchased and if they're allowed to still download it. You may decide to make it session based and if their session times out, they're stuck (although I really wouldn't recommend this if the file is big and their download times out for some reason).
A simple modification to limit downloads:
if($_GET['download'] == 'yes')
{
header('Content-type: ' . $filecontenttype);
readfile('/home/myname/videos/' . $videofilename);
} // end if($_GET['download'] == 'yes')
This is a pretty silly example because its not at all secure, but should give you an idea what you need to do to control the downloading. You could even toss in some stat tracking in there to keep track of the number of downloads and maybe number of invalid downloads...