To play MP3 fileswith DirectX interfaces you are forced to use DirectSHow (like you are doing currently). There is no easy and stright way of streaming custom data from memory instead of file. You have to implement you own source filter.
So probably easiest way for you is to create unzip music to temporary file on HD and play if from were as before.

PS. Way better feedback on DirectShow in Delphi you can get at http://www.progdigy.com.