Your whole approach is not going to work: You are "hiding" the MP4 file in a resource, which means it's "inside" the EXE file, and you can't do anything about that.
But you aren't protecting it at all - you are actually distributing it yourself with your code!
You assume (correctly or incorrectly, it's wrong for my system) that there is a folder called "temp" in the root of the current C drive, and you write the file to there in order to open a process to show it. From that point the user can do exactly what he likes with the MP4 because it's sitting there in plain view, and will still be there if your application is closed later.
That's not "protection", that's "copying". And if (like me) the default MP4 player is VLC, it will tell me exactly where the file is, and what it's called to make my job as a video pirate even easier. :laugh:
If you want to protect video files, encrypt them, and play the decrypted stream within your application. I only know of one system to do that, and it's a paid-for product:
Encrypted Video Streaming | Play Video From Stream in C# | BoxedApp SDK[
^] You may find others via Google, but don't expect this to be a trivial process.