What I want to do is next: We need to protect the video content(encrypt it) and be able to play it.
Tricky part is that we do not want to load everything into memory
Just about every widely used encryption algorithm works on blocks of sizes between 128 and 256 bits – and will happily decrypt only a few of these at a time, just fine for streaming. Check out, e.g., Crypto++ for a software library that has streaming interfaces. (I.e., you just open a file, put a decrypting filter around that, and then just continue pretty much like with any other file.)