1) We're happy to release a demo of what's effectively the near final of Dark Video Capture, although it needs a lot more testing on our side, especially on laptops with Intel graphics. See below if your interested in taking it for a test drive.
2) We've found some last minute problems with Dark Video regarding the seeking to a specific frame functionality and a few other minor issues. Unfortunately, this means Dark Video 2 is now delayed by up to 30 days. I don't want to release it with these problems, however minor. So, we decided to at least release something.
Dark Video Capture
Dark Video Capture is now in a separate dll from Dark Video. Because we do all kind of tricks to get at the internals of the generated exe, we don't really want this stuff shipping in the main Dark Video dll.
Dark Video Capture will currently only work on Vista or Windows 7 and this is because we've had to go down to near the kernel to capture the sound, using exactly the same method as FRAPS uses. We do have code to do this on XP but it's commented out at the moment. If there's a lot of people who still want to use the increasingly ancient XP, just let us know.
Dark Video Capture will try and use two cores for itself when encoding so it's best run on a quad core although it seems to run well on a dual core. It will run appallingly on a single core and this is not supported.
Video capture is a very processor intensive task so if you're going to test this on rubbish hardware, don't be suprised if you come across problems. I'd recommend a decent Core 2 Duo/Quad (although it seems to run fine on my wife's crappy Centrino Duo and Intel GMA 950 graphics based laptop) and a good mid range graphics card.
To see a capture just made on this machine at 1024x768, download:
http://www.deepcovesoftware.com/darkvideocapture/capture_out.rar. You'll see it's very smooth. You'll need a MPEG4 decoder installed to view it.
Currently, Dark Video Capture will draw a green line every 8th line. In the final release, this will be replaced with a watermark that will be able to be removed by entering the first and last five digits of the serial number.
To get started
1) Make sure to download the latest CCCP codec pack so you can use a nice codec when compressing your avis. You can find it here:
http://www.cccp-project.net/.
2) Download
http://www.deepcovesoftware.com/darkvideocapture/DarkVideoCatpture.rar and unrar somewhere.
3) Copy "Compiler/plugins-user/DarkVideoCapture.dll" to "<DBP-directory>/plugins-user".
4) Copy "Editor/Keywords/DarkVideoCapture.ini" to "<DBO-directory>/Editor/Keywords".
The commands
There's only four commands:
DARKVIDEOCAPTURE OPEN
DARKVIDEOCAPTURE START
DARKVIDEOCAPTURE STOP
DARKVIDEOCAPTURE CLOSE
The first command takes four parameters:
<name of output movie - (*.avi)>
<width of output movie>
<height of output movie>
<frames per second of movie>
MAKE SURE THE OUTPUT DIMENSIONS ARE THE SAME AS YOUR SCREEN RESOLUTION. So if you set a mode of 1024x768, you need to pass 1024 and 768 to 'darkvideocapture open'. The reason is because we want to show the compression dialog before you switch mode. Don't switch mode and then call 'darkvideocapture open'. The frames per second parameter should be the same as your sync value. So, for 30 frames a second, set a sync value of 30 and pass 30 to 'darkvideocapture open'. DO NOT SET A SYNC VALUE OF 0. Also, you should set a display mode of 32-bit colour. 16-bit colour is not currently supported.
The other three take no parameters.
Adding DarkVideoCapture to your projects
Now, to use, you need to make sure you call 'darkvideocapture open' as the first command in your program, before you switch modes as it will show a dialog asking you for compression options, as seen here:
http://www.deepcovesoftware.com/darkvideocapture/compression-options.png
We recommend you select "ffdshow Video Codec" as this will make a nice small avi for you. You'll probably need a lot of horse power to encode with this though. You can use uncompressed frames too for best quality but this will place a heavy strain on your processor and remember, there is a 2GB limit on the created avi. With full uncompressed frames at a high resolution, you'll reach that limit in no time.
Next, call 'darkvideocapture start' to start the capture going. You can either quit your Dark Basic program and the video will automatically be shut down or you can call 'darkvideocapture stop' and then 'darkvideocapture close'.
DarkVideoCapture is designed to be used in a session. It's not expected you'll want to create multiple movies in the same session. So, the logical expected flow is as follows:
result = darkvideocapture open( "<some-path>\myAvi.avi", 800, 600, 30 );
rem not how the width, height and fps are the same as the values we're passing to DBP? This is a necessity.
sync on : sync rate 30 : backdrop off : hide mouse
if check display mode(800,600,32)=1 then set display mode 800,600,32
rem initialise my stuff
rem ...
rem ready to capture
result = darkvideocapture start()
rem main loop
do
rem ...
rem update screen
sync
rem end loop
loop
rem stop and close capture
result = darkvideocapture stop()
result = darkvideocapture close()
We've noticed that in a real-world program (the RoadTerrain demo), the last two lines never seem to be called. This is another thing that has slowed us down. Dark Video Capture can realise when the app is shutting down but I'd rather DBP executed those two commands at the end. This kind of thing is out of our hands.
Anyway, let us know if you're having problems as this is your chance to help us make the capture rock solid.
Lastly, the capture is running flawlessly on our test hardware (which is admittedly very, very fast) but it should work ok on regular hardware too.
Also, we had problems trying to use DivX as a codec and this seems to be a big complaint on the internet that they broke something when it comes to using DivX as an encoder for an avi.