Capturing the screen as a DV signal over Firewire from Udart (Vibeke Bertelsen) on Vimeo.

Udart aka Vibeke Bertelsen writes with a nice hack for video on the Mac: using the ability of FireWire to stream DV, she routes video output of one computer into another. That could make for nice multi-computer processing capabilities. The basic ingredients: the FireWire SDK plus Quartz Composer.

My tutorial is a hack for making a quick screen cast from one Mac to another – without the need for any extra hardware apart from a Firewire cable.

This way the owners of two Macs will be able to create a digital video mixer on the fly using the screen capture of one computer as a video source in a VJ app on the other computer.

Furthermore the tutorial introduces two small Apple demo applications that I have not heard mention of elsewhere: VirtualDV which makes your Mac ‘pretend’ to be a DV device and QuartzComposerLiveDV which transmits a DV signal of the contents in a Quartz Composer file.

Full details on his site:
The 5$ video mixer – how to do a DV screen cast through Firewire

Okay, maybe not $5 mixer seeing as you need an entire Mac, but still a potentially nice solution!

Now, I’m guessing the Mac visualist ninjas and developers out there will have more to add to this solution, so I’m just going to remain silent and hear what you have to say. But I can absolutely think of some nice capabilities of this. Incidentally, is there anything to stop the use of a Windows or Linux PC in the mix, since the basic underlying capability is in FireWire and DV, not the Mac per se? (Perhaps at the receiving end, if not the broadcast end?)

  • Jon Williams

    Apple has a demo XCode project called qctv that lets you stream an Quartz Composer patch to DV or a quicktime file on disk. I've been messign with it, however it seems to have corrupted color channels in the current incarnation. I put the project on GitHub if anyone wants to have a stab at it.

  • nat

    I've experimented with QuartzComposerLiveDV and was disappointed in its frame rate, coming from my 2.26 dualcore mbp and my 2.66 4core macpro. The framerate in the app said ~30fps but what I was seeing on my tv was definetely lower than this.
    The color was extremely messed up, (I wonder if the qctv project uses the same code) mostly blue and white, but going through some apple forums I found a suggestion from an apple support person that just tells you to replace a few parameter names (i dont know anything about gl and quartz programming so i just did find and replace) so I did this, recompiled and it worked fine, colorwise.

  • Jon Williams

    nat, do you have a link to that forum handy?

  • nat

    thank god for Safari4's history search:

    instead of putting the if/else statement i just replaced it completely with the GL_UNSIGNED_INT_8_8_8_8 since i was compiling it to work only on my intel macs.

  • sbn..

    Heads up; Vibeke is a female name.

    Though I guess you come to expect these hacks to come from young geeks of the male persuasion, in this case you'd apparently expect wrong.

    Otherwise, keep it up + greets from CPH.

  • Peter Kirn

    Sorry, typo… was blogging from the coffee shop. Oops.

  • vade

    I really need to get off my ass and make a QC plugin that just does DV out…. bleh. Glad the screen capture is helpful. Its looking like 10.6 has some new APIs to make some things with it even nicer… :)

  • vade

    Well, an evening project has resulted in a very rudimentary but working plugin. This means DV output within QC, pass just an image from anywhere into QC, and output to NTSC or PAL, anamorphic or square pixel DV. It works, has the same latencies you would expect of DV, but this could be useful in a hitch. :) Ill try and work out obvious bugs and put a beta out soon.

  • nat

    awesome vade.

  • Udart

    Nice Vade, I was hoping that someone would come up with just this sort of thing :)

    Will the VirtualDV app still be necessary? Or is that functionality built into your QC plugin?

  • vade

    Not sure yet, I have to figure out exactly what it is the Virtual DV is doing to trick the machines into seeing one another as real DV outputs. There may have to be some sort of included app like Virtual DV for the receiving machine that lets the sending machine see it as a DV device…

  • tom

    hey vade,
    it would be great to have a tool which only streams the second ouput via firewire.
    choosable resolution for the firewire output would be great. (DV PAL/NTSC, HD etc ..)

  • Will

    What are the odds of being able to do some sort of HD capture this way?

  • nat

    or redcode RAW haha. I think the firewire 400 is too slow…

  • vade

    Im looking into allow DVCPro, DVCProHD output. No promises, no guarantees, no money back.. . Uncompressed HD is out of the question, no bandwidth. Uncompressed SD is possible in theory, AJA does it with their IO line, but frankly, my R&D budget is $0 :P

  • Udart

    @vade – I suppose you figured it out yourself – but did you look in the Firewire SDK download to see if there is anything in the documentation or examples about how to do the VirtualDV trick? Anyway it's not worse than just asking people to run the VirtualDV app – it works on Tiger too.

  • vade

    Well, 10.4 cant load QC plugins, so this will be 10.5, 10.6 only :)

  • Odin/Velmont

    We've had this in Linux for a long time. It's called DVswitch.

    It's a $0 video switcher. Great! :D

    I've used it with two computer inputs, and three cameras. That makes for switching 5 sources. :-)

  • Odin/Velmont

    Ah, and using Dirac Pro for transport (instead of DV) would be a boon. Especially if you put one of those nifty hardware-decoder cards into the mix.

  • vade

    Cool, thats similar, but its nice to be able to pipe it into the app of your choice. :)

  • DJRonSlomowicz

    I got this working and its awesome. I am sending from Virtual DJ/Cue on one laptop to GrandVJ on the 2nd laptop.

    Is there anyway to do a sort of Video Rewire where the Mac sees the Quartz Compose Live DV as a monitor? Add it as an actual display?
    With that – I could send the output of Virtual DJ directly to the output and then directly out.

    Right now I have three windows open on the desktop – the VDJ control window, the VDJ output window, which is then captured and plays in the Quartz composer window. Even with 480×640 res – there is not enough real estate.. and having three displays of motion video going at once is eating up CPU Resources (I am running a 2.5Ghz MB Pro with 4GB memory.)

    Any ideas?