uiuc.jit.codec: video compression external for live streaming, released

Jul 29, 2011 at 4:07pm

uiuc.jit.codec: video compression external for live streaming, released


I want to let the community know that I have released (with ‘beta’ qualifications) a jitter external for live compression/decompression of matrix data. It is currently Mac only, available at:


This is a partial port of libavcodec (part of the ffmpeg project), and exposes a host of popular codecs to the jitter environment, including mpeg2, mpeg4, h263, and several lossless codecs (huffyuv, ffvhuff, ffv1). The code was developed for a series of telematic performances that took place earlier this year, between locations in the US, Australia, and Ireland. These events typically employed Skype previously, and this object gives significantly better results and control!

I have yet to take precise measurements of cpu load, speed, and compression rates, but they are very impressive, allowing us to send many streams through jit.net.send/recv objects (mpeg4 compresses over 90%, takes < 10ms for a 1024x768 frame). It can handle HD size streams, but requires some beefy hardware at high frame rates.

I would be grateful for any feedback and reports of use. After ICMC (next week) I will include some network example patches in the release, while at the moment it includes a help patch only. I can provide support as time allows.

Jul 29, 2011 at 7:31pm

Jitter2.0 is here,
Me think cyc74 should offer bounty for this and jit.openNI

Jul 29, 2011 at 8:51pm

Hi Ben,

This sounds great. Thanks for sharing your work!


Jul 29, 2011 at 8:57pm

Excellent work! In addition to the streaming abilities, it’s pretty fun to interrupt the stream now and then (with high GOP value). Thanks for sharing.

Aug 19, 2011 at 11:34am

Sounds super, a Windows build would be excellent.

Dec 2, 2012 at 2:21am

Could you post a tutorial to better understand the possibilities of this release? Many thanks, I’m very interested in that.

Dec 2, 2012 at 2:24am

Thank you so much this looks great!

Apr 8, 2013 at 9:05pm

Hi. The link appears not to be working. Would you mind putting up a new one?

Apr 14, 2013 at 2:28am


A new version, including a new, sexier name, has been posted at:


The links in the OP are dead at this point. Also, I have an audio object that does raw, multi-channel audio over UDP (duplicating the functionality of JackTrip but internal to Max without the need for Jack) which I need to post soon. If anyone has a burning need for it please let me know and I’ll bump it up my queue. At the very least it’ll be up (I’ll drop a post for it) in May.

Oct 7, 2013 at 5:00am

hi BenS1984,

i have a couple of questions.

firstly, using the uiuc.jit.codec with Max 6, it seems very unstable. On the same machine, but using Max 5 it is stable. Do you know why this may be?

Also i would very much like to see the multi-channel UDP object. I am researching network performance at the minute, and any tools that we could implement would be very much welcome!


Oct 7, 2013 at 3:08pm

Wow, indeed, would like to see that UDP audio thing be ! and a stable version of the codec for max6 too C:

Oct 7, 2013 at 8:26pm

Thanks for the interest! The versions posted on my site (see the Apr 14 post, above) should be stable in 6. The fact that you’re referring to it by the old name makes me suspect you have an old version–grab the newest! (it’s cross-platform now too)

The audio objects are here: https://dl.dropboxusercontent.com/u/26291791/max.trip.zip

Let me know if the help file leaves you with questions or problems! This version only really works peer-to-peer, connecting multiple clients together causes glitches. I’m working on a version to support many client, complex network topographies and will try to have that posted here sometime soon (I realize I said that many months ago about Max.Trip and failed!)

I’d love to hear from people who find these objects useful, even if it’s just a quick “hey, I did this cool thing with it!” Post it up here or send me a note!

Oct 10, 2013 at 10:31am

Update: apparently something with Max 6 & OS 10.8 gives rise to instability and lots of crashes, at least on some machines. I’m going to include the latest version of ffmpeg and try to get back to a stable state. For the time being consider this a known issue and I’ll let you know when I get it hashed out!

Oct 11, 2013 at 12:14am

just looking into your max.trip~… quite awesome so far. We were just playing around and trying for a three-way connection. Is that supposed to be possible? or are we just dreamers ;)

it’s late here… I should have read your post more closely – peer-to-peer only! any plans on extending this any time soon?

Nov 7, 2013 at 11:45am

Max 6.0+ version of VIPR (for Mac) is now on my site here (link to “Mac Externals 5.1.7+”. It tests out on the machines I have access to but if anyone sees instability please send me a note (crash logs would be lovely).

MAAD~: here is a new audio network object I’m developing. It is intended to stream raw audio between computers in a peer-to-peer fashion: 16 bit, any sample rate (systems have to use the same), 32 clients per connection, up to 256 individually addressable channels. I haven’t stress tested it, I’m sure you can break it. The help file is short, but look in the ‘advanced options’ for useful parameters to reduce packet loss and tune your connection.

Please post or message me if you find this interesting and have questions!

Nov 7, 2013 at 1:35pm

haha wow.

Nov 13, 2013 at 12:42pm

Hi Ben! Thank you so much for your work on vipr. I have a question about decoding a video stream from a Raspberry Pi camera. Does vipr only decode streams via jit.net.send or is it possible to use it to receive video from other sources. I am trying to get a raw video stream from a Raspberry Pi camera module into Jitter. The Raspberry Pi can send out a raw h264 video stream using netcat which I can then receive on my laptop using Mplayer. the command on the Raspberry pi is:

raspivid -t 0 -o – | nc 5001

and the command on the laptop to receive the stream via Mplayer is:

nc -l 5001 | mplayer -fps 31 -cache 1024

works well, looks good, little latency. But, i can’t figure out a way to get the video into Jitter! So I tried using vipr to listen on port 5001 but it does not receive the video. Are there any decoding parameters I can set in vipr? like telling it to look for a specific type of video stream or does it just automatically handle the input format from the stream header? I believe MPlayer on the Mac is using the FFPEG libraries as is vipr so i thought maybe it would work. Anyway, if you have any advice or ideas I would appreciate it.

Nov 15, 2013 at 7:33am

Dwingus – I am not optimistic about using vipr to get video from the Pi. The problem won’t be the decompression (although the current build of vipr doesn’t have h264, it could be included with a bit of work) but receiving the video in Max. [jit.net.receive] uses tcp and only talks to [jit.net.send] streams. I expect Mplayer opens a udp port and grabs any packets that come its way. Finding a way to get the stream from the Pi into Max will be the trick but I don’t know of a solution currently. I would suggest trying to write a Java object (mxj) to do it (using the Java network functionality) but I suspect it will be a lot of work if no one else has done it yet.

Then once you had the stream in Max vipr, with a little modification, could decompress it.

Mar 15, 2014 at 10:37am

Hello. Do you have install instructions for Windows?
I downloaded today the Windows zip file you have of VIPR. After many tries and moving files to win/sys32, max external folder, custom external folder, and my desktop…I always failed. The error when I open the vipr.maxhelp file is:

The program can’t start because avcodec-54.dll is missing from your computer. Try reinstalling the program to fix this problem.

This is on Windows 8.1 x64
Using Max 6.1.6 32-bit


You must be logged in to reply to this topic.