Advertisement

Give presentations on Apple TV with AirPDF and AirFlick

As I've been exploring the newest Apple TV, people keep asking to see if I can push boundaries in new directions. Apple TV's concept of a wireless video endpoint that connects to a large screen TV has excited a lot of people.

Although I haven't yet been able to produce a way to show live game screens from iPhones (games are likely going to have to rely on local Apple TV resource processing for that, probably involving a unit jailbreak, at least at first), Apple's AirPlay does provide a ready way to give presentations using a Mac and Apple TV.

In the video that follows after the jump, you'll see a new tool that I put together in response to TUAW reader requests. It transmits PDF files a page at a time to Apple TV. Read on to learn more about how this works and how Mac developers can easily hook into Apple TV transmission.





Instead of building PDF viewing features into my AirFlick utility, AirPDF takes advantage of AirFlick's recently added external request support. External requests allow third-party programs to task the app using Apple's distributed notifications. The notifications work as follows:

// Notification: com.sadun.airflick
// RequestType := show-photo | play-media
// MediaLocation := url or file path
// Rotation := 0 | 1 | 2 | 3 (0 ^, 1 <, 2 v, 3 >)
// Transition := SlideLeft|Dissolve

// e.g. Photo
NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys:
@"show-photo", @"RequestType",
@"/Users/ericasadun/Pictures/Spring 2010/EPho 3.JPG", @"MediaLocation",
@"1", @"Rotation",
@"SlideLeft", @"Transition",
nil];
[[NSDistributedNotificationCenter defaultCenter]
postNotificationName:@"com.sadun.airflick" object:nil
userInfo:dict deliverImmediately:YES];

// e.g. Video
NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys:
@"play-media", @"RequestType",
@"/Volumes/MusicAndData/Core Media/TV/SampleVideo.avi", @"MediaLocation",
nil];

[[NSDistributedNotificationCenter defaultCenter]
postNotificationName:@"com.sadun.airflick" object:nil
userInfo:dict deliverImmediately:YES];

AirPDF converts each currently-displayed PDF page into a JPEG image, saves it to the computer's /tmp folder and then notifies AirFlick to show it. The notification carries the location of the resource and supporting information for how that item should be displayed.

This same notification approach can be used with any other app. I look forward to seeing simple Plex and Mac AirVideo Client add-ons that integrate with AirFlick, which still suffers from early and crude attempts to integrate transcoding directly into the app.

With enough time (something I'm always lacking), AirPDF's and AirFlick's technology could easily be ported to the iPad or iPhone, allowing end-users to take their presentations on the road without carrying a laptop. Unfortunately, I'm not sure whether Apple would allow these extensions past their App Store gatekeepers, so for now, my Sadun's Whiteboard product will remain tethered through a VGA or Composite/Component cable, and AirPDF users will need a Macintosh to present.

Are you working on an AirPlay solution or have something to say about some of the applications that have been appearing over the last few weeks? Drop a note in the comments and let us know what you're thinking.

You can download the software mentioned in this post from my site.