If you don't want to decrypt the video to disk, play it, then delete the decrypted version (which pretty much destroys the point of even encrypting it in the first place!), then you'll have to write a codec which you build into the graph that's going to decode and play the video and audio.
This is NOT for a beginner and you are not going to be writing it in anything but C/C++. Using managed code to write this would be a much bigger pain than it's worth.
Usually you temporarily decrypt the file... play it on any player... then encrypt it when done and get rid of the file. You could decrypt as you go if you make a codec, I believe someone else already suggested that, but that's probably not as common as you might think it is.