There are a few ways to do it, although with this many different machines, depending on how the DVRs do it, it could become a logistical nightmare... or at least a logistical pain in the arse.
For starters, most DVRs with web clients use at least two ports: HTTP on port 80 for the initial incoming connection, and a second separate data port that the web client actually communicates and receives video on. Setting up unique forwarding for the HTTP ports is easy - personally, I'd leave the DVRs all on 80, and then set the router to handle the forwarding as necessary... for example, "public" port 81 might forward to "private" port 80 for L1's DVR; port 82 for L2's DVR, etc. Then from the outside, you'd use "http://shrenik.com:81" to view L1; "http://shrenik.com:82" for L2, and so on.
Where it gets tricky is in forwarding the data ports: you would need to make sure the client allows you to specify a different data port(s). If it uses, for example, port 8000, and there's no option to change that in the client, then you'll have no way to make the remote client route to the proper system.
With that many machines (and I'm guessing a buttload of cameras to go with them) you really want to be careful to control outside access, because your internet connection could get saturated really fast.
Can i not simply use the below setting for each DVR:
L1: HTTP port - 81 ; Data Port 8001
L2: HTTP port - 82 ; Data Port 8002
L3: HTTP port - 83 ; Data Port 8003 and so on....
And then use the client software using ports 8000, 8001, 8002, ... for L1, L2, L3.... ????