Yeah, there is a way.
Found this in a previous post:
Open the console and type:
Bind kp_5 cl_avidemo 0
bind kp_uparrow cl_avidemo 25
This will bind five and eight on your numpad to start and stop. You can start this in a demo or in midgame if you wanted to (but it's totally unplayable if you do.)
The variable there (0,25) is the number of frames per second it records at, theoretically you can do more, but it's really just a waste of HD space, 25 is more than sufficient.
Once you're done while recording from a movie, it will output to a folder in your base directory called "screenshots"
Then use a program like Videomach (which is shareware) to output it to an avi form, then use your favorite codec to encode.
Videomach here: http://www.gromada.com/VideoMach.html
Works just fine. Videomach seems to crash if you choose to put music on though. Use Adobe premier to edit and put music on your demo instead.