Codecs For VJ's

Compressing video is still today something difficult to understand.
We receive a lot of questions at ArKaos, the place where I work, on what is the best codec to use.

So I decided to do some objective tests on Mac OS X using the QuickTime Player and ArKaos VJ 3.5.1 hardware accelerated. I did choose a random video loop and I did re-compress it with several codecs found inside QuickTime. The idea is to see what is the best file format you can use when you are performing in real-time with an application such as ArKaos VJ.

Those result should apply to Windows running QuickTime, I did also test the DivX codec inside an AVI file and a DV file.

The first test done was playing the file inside the QuickTime Player and using the terminal with Top to see what is the load on the CPU.
For this test the number should be as small as possible, because it means that your cpu has less work to do to decompress and display the video.

The second test was done playing those video loops inside ArKaos VJ 3.5.1 at 100% speed. Many people will use this setup to simply play a video loop forward. I did this test in the preview window so the frame rate is limited by ArKaos at 50 frame per seconds. There are 3 things that I did measure, the effective frame rate, what we call the frame rate of the ArKaos engine that represent the load of the engine and I used top in the terminal to see the global load of the cpu.
The Global and Engine FPS should be as high as possible while the load of Top should be as small as possible.

For the third test I did play the movies backward, VJ's need to be able to play their content in all possible ways, forward, backward, jumping randomly, so this test gives a good idea is a codec is adapted to doing various real-time manipulations.

So here are the results of my tests:
Movie size 560*304 DivX pjpeg h264 component sorenson3 Cinepack DV
size 10.3 68.9 23.2 500.0 50.4 43.9 206.0
Size/frame K/sec 175.8 1175.9 395.9 8533.3 860.2 749.2 3515.7
Test 1 : Playing in QuickTime Player
QTPlayer Top % 37.0 26.4 42.0 36.3 42.8 25.1 30.0
Test 2 : Playing Forward
ArKaos Global FPS 42.0 49.0 40.0 49.0 37.0 50.0 46.0
ArKaos Engine FPS 98.0 126.0 88.0 140.0 71.0 207.0 116.0
ArKaos Top % 49.0 37.3 50.0 32.0 50.0 34.0 39.0
Test 3 : Playing Backward
ArKaos Global FPS 1.5 50.0 8.6 49.0 6.0 36.0 46.0
ArKaos Engine FPS 6.2 140.0 25.2 130.0 13.1 134.0 105.0
ArKaos Top % 87.0 38.7 87.0 34.0 83.0 49.3 43.1
Compression Speed Fast Fast Very Slow Slow Slow Slow Fast
CPU Usage Playing Forward Medium Good Bad Very Good Bad Very Good Good
Respect Quality Very Good NO
Good Compression YES YES YES Very Bad YES YES Medium
OK to Scratch NO YES NO YES NO Medium YES


So the winner is the Photo-Jpeg codec, each time we do that kind of test I concluded this and this time again it seems to be the winner...

If you are looking for a very good compression ratio and can compromise on the CPU load the DivX or XVID file format is nice.

If you are looking for a very good quality and if you can deal with huge files and if you have very fast hard drives you can choose the Component Video codec.

Codecs such as Sorenson3 or H264 should not be used. They are very good for streaming but their load on the CPU is too high.

The DV codec can be a good choice but the file size is high and you can't choose the size of the image size, you must choose between PAL and NTSC.

The Cinepack is a very old codec and is using very little CPU but at the cost of very low quality. So it should be avoided because of the quality issues.

If you need to scratch your content, play it forward and backward, Photo-Jpeg, DV or Component Video are good for this. The other are to be avoided at all costs. Once again Component Video produce huge files, so only use it if you have a lot of disk space and very fast disks.




© 2013 FraKtus, all rights reserved.