The XMP Revolution is Here

I was testing some MPEG4-AVC playback code the other day and ran into a Flash Player runtime exception I hadn’t ever seen before:

fp10_xmpcallback_error.png

Hmph. An onXMPData callback–that piqued my interest. I’ve long been a fan of metadata and XMP in particular (it takes a special type of nerd to have the meta love), so when I saw this error the wheels began to turn immediately. I had been testing a lot of video files lately, but this particular piece of content was created with After Effects CS4. This made me think that the long and slow roll out of XMP into the Adobe suite was finally here and I wanted to know what exactly they were doing.

Fist things first, I fired up Flex, set a breakpoint and loaded the After Effects created video file into my MPEG4-AVC player. The short video below describes what I found inside the onXMPData callback.

But wait, there’s more, using XMP extends beyond standard file info and saving a video file’s editing history. Case in point, Premiere Pro CS4 has a killer “speech to text” transcription feature. The transcription text is stored as XMP within the video file. This allows Premiere and other tools to accurately search for this data within a file (powers the search feature inside of Premiere and Bridge). As a special bonus, Flash Player 10 provides the same data in its onXMPData callback. Check the short video below to see what this XMP data looks like inside of Flash Player.

The implications of XMP were big enough, but the inclusion of the onXMPData callback in Flash Player 10 makes this a monster if you develop for the platform. Imagine how much more information there is at our fingertips; the ability to tap into the data, connect context, establish relationships and, ultimately, to create lean-forward experiences. It leaves, this lil’ ol’ geek giddy as a schoolgirl.

Now if only I can wrangle a few devs at work into writing XMP into the video files that TechSmith tooling creates. I’m talking cursor info, open application info, html links, captioning, callouts, quizing, the works. I’d literally be swimming in data and that my friends would make me one dangerous hombre (at least in my own mind).

Finally, content creation vendors should absolutely be aware that XMP is an open and extensible standard Adobe is attempting to promote in the industry. The spec is published and they even provide an XMP SDK for C++ and Java which allows you to read and inject XMP metadata into a variety of media file formats including JPEG, PSD, TIFF, AVI, WAV, MPEG, MP3, MOV, INDD, PS, EPS and PNG. By the way Adobe, get cracking on providing an AS3 XMP library that we can use in AIR apps. Growl is nice, but a library for reading and injecting XMP would bring down the house for meta-nerds (this is me grovelling).

P.S. In an effort to stuff an insane amount of video into a single post, or just in case you’re interested in learning how Premiere’s speech to text capabilities work check out the Adobe TV screencast below.



13 Responses to “ “The XMP Revolution is Here”

  1. Florian says:

    Hey, thanks. That’s very interesting. I’ll have to check this out.

    By the way, did you really record the screencast with Jing (or is it Camtasia 6)? Because it’s MPEG-4 and I thought that Jing is only able to record in SWF files.

  2. [...] and the BPM world of LiveCycle. And there’s plenty of excitement in Creative Suite land (XMP is an especially dorky thing that lays the lattice for niftiness, e.g., transcripts and Overlay.tv-like functionality native in [...]

  3. [...] The XMP Revolution is Here"Now if only I can wrangle a few devs at work into writing XMP into the video files that TechSmith tooling creates. I’m talking cursor info, open application info, html links, captioning, callouts, quizing, the works. I’d literally be swimming in data and that my friends would make me one dangerous hombre (at least in my own mind)." [...]

  4. troy stein says:

    I’m in way over my head, except for the marketing video at the end. :0) I appreciate you letting me read it.

    FYI, for some reason the 3rd video doesn’t load for me. http://screencast.com/t/QcTQwYE8

  5. Brooks says:

    @Florian – This particular screencast was recorded with Jing as a SWF and brought into After Effects where titles were added and it was encoded to MPEG4-AVC.

    I’m not permitted to say much about what Jing will or won’t do in the future, but I will say anyone interested should keep their eyes open as we enter the new year. :-)

  6. Brooks says:

    @Troy – I’m having some issues with my blog template and those Jing wrappers in Firefox. Refresh a few times and it should come up, or just use Safari.

  7. david says:

    i want to know how i can use XMP in adobe AIR applications

  8. Jake says:

    Hey Brooks!

    Great content, man. I love your blog. I’m starting to use Jing and noticed that you are embedding your Jing files using JavaScript and CDATA tags and using a static .jpg prior to playback. Are you setting all of that up in Jing using the preferences panel and “Jing” tags? Would love to get an extremely brief tutorial on how you set that up.

    BTW, Jing is amazing. What a great example of what can be done with AIR. Great work!!!

  9. Brooks says:

    @Jake – Thanks. The Jing client is written in platform specific code (Cocoa on Mac and WPF on Windows). Jing has pretty deep hooks into the operating system (a no no for AIR) and on the video side uses some encoding libraries, third party and home brewed, that are probably a bit beyond the scope of AIR.

    I’ve experimented with building a Jing style screen grab (static images) application using AIR and this would be fairly easy to accomplish except for the fact that you’re currently not allowed to capture the OS desktop with AIR (means you could only build a screen capture app that took grabs of the AIR application itself). I’d love to see Adobe empower us to do some of this stuff, so make some noise. :-)

    If its any consolation, the new Jing playback wrapper (seen in this post) is a Flex application–we’re using the tech where we can.

    As far as embedding goes, I use a plugin called kimili in conjunction with my WordPress install. Kimili provides the CDATA and SWFObject support inside of WP. The new Jing player supports a thumbnail, but I’m manually creating that thumbnail and uploading (yep that’s sucks, but I don’t get to dictate what Jing does). I do however use Jing’s custom embed code generation capabilities to create the Kimili embed syntax along with the URL’s to the media. I’ve done some posts on this in the past, but I’ll post the entire process again soon (probably not until the new year).

    Whew…long response. Thanks for reading–I’ll try to be a little more helpful in the near future.

  10. Jake says:

    Hey Brooks,

    Thanks for the detailed comment. I really appreciate it. I’ll take a look at Kimili. Sounds great!

    And thanks for pointing out my erroneous assumption concerning air. ;-) I was jumping to conclusions based on the chromeless nature of the app. Too bad AIR can’t handle that kind of stuff. Making some noise is a good idea.

    Thanks again!

  11. Lee Hulteng says:

    I have a question about the File Info window in Photoshop. Maybe there is a simple answer, but I’ve not found it. And, maybe this is not the place to ask but I’ll try. Why does the window open in a fixed size, and is there a way it can be altered to fit a more horizontal space? I opened the File Info window on a small screen (like a laptop) and the CANCEL and OK buttons are off screen which then will not allow me to close the window or save changes. the top of the window is off the screen too. So I have to take the file to a larger screen to enter and save info. Thanks
    Lee

  12. Mike says:

    Has the metadata we’ve been getting previously been in a different, non-XMP format? What is the format for the data we get from MetadataEvent.METADATA_RECEIVED for an FLVPlayback component, for instance?

  13. [...] of the best ways to get started using XMP is to take a look at how Adobe is using it to embed speech-to-text data inside video files using Adobe [...]

Leave a Reply