Creating Movies out of your Game Demos using Adobe Premiere
Converting Game Demos to Screenshots
The first step in making movies out of your game demos is to record the demos to sequences of .tga image files. Before doing this you should note a few things.
* You will need a lot of hard drive space. This process will write thousands of sequentially numbered tga files to your screenshots directory.
* Start by emptying your screen shot folder. This is particularly important if you have any gaps in the sequentially numbered files already in there.
* Before outputting the demos you should lower the in-game resolution to 640x480 or lower. A resolution larger than that will just use up unnecessary hard drive space. The final movies you render will be 640 x 480 or smaller so there is no need for the screenshots larger than that.
Recording Demos to Screenshots
After starting the demo you want to record, drop down the in-game console and type /cl_avidemo 30 to begin recording screenshots to your screenshots folder.
  The 30 represents the number of frames per second that will be written to your hard drive. You can replace the 30 with any number between 15 and 30. 15 frames per second might look choppy when played back but it will help with those tight on hard drive space. Full motion NTSC video runs at 30 frames per second so there is no need to go any higher than that. The demo will seem to run slow and choppy while writing all those still files to your hard drive but don’t worry that is normal. There is a limit of 9999 screenshots that can be recorded. That means at 30 frames per second you will only be able to fit less than 6 minutes of demos in your screenshots folder.

Drop down the in-game console and type /cl_avidemo 0 to stop writing screenshots to your hard drive.

If you plan on creating a long movie that uses many different demos, I find it easier to move my screenshots to a new folder before loading and outputting my next demo. Name the folder appropriately ie: the name of the demo This will greatly help your overall organization of the files when you go to edit your movie, and will also help get around the 9999 screenshot limit.

Config File
I have compiled a seperate config file that includes my demo playback settings and binds to make all of this easier. I have named this config file avi.cfg and it is saved in my baseq3 directory and the main directory of the mods I have installed. To execute a config file from inside Quake 3 or a mod, drop down the in-game console and type /exec avi.cfg (replace avi.cfg with the name of the config file you want to execute). My config also includes some timescale binds to help fast-forward and slow motion through the demo. You can even record screenshots while in fast-forward or slow motion for some interesting "in-camera" effects. In the config file you can also turn on and off certain screen items like scores, guns etc. That all depends on what information you want included in the movie. "1" turns an item on, "0" turns and item off.
  seta cg_drawHands "1"
seta cg_maxPrecip "128"
seta cg_gunSize "1"
seta cg_gunCorrectFOV "1"
seta cg_standardChat "0"
seta cg_drawTeamScores "0"
seta cg_lagometer "0"
seta cg_simpleItems "0"
seta cg_crosshairY "0"
seta cg_crosshairX "0"
seta cg_crosshairHealth "1"
seta cg_crosshairSize "24"
seta cg_drawRewards "0"
seta cg_drawAttacker "0"
seta cg_drawAmmoWarning "0"
seta cg_drawIcons "0"
seta cg_draw3dIcons "0"
seta cg_drawSnapshot "0"
seta cg_drawFPS "0"
seta cg_drawTimer "0"
seta cg_drawStatus "0"
seta cg_draw2D "0"
seta cg_chattime "0"
seta cg_msgtime "0"
seta cg_drawCrosshairNames "1"
seta cg_drawCrosshair "8"
seta r_gamma "1.468750"
seta r_customheight "480"
seta r_customwidth "640"
seta r_fullscreen "1"
seta r_mode "3"
seta r_ignorehwgamma "0"
seta r_overBrightBits "1"
seta r_depthbits "0"
seta r_stencilbits "8"
seta r_stereo "0"
seta r_colorbits "0"
seta r_texturebits "0"
seta r_detailtextures "1"
seta r_roundImagesDown "1"
seta r_picmip "0"
seta r_ext_texture_env_add "1"
seta r_ext_compiled_vertex_array "1"
seta r_ext_multitexture "1"
seta r_ext_gamma_control "1"
seta r_ext_compressed_textures "0"
seta r_allowExtensions "1"
seta r_glDriver "opengl32"
seta cg_viewsize "100"

bind f1 cl_avidemo 30
bind f2 cl_avidemo 0
bind f3 timescale 0.5
bind f4 timescale 1
bind f5 timescale 2
bind f6 timescale 4

// Enables and disables third person view
set tp1 "cg_ThirdPerson 1; bind kp_5 vstr tp2"
set tp2 "cg_ThirdPerson 0; bind kp_5 vstr tp1"
bind kp_5 vstr tp1

