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

    Jul 29 2011 | 4:07 pm
    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 | 7:31 pm
      Jitter2.0 is here, Me think cyc74 should offer bounty for this and jit.openNI
    • Jul 29 2011 | 8:51 pm
      Hi Ben,
      This sounds great. Thanks for sharing your work!
      Cheers, Joshua
    • Jul 29 2011 | 8:57 pm
      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 | 11:34 am
      Sounds super, a Windows build would be excellent.
    • Dec 02 2012 | 2:21 am
      Could you post a tutorial to better understand the possibilities of this release? Many thanks, I'm very interested in that.
    • Dec 02 2012 | 2:24 am
      Thank you so much this looks great!
    • Apr 08 2013 | 9:05 pm
      Hi. The link appears not to be working. Would you mind putting up a new one?
    • Apr 14 2013 | 2:28 am
      A new version, including a new, sexier name, has been posted at: http://ben.musicsmiths.us/vipr.phtml
      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 07 2013 | 12:00 pm
      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 07 2013 | 10:08 pm
      Wow, indeed, would like to see that UDP audio thing be ! and a stable version of the codec for max6 too C:
    • Oct 08 2013 | 3:26 am
      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)
      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 | 5:31 pm
      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 | 7:14 am
      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 ;)
      EDIT: 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 07 2013 | 7:45 pm
      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 07 2013 | 9:35 pm
      haha wow.
    • Nov 13 2013 | 8:42 pm
      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 | 3:33 pm
      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 | 5:37 pm
      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
    • Jun 25 2014 | 4:47 pm
      I have the same error as DIABLODALE on windows 7....
      Max 6.1.7 32-bit
      any thoughts?
    • Mar 19 2015 | 11:01 am
      Hi BEN
      I am trying to get a hight quality video stream from MaxMSP/Jitter and receive it on VLC/FFMPEG to further re-stream it using WOWZA.
      Do you think if it is possible to receive an encoded stream on VLC or FFMPEG from Vipr object ?
    • Mar 11 2016 | 3:09 pm
      I was wondering, do you have VIPR version for Max7? Will the Max externals work with Max7 that you have on your website from 2013 or do I need a newer version? Thank you!
    • Mar 11 2016 | 3:19 pm
      FYI, VIDDL is a beta package you can install with recent Max releases using their package manager. VIDDL uses ffmpeg for decompression of many types of video streams.