This is 100% a charge port problem.
I fix mobile phones daily. I have seen this with two iPhone 4S's now. ie Volume button gets a response but no change in level.
Initially, our of curiosity, I installed a new volume/mute button flex cable. This, as I expected, didn't change anything - the exact same problem still occurred.
I cleaned the charge port but no luck. This phone in particular was brought back to life after going for a swim. The charge port was looking particularly nasty.
So I installed a brand new one to confirm whether this would fix it. Immediately this fixed the problem.
Therefore, cleaning the charge port MAY fix it. However, if it doesn't, I would thoroughly suggest changing the charge port entirely. Its a fairly simple procedure and also a cheap part to purchase online yourself and I'm sure there are tutorials on this website showing how to do this job. It doesn't require too much disassembling.
Hope this helps!