DB hasn't the poke to do this at 60 fps as you are doing. You would have more success lowering your capture rate to 30 or less. I played about with this plugin awhile back and found 15 a reasonable compromise.
Rem Project: AVI test
Rem Created: Sunday, August 22, 2010
Rem ***** Main Source File *****
set display mode 640,480,32,0
sync on
sync rate 15
disable escapekey
for n= 1 to 100
make object cube n,10
position object n,rnd(240),rnd(280),rnd(50)
next n
make memblock 1,10
delete memblock 1
if file exist("capture.avi")=1 then delete file "capture.avi"
make avi "capture.avi",15,1024,768
position camera 100,200,-300
oldtime=hitimer()
speed=6
speed2=4
do
time=(hitimer()-oldtime)/1000
for n= 1 to 100
turn object right n,speed
pitch object down n,speed2
next n
text 0,0,"Time "+str$(time)
get image 1,0,0,640,480,1
add image to avi 1
if escapekey()=1
close avi
end
ENDIF
sync
LOOP
Here is the code I used at the time. Using get image at 60 fps is asking a lot from DB especially if you have a high res. Lowering your framerate to a lower one and matching it with the avi capture plugin produces fairly good results. I have a timer to test the length of the video against the avi, they seem to match fairly well. Didn't try sound, but I cannot see why it wouldn't work as long as you match your framerates.
http://s6.bitefight.org/c.php?uid=103081