// Rotates Clockwise about character from 0
set sp1 "cg_ThirdPersonangle 20; bind kp_leftarrow vstr sp2"
set sp2 "cg_ThirdPersonangle 40; bind kp_leftarrow vstr sp3"
set sp3 "cg_ThirdPersonangle 60; bind kp_leftarrow vstr sp4"
set sp4 "cg_ThirdPersonangle 80; bind kp_leftarrow vstr sp5"
set sp5 "cg_ThirdPersonangle 100; bind kp_leftarrow vstr sp6"
set sp6 "cg_ThirdPersonangle 120; bind kp_leftarrow vstr sp7"
set sp7 "cg_ThirdPersonangle 140; bind kp_leftarrow vstr sp8"
set sp8 "cg_ThirdPersonangle 160; bind kp_leftarrow vstr sp9"
set sp9 "cg_ThirdPersonangle 180; bind kp_leftarrow vstr ps1"
set ps1 "cg_ThirdPersonangle 200; bind kp_leftarrow vstr ps2"
set ps2 "cg_ThirdPersonangle 220; bind kp_leftarrow vstr ps3"
set ps3 "cg_ThirdPersonangle 240; bind kp_leftarrow vstr ps4"
set ps4 "cg_ThirdPersonangle 260; bind kp_leftarrow vstr ps5"
set ps5 "cg_ThirdPersonangle 280; bind kp_leftarrow vstr ps6"
set ps6 "cg_ThirdPersonangle 300; bind kp_leftarrow vstr ps7"
set ps7 "cg_ThirdPersonangle 320; bind kp_leftarrow vstr ps8"
set ps8 "cg_ThirdPersonangle 340; bind kp_leftarrow vstr ps9"
set ps9 "cg_ThirdPersonangle 0; bind kp_leftarrow vstr sp1"
bind kp_leftarrow vstr sp1

// Rotates anti clockwise about character from 0
set wo1 "cg_ThirdPersonangle 0; bind kp_rightarrow vstr wo2"
set wo2 "cg_ThirdPersonangle 340; bind kp_rightarrow vstr wo3"
set wo3 "cg_ThirdPersonangle 320; bind kp_rightarrow vstr wo4"
set wo4 "cg_ThirdPersonangle 300; bind kp_rightarrow vstr wo5"
set wo5 "cg_ThirdPersonangle 280; bind kp_rightarrow vstr wo6"
set wo6 "cg_ThirdPersonangle 260; bind kp_rightarrow vstr wo7"
set wo7 "cg_ThirdPersonangle 240; bind kp_rightarrow vstr wo8"
set wo8 "cg_ThirdPersonangle 220; bind kp_rightarrow vstr wo9"
set wo9 "cg_ThirdPersonangle 200; bind kp_rightarrow vstr wp1"
set wp1 "cg_ThirdPersonangle 180; bind kp_rightarrow vstr wp2"
set wp2 "cg_ThirdPersonangle 160; bind kp_rightarrow vstr wp3"
set wp3 "cg_ThirdPersonangle 140; bind kp_rightarrow vstr wp4"
set wp4 "cg_ThirdPersonangle 120; bind kp_rightarrow vstr wp5"
set wp5 "cg_ThirdPersonangle 100; bind kp_rightarrow vstr wp6"
set wp6 "cg_ThirdPersonangle 80; bind kp_rightarrow vstr wp7"
set wp7 "cg_ThirdPersonangle 60; bind kp_rightarrow vstr wp8"
set wp8 "cg_ThirdPersonangle 40; bind kp_rightarrow vstr wp9"
set wp9 "cg_ThirdPersonangle 20; bind kp_rightarrow vstr wo1"
bind kp_rightarrow vstr wo1

// Zooms out from 99 to 260
set zm1 "cg_ThirdPersonrange 99; bind kp_uparrow vstr zm2"
set zm2 "cg_ThirdPersonrange 120; bind kp_uparrow vstr zm3"
set zm3 "cg_ThirdPersonrange 140; bind kp_uparrow vstr zm4"
set zm4 "cg_ThirdPersonrange 160; bind kp_uparrow vstr zm5"
set zm5 "cg_ThirdPersonrange 180; bind kp_uparrow vstr zm6"
set zm6 "cg_ThirdPersonrange 200; bind kp_uparrow vstr zm7"
set zm7 "cg_ThirdPersonrange 220; bind kp_uparrow vstr zm8"
set zm8 "cg_ThirdPersonrange 240; bind kp_uparrow vstr zm9"
set zm9 "cg_ThirdPersonrange 260"
bind kp_uparrow vstr zm1

// Zooms in from 259 to 100
set zn1 "cg_ThirdPersonrange 259; bind kp_downarrow vstr zn2"
set zn2 "cg_ThirdPersonrange 240; bind kp_downarrow vstr zn3"
set zn3 "cg_ThirdPersonrange 220; bind kp_downarrow vstr zn4"
set zn4 "cg_ThirdPersonrange 200; bind kp_downarrow vstr zn5"
set zn5 "cg_ThirdPersonrange 180; bind kp_downarrow vstr zn6"
set zn6 "cg_ThirdPersonrange 160; bind kp_downarrow vstr zn7"
set zn7 "cg_ThirdPersonrange 140; bind kp_downarrow vstr zn8"
set zn8 "cg_ThirdPersonrange 120; bind kp_downarrow vstr zn9"
set zn9 "cg_ThirdPersonrange 100"
bind kp_downarrow vstr zn1