Configure player

Close

WWDC Index does not host video files

If you have access to video files, you can configure a URL pattern to be used in a video player.

URL pattern

preview

Use any of these variables in your URL pattern, the pattern is stored in your browsers' local storage.

$id
ID of session: wwdc2003-712
$eventId
ID of event: wwdc2003
$eventContentId
ID of session without event part: 712
$eventShortId
Shortened ID of event: wwdc03
$year
Year of session: 2003
$extension
Extension of original filename: mov
$filenameAlmostEvery
Filename from "(Almost) Every..." gist: ...

WWDC03 • Session 712

QuickTime for the Web

QuickTime • 1:15:30

This is an information-packed session that will cover basic and advanced techniques for using QuickTime on your web pages. Topics include the easiest and most effective ways to embed QuickTime in a page, techniques that work cross-platform and cross-browser, using the EMBED and OBJECT tags, scripting the QuickTime plug-in and ActiveX controls with JavaScript, launching QuickTime from a text link, how to launch full-screen movies from a web page, and using MPEG-4 and QuickTime together over the Internet.

Speakers: Aimee Nugent, Steven Gulie

Unlisted on Apple Developer site

Transcript

This transcript was generated using Whisper, it may have transcription errors.

Good morning. I trust you've all had your coffee, or at least started to. We're just getting ready to come out with the third edition of QuickTime for the Web, and it's still a virtual book, but it's almost ready. Actually, it's at the printers now, and so if you do want to get a copy of the third edition with QuickTime 6.3, go over to the Morgan Kaufman booth in the main auditorium there in the area. They've got a special going 20% off and free shipping if you want to order it at the show here, so it's kind of a good deal. It comes with QuickTime Pro, so you can do some authoring. This session is QuickTime for the web, and we're... There we go. That's me. I'm Steve Gooley, senior technical writer at Apple. And we're going to be talking about using QuickTime over the internet. That's a really broad topic, so we're going to narrow it down some. We're really going to be talking primarily about putting QuickTime on your website. So we're going to try to bridge the gap between painfully technical and painfully non-technical. And just stick with painful. So it's mostly going to be about HTML. There'll be some movie tricks for movie authors, a little bit of XML, and maybe some JavaScript if we can get that far into the presentation. We'll see how we're doing. We got mainly HTML authors here or movie authors?

Okay, applications programmers? Okay. Perl PHP programmers? Okay. All right, well, we'll see where we go here. This is going to be about how to put QuickTime movies on a web page, how to launch QuickTime Player from your web page, get those full screen movies going, and how to play other media, MP3, MP4, anything you want to play using QuickTime besides a QuickTime movie. Some specifics about working with MPEG-4 and QuickTime together, the way they play together and don't play together, and how to put live and pre-recorded streams on your web page, and to decide when to stream and when to use what we call Fast Start technology, and I'll I'll get into that a little bit more. Putting media skins and chapter lists with streams. So mixing streaming and non-streaming content, which is kind of tricky. And a little bit about scripting QuickTime using JavaScript.

Okay. So, putting QuickTime on a web page. The main thing there is getting QuickTime to come up at all through the browser. You're coming through a browser interface, so the question is really how does the browser choose what player to bring up for multimedia and how do you particularly make it choose QuickTime? And there's three HTML tags you can use inside of a web page to bring multimedia into a browser. The href tag, which is your standard hypertext link for text, the embed tag, which has been around for a long time, and the object tag, which is a little bit more recent. The href is the most obvious thing to do.

You put in a text link that says, click here for the movie, and you link to a movie, and people click it. Why shouldn't you do that? Well, because it doesn't really work very reliably. The browser-- doesn't really know what file type it is here. You're not able to tell the browser what the file type is or what plug-in you want to use. You're just giving it a URL. So the browser says, well, what kind of file do I have here?

And it asks the server, typically, if it's on a web server or if it's on a CD. It just looks at an internal table. But in either case, it's going to look at the file extension, either the server is or the browser is. If it says JPG, it goes, oh, it's a JPEG. If it's a PDF, it goes, oh, it's a PDF. If it's.mov, it goes, oh, it's a QuickTime movie. Hopefully. But it's up to the people who run the server to update the table, or the people who write the browser to keep that table updated. And people can fool around with those tables to some extent.

So if the extension is wrong, if you don't name your movie.mov, if it's just my movie.nothing, or if that's not in the table, then it typically shows up as text. Your movie shows up as a big screen full of text. And I think you've probably seen that sometimes. You click a link and, gee, it's a screen full of text. It doesn't seem to be what they had in mind. And if the extension is in the table, then what happens? Well, we switch over to the demo machine here. A number of things can happen, but it's not terribly predictable.

If all is well, then when you click this link... Let's see if we can get a little bit bigger text here. Well, it's too big. then what will happen is the movie will open in a blank window all by itself, which is not a terribly attractive way to display things typically. But that's not the only way it could happen. It could happen in a window that's just specifically sized for that movie, or it could open in QuickTime Player, or it could try to open in Windows Media Player. All sorts of things can happen, and it's really up to the browser. And that's really not the choice that you want it to make. and even if it does open in QuickTime Player, then what happens? Well, It may download it and open it in QuickTime Player, in which case your viewer is sitting there waiting while the whole movie downloads before it starts.

Or it may download it and then say, well, okay, well, that's good. If you've ever launched Click to a PDF link, you've probably seen this. Sometimes it opens in the browser window. Sometimes it opens in Preview. Sometimes it opens in Acrobat. And sometimes it just downloads to your desktop and you have to double-click it. And again, those are not a lot of choices you want to leave hanging in the air. You want to be able to have some control over that. Yeah.

So then what happens if QuickTime is not installed and somebody clicks that link? Well, you don't have any way to tell it what plug-in you want to use. So if the user doesn't have QuickTime, maybe they see a broken puzzle piece, or it can complain and say, do you want a plug-in? And they say yes, and then it goes thrashing around looking for a plug-in somewhere, but it doesn't know which one to get. Or it gives it the old college try. It says, well, I've heard of QuickTime movies. Maybe I can play that. And Explorer is really wonderful at that.

It says, you know, let's go for it. I can play QuickTime movies that were authored before 1992. And usually what you see is a broken Windows media application player icon. And that's also now what you want to see. So the best way to do it is to use the embed tag. And again, if you're using a tool to do your HTML for you, Go Live or Dreamweaver, then it will typically do this for you. Drag a QuickTime movie onto the page and it will make an embed tag for you. And the way the embed tag works is it lets you specify the URL, but also the file type so that it doesn't have to guess. And also the URL of the plug-in if it doesn't have one. So your source code looks like this. You've got your source, which is the movie you want to play, the type, video, QuickTime, the plug-ins page, apple.com slash QuickTime slash download. So this, and the height and width on the page. The browser gets the file type from the web server or the HTML. If the web server doesn't know, you've put it in your HTML. If the plug-in isn't installed, it says, okay, I know which URL to go to to get it. And if the plug-in is installed, it opens in the current web page. I'll show you on the demo machine here.

So this is a little bit more attractive. Your movie's playing in the middle of a web page that you've created for it. And the embed tag is almost painfully simple. You've got the source, the height, and the width. The height is going to be typically the height of the controller, of the movie itself, plus 16. In this case, I've set it to 20 because it's just an audio movie, so the height of the movie itself is zero.

This is just a JPEG. But in this case, if this movie had opened alone in its own window, it just would have been an audio controller. And in this case, it's where it really belongs, so it looks a lot nicer. And that's the long and short of it. If that's all you do, you'll have done a lot of the right thing rather than just link to it. But there's more. here.

So, this doesn't always work just the way you want to. The notion of a plug-in was created by Netscape and when they invented the plug-in they had this idea that, okay, browsers can display a lot of things, but people invent new media types that we can't display or don't display yet. So people will create a media type and they'll create a plug-in. And you'll say, oh, my media type is Flash, so I'll have a Flash plug-in and when the browser sees a Flash media type, it'll load the Flash plug-in, all will be well. But then things began to change so that multiple browsers, multiple plug-ins could handle the same material.

MP3 and Smile are good examples. Reel handles them, QuickTime handles them, Windows Media handles them. There's all kinds of audio plug-ins that will handle an MP3. So when the browser sees an MP3 file, what plug-in should it call? And if you look back at the embed tag, you'll see we could say what plug-in to use if there was nobody who could handle that media type or where to get it rather. But we weren't able to say this is the plugin I want to use to play this media. All we can say is, it's a QuickTime movie or it's an MP3 file.

So who gets it if multiple plugins can handle it? Well, with Netscape, the first one to register, with Explorer, the most recent one to register, and we kind of went through some mime type wars where different people's plugins would grab the mime types and put in continuous loops where at every interrupt it would look and see if somebody had taken its mime type and tried to get it back.

But the answer, if you really want to use a QuickTime movie, is to use a mime type that only QuickTime registers for. and then you won't get into these conflicts. And there are three QuickTime file types that you can use, but the two we most recommend are the.mov. Now, there were problems in the past where sometimes a Windows media player would claim the video QuickTime mime type, but that seems to be behind us pretty much now and there are some new solutions I'll talk about a little bit further on that prevent that from happening. So that's now a good mime type to use. The other one that's really good to use is the QTIF file, which is the image quick time. And nobody else registers for that. However, it's fairly rare. One of the problems you can get into is if your server doesn't know about QTIF files or PNTG files, they're not in their table, then you have to make sure that that's put in that table by your network administrator or by the webmaster. And it's not hard to do. It's a one-line command, but it's easy to get overlooked. There's also the.PNTG file, which is the ImageX MacPaint type. And that is a MIME type that I guarantee no one will ever take.

But if you use anything other than the.mov file to play a piece of media, you need to use the QTSource parameter. The way this works is you say embed source equals, say, small QTIF. You have a small QuickTime image file. The browser says, oh, he wants to play a QTIF file. Who's registered for that MIME type? Well, only QuickTime, so it loads the QuickTime plugin.

Then the QTSource plugin says -- I'm sorry, the QTSource parameter. This is some data that you can just pass to QuickTime. Once you've passed the source and the height and the width to the browser, anything else you pass goes directly to the plug-in that gets loaded. So you can pass all kinds of information in your HTML web page to the QuickTime browser to get it to autoplay your movie, play at a different scale, do all kinds of neat stuff. In this case, what you're telling it is, even though my source was this QTIF file, that's not what I want you to play. I want you to play this movie.

And you could also use that to play an MP3 file or an MP4 file or any of the 200 media types Windows QuickTime can play on Windows or Macintosh. So if you want to use QuickTime to display a JPEG or a GIF, well, that's fine. And again, if they don't have it, you get your plugins page and your height and width. Let me show you how QTSource looks on the demo machine.

And what you see here is that because we're using source and Qt source, because we're talking to the QuickTime plugin, we can tell it to auto play the movie and to set the volume at 25% so it's not overwhelmingly loud. And this basically says we've told it QuickTime image file is what it's going to get, but it never displays the QuickTime image file, which is good because in this case--.

But the trick to making this work is the source file must actually exist. You really do need to have a QuickTime image file there. To make a QuickTime image file, you can open anything, like a single dot GIF in QuickTime Player, and save it as a QuickTime image file using the exporter. So then you've got a little backup. But it doesn't really matter what it looks like, because it's never displayed. QuickTime is the only plug-in that will try to display it, and it knows better, because you're telling it the QuickTime source is the movie, not the image file.

Now, that's the embed tag. And if this is what you use, then you're really going to go a long way. It's going to work in QuickTime every time QuickTime is installed. It'll get the QuickTime plugin if it's not installed. And it will never be distracted by another MIME type.

There's also an object tag. The object tag is very useful because it lets you specify a particular plug-in, in this case an ActiveX control, using the ID, and it gives you the URL of the ActiveX control if it's not there. So on Windows, this is really terrific. You can use the class ID and code base that are here, and you can cut and paste them from our website. It's always the same. It's large, but it never changes, so it's static. And the thing that's a little different is instead of saying the source equals my movie, You have a param whose name is source and value is my movie. But anything you would pass to QuickTime in the embed tag, you can pass in the object tag. It's just the parameter name and value are passed separately in a param element.

And this is now getting a little closer to XML. It's a little more strict, so you have to close your object tag properly, not just leave it hanging. But it's pretty nice. The browser gets the file type from the server or HTML, but it doesn't matter because you have told... the browser that it's going to use a particular ActiveX control. So it doesn't really matter what the file type is. And if it's not installed, it automatically gets it from that download URL. If it is installed, it opens it. It's great. The only problem with this is that it only works in Internet Explorer for Windows. You probably have--some of you are more familiar with the W3 spec than others and will say, "Oh, you know, embed is not a standard but object is." It's a standard but it's a broken standard.

The object tag, as written here, will only work in Internet Explorer for Windows, not any other browser, not Internet Explorer on any other operating system. Thank you. However, you can put them together. And this gets to be a lot of code, but there's really not that much to it. What you've done is you've taken the object tag and stuck the embed tag right in the middle of it. And what this does is it says, okay, if I'm an Internet Explorer for Windows, I will use the class ID and code base, and I will get the QuickTime plug-in, period.

If I'm not, if I'm on another operating system or using another browser, then I'll use the MIME type in the source file to determine which plug-in to use, and the QT source will tell QuickTime which movie to play. And the plugins page will tell me what to do if QuickTime is not installed and I'm not in Internet Explorer for Windows. And let me just back up a little bit here. If you look at this embed tag, what if you just use the embed tag without the object tag? This works fine on Internet Explorer for Windows. This works fine on all browsers and all platforms. You don't have to use the object tag.

But if you're on Internet Explorer for Windows and QuickTime is not installed-- you have a problem because Internet Explorer for Windows does not honor the plugins page tag anymore because it's not a plugin, it's an ActiveX control. Thank you. At least I think that's the rationale. Anyway, if QuickTime is not installed, it will just say, I don't know what to do. And so the answer is to put this at least once in your website. If you have a gateway to your website, once the user gets the QuickTime ActiveX control, the embed tag works fine. So at least once they have to hit this object tag to know that this is the ActiveX control we want. But I think you'll find that if you're using the latest generation of web generating tools, They'll surround the embed tag with the object tag anyway. There's a website, QT Bridge. They make a product called Pagiot, P-A-G-E-O-T.

It's French, but it's free. And you can just drop your folder full of webpages on it, and it'll go through and turn all the embed tags into embed tags plus object tags. So there's lots of free automated help for this. You don't have to type it in every time. But this is the belt and suspenders way to go, particularly if sometime in the future Internet Explorer decides to drop support for the embed tag and say we're only using the object, then you'll really be glad that all your tags look like this because they'll continue to work on every system. So don't use href, do use embed, or better still, use object and embed together. And are we, do you have any questions so far? Are we all kind of on the same page? Yeah. Thank you.

Okay. The question is if Explorer takes the most recent way, recent plug-in to register for a MIME type and Netscape takes the first one, how does Safari work? Safari also takes the most recently registered for that MIME type. There's basically, it's more like a Windows system now where there's a registry and the most recent person to alter the registry is the person who is listed in that registry. But let me show you here on the demo machine a little bit how that looks. Again, it acts the same. I'm going to make this a little bigger so you can see the text.

So you've got a class ID, you've got a code base, And this says, this is the ActiveX I want. This is where it is if you don't have it. And here's the embed tag. If you are not Internet Explorer for Windows, which obviously we're not, we're Safari on the Macintosh. So I guarantee you that if you pass the MOV file type, Safari will bring up QuickTime. I don't think it even asked the question. OK. Excuse me. JOHN LUTHER: Yes. The question is, in the embed tag, don't we have a link to the Apple web page? And in fact, we do. It's the plug-ins page. I may have omitted it from the slide here just because it takes up a lot of space on the screen. Okay.

Okay, now once you have QuickTime plug-in talking to your web page, you can tell QuickTime to do a lot of interesting stuff. It's very web-friendly. You can tell it, for example, to autoplay the movie when it starts or to set a background color so that it matches the background of your web page, to have a controller on or no controller on so that you can have your own stuff going on that. Lots of stuff. Enable JavaScript so that you You can have JavaScript control the QuickTime movie, set hotspots for virtual reality. There's an href tag that lets you say, "Okay, if somebody clicks on the movie, open this URL." That could be the URL of another movie or a different web page, lots of things. Put it in kiosk mode so people can't save the movie.

Tell it to loop the movie continuously. If it's a virtual reality panel, you can set the pan, tilt, and field of view for it to open with, which is a really nice thing without having to go and alter the movie itself. Qt Next, say when this movie is done, play this other movie. Or open this other URL when the movie is done. Set the scale to play it twice as big, half as big as it normally is.

You can target a movie. So when someone clicks on the movie, it causes the URL to open in a frame, in a browser window, in QuickTime Player, or to replace the QuickTime movie itself. And I'll show you that in a moment. And you can set the volume. There's lots and lots of HTML-friendly features of QuickTime you can access now and control directly from your web page.

So one of the first things I'm going to show you about that is using a poster movie. One of the problems with embedding movies in a web page is they're big. So if you've got a 26 megabyte movie file, and somebody goes to your web page and it starts downloading, it's kind of rude, especially if they're on a dial-up. They're kind of like, wait a minute, I don't know if I signed up for this. So you can use a single image to bring up the QuickTime plug-in and then warn the person that if you click this, something is going to happen. And then let that be the lead-in to play the QuickTime movie or to not.

And clicking the poster can act to do a number of things. Basically, it tells QuickTime I want to do something. And it could load another movie. It could load a web page. It could execute a JavaScript function. It could fire off a movie in QuickTime Player. And the key to it is just the href tag. You have a source, which is in this case-- let's see, I left out the QT source, or someone did. But the QT source would be to your movie. And there's an href so that when you click on the movie, it opens that URL in the target if there's a target. Let me show you that. Over here on the demo machine.

Here's what we did for the Audubon Society. They didn't want the sound of the Loon, which is a big audio file, to load immediately. So here we have-- it just says, click here for the QuickTime audio. This is a little poster sitting under the Loon. And if I click it, it loads a QuickTime movie.

OK, the question is, is there a difference between the href and the QT source? Yes. QT source-- OK. This is really kind of an interesting little tag. Look at this embed tag. The source is a small QuickTime image file. And all that does is tell the browser, I want to use QuickTime. The QuickTime source is actually a GIF. I can tell QuickTime to display any kind of file I want. I'm going to reload this page.

And you see this is a GIF, this little speaker icon in this text. This is just a GIF called Speaker GIF. It's got a height and a width. But I'm opening it with QuickTime. When you open a GIF in QuickTime, it opens it as a still image, but it's now a QuickTime movie.

So I've turned the controller off because we don't want to play this movie. We just want to click on it. I've set autoplay to be false because, you know, what's to play? But if I click on it, that will launch the href URL, which will be loon1.move target myself. So that says when I click on the movie, load this URL, and the target is the movie that I clicked on. Replace yourself with this QuickTime movie. So right now we're looking at speaker.gif and when I click on it, it will load loon1.move right where it is. It will replace itself with a movie.

The reason I'm using height... Okay, why am I using height 20 instead of height 16? 16 is the correct height for the controller, and the reason is because the GIF was 20 pixels that I was given, and I did this as a favor to some people who were doing a website. Okay, so it's... Yes? Why don't you... I'm sorry, I can't hear the question. Why don't we have a rollover?

JOHN MUELLER: Why don't we use a rollover? Sure, we could use a rollover. There are lots of ways to do this. But I'm just showing you a poster movie, which is basically a movie that you click to launch another movie. This is just one more technique in your arsenal of things to do. It should be included in the poster movie, in the poster frame.

Why don't you include rollover at the poster frame? Because you have to right click on that frame. Oh, I see. Why don't I use a rollover instead of writing click on that frame? Sure, you could do that. That would be a fine thing to do. There's no particular reason why I didn't do that. Although sometimes you want people to click on the image. But yeah, a JavaScript rollover works fine there.

Okay. Now, another thing you can use a poster movie for is to launch QuickTime Player, and one of the reasons you might want to do that is so you can get a full-screen movie. Now, to launch a movie in QuickTime Player is pretty straightforward, but not terribly impressive. You just set target equals QuickTime Player instead of target equals myself. But to get a full-screen movie, you need to have either a movie that's in full-screen mode, or you have to have some way to tell QuickTime I want to play this movie in full-screen mode, even though it's not necessarily a full-screen movie. but the short answer is use target equals quick time player and There are three ways to, well, there are several ways to make a movie into a full-screen movie. There's an Apple script. You can use an Apple script to turn on full-screen movie mode for any movie and say when this movie plays, it is to play in full-screen mode if it's in a QuickTime player. There's a little free tool from Apple called Plugin Helper that will set that characteristic for you.

You can use Cleaner or Live Stage to set that characteristic. You can put a wired sprite inside the movie. Just drop it in there that I'm a full-screen sprite, and when I get loaded, I go to full screen mode. Or you can use an XML text movie, and I'll show you about that in a second. OK, let me bring up a couple movies and show you a little bit more about that.

Here's a web page, and it's got a poster. And when I click the poster, it's going to launch-- click the poster above to launch a full screen moving QuickTime player. Why not use a rollover? Well, could have done that too. But the key is that you get a different view. Gee, that's a big way.

So here we set the movie to play a full screen movie and quit when done. This is a really nice experience. When somebody comes to your web page and they click on something, it goes full screen, the movie plays, then when it's done, they're right back at the web page like it was never there.

And it gives the impression that you've got a full screen plug-in. There's no such thing. The browser gives a little space to the plug-in. But the plug-in now calls the QuickTime player, and QuickTime player can go full screen and then drop back into the browser when it's done. So this is a really nice technique. And let me just show you something here.

Let me show it to you in a larger way. Is this readable at all? Can you see that text? Thank you. Maybe not. Okay, well, how big can we go? How's that? Getting somewhere? there. This is a really simple text file. This is an XML text file. And it just says, I'm an XML text file. I'm a QuickTime media link. These first two lines are always the same, so you can cut and paste them. You don't have to remember that. Just type it in. Just cut and paste it. All that really matters is your very last line here, embed source equals. And here you just put in all your embed tags you would want to do. So you can set full screen mode, autoplay, quit when done. It's really handy. This is a text file, and you can see it's a text file because I just opened it up with If I change that to an MOV file, It'll warn me, hey, you can't just change file extensions like that. But yes, you can. Thank you. Well, so XML, the miracle of XML. You take an XML file, you give it an MOV file extension, QuickTime will play it as a movie. And this is great.

Now I can embed that movie in my web page, or I can call it from anything. It's just really terrific to have this capability at your fingertips. So that's kind of a neat technique I wanted you to know about. OK, we've seen posters. No, no. The question is, is that only for Safari? That works in any web browser that's out there today.

Okay, we're getting some questions about this. Let me go into this a little bit more then. I think I have some other movies that illustrate this maybe just a little bit better. Obviously, I've kind of dropped a bombshell here. Everybody's going, wait a minute, what are you doing? Let's look at these. Thank you.

hard way. I'm sorry. The XML is not being interpreted by the browser at all. It's by QuickTime. We've got the browser to call QuickTime. This, by the way, is taken from the website for the book. And let's look at special delivery. Okay. So first we're just opening a movie in QuickTime Player. Then we're going a little step further and opening it in full screen. And let's see.

OK. Now, we didn't have to change the file type from-- text to MOV. We could have changed it to.QTL..QTL is defined as application QuickTime player, and when you open a QTL file, the browser should automatically launch QuickTime player. That's how real does it. It's like.RM or.RAM files, and the browser just knows to use their player. The problem is that, again, it isn't always registered for that. Sometimes it downloads and plays.

It leaves what we call a mouse dropping behind. It leaves the QTL file behind on the viewer's disk. So we tend to use it as a MOV file, so it opens in the plug-in and then let the plug-in launch the player rather than ask the browser to launch the player. So if you use any file extension besides MOV or QTL, the operating system is going to treat that as telling you what kind of file type it is. If you call it.jpg, it's going to try to open it as a JPEG, right? If you call it.txt, it's going to display it. But if you call it a.mov file or you use the QT source parameter to open it with QuickTime, tell QuickTime it's a movie, QuickTime looks at it and goes, ah, it's XML, I know what this is. And then it opens the movie you want to play. So it's a little bit of a shell game here where you're telling the browser the file type is something QuickTime can open, then tell QuickTime, treat this as a movie, and then let QuickTime do the right thing about the XML. You can name it.QTL and try to get the browser or the operating system to open it with QuickTime Player. That should also work, but in my experience it's not entirely reliable. Okay. Yeah. - That means you have a poster movie that calls an XML file that calls Yes, okay, here's the question. We have a poster movie that calls an XML file that specifies yet another movie, and that's right. So we're getting kind of several levels of indirection here, but that's how it works. But obviously the key is that it allows you to... The nice thing about doing it this way is that XML file can be generated by a Perl script or a CGI really easily.

You don't have to actually generate movies and specify them. You can just say, play the movie of the day,.move and have a text file that spits out the right movie, which could be specific to the browser, to the user, to all kinds of things. So it's really handy to have that kind of interaction, although it is a little confusing sometimes. OK.

Which versions of QuickTime will recognize the XML? QuickTime 4.1 and later, I believe. So what we found is that since we have the auto-update in place, that we're not finding old versions of QuickTime very often anymore. QuickTime 4 and later automatically update to 5, automatically updates to 6. Some people choose not to do the download, so you might hit QuickTime 5, but the likelihood that you'll hit something that can't interpret that XML file is very unlikely. Okay, so if you have a poster movie, a couple of things. Make the poster the size of the movie that you really want to play, plus 16, so there's room for a controller. Set the controller false for the poster, because otherwise people will try to play the poster instead of clicking on it.

Set the href parameter equal to the URL of the movie you want to play when somebody clicks on it. If you want the poster to morph into a movie, then set target equals myself. And let me show you just one more thing about that back in the demo machine. Because here we go, multi-movie. Here we go.

Here we've got a web page with three movies on it, but we really don't want to download all three movies simultaneously. So what we do is we say, "Okay, flowers and chirping birds, sunshine and bunny rabbits, all as well. Okay. So what we're seeing here is posters that link, that turn into movies when you click them. And I'll just show you something that I won't really explain, but it is in the book, which is that you can have a poster turn into a movie.

and then turn right back into a poster again. That's a little bit of leisure domain where you put something in the movie that says, when I'm done, replace me with this other movie, which in this case is a poster. But the trick here is the poster movie is 16 pixels taller than the real movie, so there's room for a controller. And the poster movie doesn't have a controller because you don't want people to play it. You want people to click on it.

So that's setting target equals QuickTime player. For full screen movies, you can either make the movie itself a full screen movie that just when it plays, it plays in full screen. Or you can use XML to set full screen mode to play any movie you want in full screen. And any more questions about what we just covered?

OK, we're all on the same page, or else people are beginning to glaze over one way or the other. OK, let's look at playing some things besides QuickTime movies in QuickTime Player or QuickTime plugin. Why would you want to do that? MP3 audio, MP4, Flash, Smile, RTSP streams.

Some of these things, like Smile or RTSP, might be QuickTime movies. And so you want to direct them to QuickTime specifically because it is QuickTime. But why might you want to play an MP3 file in QuickTime? Well, because if you just load up an MP3 file and say, embed this and play it in whatever, you don't have any idea what's going to play it. You don't know what it's going to look like. You can't really control it. You can't set autoplay or set the volume. You don't know if it's going to open an application, if it's going to download. QuickTime is pretty nice at this. It actually will play it for you and it plays it while it's downloading. And you can set it to auto start and set the volume level and set it to loop or set it to put an href on it. So if somebody clicks on your, put a poster with it, so if somebody clicks on the poster while the song is playing, they're with an opportunity to buy the album, that sort of thing.

So you can use QTSource to specify anything of the over 200 media types that QuickTime can play and say, no, I want to play this in QuickTime. And as we saw in this previous demo, you can display a GIF, but when somebody clicks on the GIF, take a QuickTime action based on that. So it's a really handy way to repurpose other media. And again, it's fairly straightforward. The source is some piece of media that only QuickTime registers for. And the QTSource is anything QuickTime can play. I'll just go ahead and show you that.

again here. This is not a QuickTime movie, it's an MP3 and we told it's QuickTime image file with the QT source as an MP3 so it's playing MP3 with QuickTime even though QuickTime is not necessarily the registered plug-in for MP3 but we can make it play anything because we got the browser to let us talk to QuickTime.

Okay, so that brings us up to MPEG-4, which you would use similar techniques for. MPEG-4 and QuickTime are close cousins. The MPEG-4 file specification is based on the QuickTime movie file specification, and that means they're really, really similar. But they're not actually the same. So if it's an MP4 file, QuickTime imports it and makes minor changes in it before it plays it. If it's a movie file, an MPEG-4 player is not going to be able to play it. And there's a lot of confusion around that because people think of MPEG-4 as being a video codec the AAC audio codec and say, well, if it's AAC audio, I can call it.mov or mp4. Not true. The files are similar but slightly different. So there are two important ways that you can use MPEG-4 in QuickTime. You can use MPEG-4 video or audio inside a QuickTime movie.

So we've got a QuickTime movie. It can show video compressed any one of a thousand ways. Well, MPEG-4 is one of those kinds of compression. It can do mp3 audio. It can do all sorts of compression techniques for audio, but AAC audio is one of them. So if you use this, if you use QuickTime MPEG-4 video or audio in QuickTime movies, you have the advantage of being able to use the MOV file format, so you can mix and match with other kinds of QuickTime media. If you want AAC audio over your QuickTime virtual reality, okay, use MPEG-4 audio in a QuickTime movie. The other way to use MPEG-4 in QuickTime is you can create, play and stream native MP4 files. This is really a cool way to go. It's interoperable with other ISO streams, files and players. You can use QuickTime to play MPEG-4 from other people's streamers or created by other applications or you can create MPEG-4 files in QuickTime and then play them in real or Windows media player with the correct plug-ins.

You can hint MPEG-4 files for streaming in QuickTime. You can author them and you can 4 file format. So it's really strong support for MPEG 4 and QuickTime more than any other file type we've ever seen. And again, you just use the QT source if you want to play an MPEG 4 file, just like you would an MP3. Yeah?

Okay. You want to call the MPEG-4 or the MP4? The question is, why are we using Qt source for the MP4 file? Well, because anybody can register for MP4. You could have 100 different players. So you might not want to. You might say, hey, source equals MP4. Anybody who can play on MP4, please play it. I don't need QuickTime. I'm not worried about that. And if you want to reach the broadest possible audience, that might be a way to go. But if you want to be sure that the MPEG-4 is going to play in QuickTime because you want more control over the web page and that's the plug-in you want to use, then say source equals something QuickTime will play, QT source equals the MP4. So this is a technique to play MP4 files in QuickTime or to force QuickTime player to be used to play the MP4 file. If you want to leave it up for grabs, that's also an entirely viable option. Thank you.

Yes. Okay. Here we're getting... The question is showing me that there's some confusion. An MOV file is not an MP4 file. You can't just change the file extension. If you open a movie in QuickTime and it has MPEG-4 audio and video, you can either save it as a QuickTime movie or you can export to MP4. And the audio and video will not be recompressed, but it will be saved in the MPEG-4 file format. If you just change MP4 to move and back and forth, bad things will happen because they're such close cousins that if you try to open an MPEG-4 file in QuickTime and you tell it it's an MOV file, it will do a superficial look and go, yeah, it looks like an MOV file to me. This is a movie, and it'll try to play it, and then it's not going to work right.

And if you name a QuickTime movie MP4, it might open in another MP4 player or even QuickTime, and it'll go, yeah, this looks like an MP4, but it isn't, and again, things will go wrong. So it's very important not to just swap the file extension, but to actually import and export. I see a question in the back.

I'm not sure I heard the question. Does it override browse mime types? Oh, in the embed tag, you can set the mime type. And I think the question is, does that override the mime type of the file? Not reliably. The server will tell the browser what the mime type is. The extension will be mapped to a table.

And you have the HTML. And all three could be saying different things. So what should the browser believe? What's in its own table? What the server is telling it? Or what you're telling it? It's really up to the author of the browser. and they have different opinions about that. So, again, using source, you can only use the QuickTime file type. Thank you.

You can't play MP4s in QuickTime using the source. If you use the source command to point to an MP4, it will go to whatever player is selected for MP4s. It might be QuickTime, it might not. If you use QTSource, it will use QuickTime to play MP4s or anything else. MPEG-4 audio and video can be in a movie or it can be in an MP4 file. You can export movies to MP4. To force an MP4 file to use QuickTime, use Source and QTSource. Just use Source, it's up for grabs. but they're not the same. More questions? I just want to make sure.

Okay, yeah. The question is, if you use QTSource, is it going to play in QuickTime even if something else is selected for MP4? Yes, because the source is what the browser looks at. The browser doesn't know anything about QTSource. It looks at that parameter and says, this is jibber-jabber to me. I know the source. The source is a QuickTime movie or a QuickTime image file, so I'm calling QuickTime. Then QuickTime says, ah, I know what a QuickTime source is. I'll play this MP4 file. So the browser has no idea that it's dealing with an MP4 file. It just knows about the source file. By the way, make the source file small because the browser is going to download it. So just use a little image. QuickTime image file is good for that or a small QuickTime movie, a couple of K. day. All right, and let me, I'm gonna show you an MPEG-4 file, just like the MP, actually, I'm gonna open this in Internet Explorer, because.

what happened to the audio there. Here we've got an MPEG-4 file playing in QuickTime in Internet Explorer. I'm believing Internet Explorer does not know--this version of Internet Explorer does not know what an MPEG-4 file is, let alone know that QuickTime should play it. But it's happy to do it because it said the source is a QuickTime image file, so the QT source can be anything, it just doesn't know. Now there's-- I'm sorry, can I hear that question again? Will it work if I leave the source empty? Okay, will this work if you leave source equals mp4? Empty. Empty. Oh, leave the source empty? If the source tag is empty, then the browser has no idea what you want to do.

QuickTime will only load if the browser is told to load a file that it can't play and that the QuickTime plugin is registered for. The file has to exist, and it has to be of a MIME type that only QuickTime is registered for. And if QuickTime is not installed, then you want to have the Plugins page tagged there. Now, there's a caveat for this. This is all somewhat less true in Internet Explorer for Windows, because the object tag says, I want the QuickTime plugin. If it's not there, go get it. And whatever gets played is up to the plugin. So it's less sensitive. When you use the object tag, you're saying, we're playing it in QuickTime. I don't care.

So, it's indifferent. But any other browser, any other operating system, you really need to use the source and QT source this way. But the key thing I'm trying to get across is that the movie and the MPEG-4 are a little different and you can't just change the file extension or expect it to work the same way. And, okay. So let's change subjects altogether and talk about streaming. Everybody ready for a change in topic? Okay. Not me, I'm sorry. I'm bothering you, but I'm not clear about your answer.

source and back four because I would have all the quick time. What I'm hearing is that. despite source it Okay. The question is, if I set the source, if I understand the question, if I set the source to a QuickTime movie, can't I then set the source to an MP4 file? Why do I have to use QTSource? Because you can't have two source parameters in the same tag. If the source is one thing, that's what it is. So the QTSource is your other source. Okay.

The source tag is for the browser, the QT source is for the plugin. All right, there's some great stuff happening in streaming. And streaming is a little different from the kind of movies we've been looking at here on our disk. It uses real-time protocols. The real difference between streaming and the movies we've been looking at is that streaming in these real-time protocols goes over the network in such a way that a one-minute movie is transmitted in one minute.

So if you've got a fast internet connection, it still takes a minute. If you've got a slow internet connection and it can't hold the data, it's coming over in a minute. So if it doesn't get through, it just doesn't get through. It just gets dropped on the floor. You can't buffer it up and watch it later. It's a real-time protocol. The good thing about that is you can carry live audio and video. Things are happening in real time, and there's no way to carry live audio and video except with streaming. You can't record it and play the recorded movie. It's happening now. Another good thing is if you record a movie and you stream it, you can start streaming from any point in the movie.

And that's really nice. You've got a two-hour movie. People want to skip around or you've got multiple lessons in a learning course. People want to go to lesson three or listen to that again. They don't have to download the whole movie to that point to watch it. They can just skip right to that point and start streaming from the middle of the movie. And it supports multicast.

Now, this is really a cool thing. If you have a movie and you've got a campus land, you've got 100 people watching the movie, you're sending out 100 copies of the movie over the network. And you've all seen what happens when 2,000 people fire up their laptops over the local airport network. It's pretty extreme.

But if you send one copy of a stream to a multicast address, everyone can turn their computer to that multicast address and watch the movie, and you're really only sending out one copy of the movie over the network, and everybody is looking. Because the network, remember, a packet network, everybody's, it's kind of like postcards, right? They go past everybody, but your computer only looks at the ones that are addressed at it. But if I say this is one that everybody can look at, then all your computers can look at it as it goes by on the bus or through the ether. You don't have to send multiple copies, so that's really nice. That doesn't work over the Internet, but it works great over campus lands and corporate lands. The bad things about streaming are it has to fit within the available bandwidth. If you've got a 28 kilobit per second movie playing on a 27 kilobit per second connection, it doesn't play.

You don't see anything, you don't hear anything. The other thing is that because it's a real-time protocol, typically lost data is not retransmitted. Over the Internet there's some loss. So you have little artifacts, video, audio dropouts, things don't show up. And third thing is it's limited to certain media types. Audio, video, text, and URL events. It sounds like a lot. Gee, audio, video. And it is a lot. But there's no flash. There's no VR. There are lots of things that you can't send. 3D models.

Fast start movies, on the other hand, are something that QuickTime, QuickTime is a world-class streaming client, but if you really just want to stream audio and video, whether you use Windows or Windows Media or Reel or QuickTime, there's tradeoffs. There's reasons why you might want to choose each one. But when it comes to Fast Start, QuickTime is the absolute champion. There's nothing else like it. It uses common web protocols. Data transfer time is the movie size divided by the bandwidth.

If you've got a one megabyte movie and you've got a one megabyte per second connection, one second transfer time. If you've got a 28 kilobit connection, obviously much longer, but it's going to get there. The good things about that is your quality is not limited by your available bandwidth. If you go to the QuickTime Movie trailer site, you see some really nice looking stuff. You can watch that over any kind of connection. You have to wait longer, but you can see it. You don't have that tradeoff where you say, "Well, most of my customers have this speed of connection, so I can only have this good a quality movie."

You can say, "No, quality comes first and people will wait as long as they have to wait." I'll have a smaller version for people with slower modems. The movie transfer is pristine. There's no data loss. If a packet gets dropped, it gets retransmitted. And unlimited media types, flash, VR, sprites, 3D, all kinds of interactivity. So that's really nice. Bad things about fast start movies are you can't play from the middle. You have to download the whole movie. If you want to play the last minute of the movie, and it's a two-hour movie, you've got to wait until the download gets to the last minute. No skipping around. And you can skip backwards, but not forward. You can't carry live events, obviously, and pre-recording. There's a perception that fast start movies are easier to copy because they're saying, oh, you're downloading a file as opposed to just playing a stream. There are reasons why that isn't really as true as it once was. There was a time when, yeah, you downloaded the file, but there are ways now you can download just the header, the information, and leave the source on your server. Also, there are ways that you can copy the stream from the audio and video buffers. They're about equally secure now if you follow the tips for protecting your movie. I don't really have time to go into that in this section, but it is covered in detail in the book, and there are some free tools that will separate. Have you been to some other QuickTime sessions? You understand that in QuickTime, the movie is the organizing principle. It's not the data.

A QuickTime movie says what to play, and when to play it, and how to play it. The data itself can be on another server, on a hard disk, on a floppy disk, on live streams, can be all over the world. The movie is just the explanation of what to do with it. So if you have the movie on the user's hard disk and the data on your server and a data reference that says, get the movie data from the server, that's what it's going to do. And if somebody copies the data from your server, the movie is still going to get it from your server. That data is just a rock. Any QuickTime engineer can put them together, but most of your customers presumably are not QuickTime engineers. So unless somebody builds a tool to assist them in copying it, it's pretty secure now.

So how do you play a stream? How do you put a stream in a web page? It's a little different. Because it uses the real-time RTSP protocol, its URL is going to start with RTSP. And if you just embed it in a web page, what's going to happen is, even if it's a.mov file, if it's RTSP, my server, my path, my.move, many times the browser will go, oh, RTSP, that means I better use real, or oh, that means I better use Windows Media Player, or that must mean I use Joe's Streamer. So what you do is you use source and QTSource. Ordinarily, with QTSource, QuickTime will tell the browser to get a file for it. It will use the facilities of the browser to do the download, even though the browser isn't displaying it. So you use QTSource, don't use browser. This is a tag which tells QuickTime not to use the browser to get the QuickTime source movie. And that way, the RTSP will not be redirected or misdirected. It says, QuickTime, use your own resources to get this. It's usually pretty good. I think current versions will do that automatically for RTSP. Have I got a QuickTime engineer in the audience? Not today. Okay, I'm on my own. I believe that's correct. So another choice is you can use a text movie to embed a stream. And you saw how that worked with the XML. That could be an RTSP URL, but there are a couple ways. A third way is to use a reference movie. If I open a stream in QuickTime Player and save as a self-contained movie, what am I saving? Well, it's a QuickTime movie that's basically a wrapper around a URL. And then I can embed that movie in a web page and it will open the stream when somebody clicks on it.

So let me kind of show you a couple ways to do a text movie. Let's see if this works. Go over here to the demo machine, and I will once again show you a text file, the thing up my sleeve. There we go. This is just an RTSP URL, and there are eight characters that precede that URL. RTSP, all uppercase, T-E-X-T, all lowercase. This is known as the text atom hack, and I won't go into all the reasons for that, but if you start a file with the characters RTSP, T-E-X-T, and then immediately follow it with an RTSP URL, you can treat that as a QuickTime movie, and QuickTime will open that URL. But what do you have to do to make that work? Well, you have to say, that it's a movie file, not a text file. So that instead of trying to display it, the browser will use-- or the operating system will use QuickTime to display it.

Yeah, this is using a text movie instead of a reference movie. Again, a reference movie is I open the streaming QuickTime player, I save it, I've created a QuickTime movie. And that's a perfectly good way to go. Why would you use this instead? Maybe you don't want to create QuickTime movies, maybe you just want to generate text files because it's a hassle. It saves you a step. Again, if you're using PHP or Pearl or something to generate these, you can generate these movies that are just--anything that can generate a text can generate one of these movies.

Hopefully. Yeah, again, I just opened a text file. As a movie, I'm playing it. QuickTime is doing the right thing. And after a little buffering, because we're coming from Down Under, I think-- --up there with a few of his buddies, like one giant lead, and Maxi Jazz, who-- Live from Australia. OK.

I'm sorry. Can you use chapters on a streaming movie like this? Can I use... I want to jump to another. Oh, yes. Can I use chapters? Well, the question is, can I use chapters in that kind of streaming movie? The answer is no, not exactly. To use chapters in a streaming movie, you really have to have a regular movie and a stream. Here's an example of a streaming movie. This is actually a webcast from Steve Jobs' keynote in 1999 at Macworld.

A really inspiring keynote that went on for two hours. So if you just wanted to know what he had to say about QuickTime at that point-- It would be really nice to be able to just jam down there and see it. And so you can skip around. QuickTime has become huge for us. We announced QuickTime 4. QuickTime 4. Okay. So here's an example of a two-hour movie, and how long did I have to wait to download the part I wanted? Use chapter lists with streaming movies that are long. They don't stream. Chapter lists do not stream. So what you have to do is you open the streaming movie up in QuickTime Player, then you add a chapter list. In QuickTime Pro, this is a text file. It's really easy to do. There's free tools. that will do it for you. Look around in the internet utilities on the web. There's all kinds of cool stuff. It's really easy to do and it really enhances the value, especially for distance learning of long streaming movies. But the question was, "Can you do that with an XML file?" And the answer is, "No." The RTSP hack is just to pass an RTSP URL. If you want to do more elaborate mixtures, you really have to use a reference movie.

The first eight characters are case sensitive. The question is what part of the RTSP hack is case sensitive? The first eight characters. The first four characters must be uppercase RTSP. The second four characters must be lowercase T-E-X-T. And what's happening is the QuickTime player is trying to open a QuickTime movie. It's looking for a movie atom. It says, well, I don't see a movie atom, but I see a text atom. Is the length of the text atom the character's RTSP? That's why we call it a hack.

You can also use XML the way I showed you earlier, and that's a far more structured way, and that works beautifully. And then you can tell it to play it in QuickTime Player and full screen, and you can pass all kinds of extra parameters, which is also very nice.

Oh, yeah, here it is. Here's the XML version. So instead of using the RTSP hack, say you can't remember whether to use up or lowercase and it's confusing, just use the XML. It stays the same. Top first two lines are always the same. It's an XML. It's a media link. Thank you.

And you give it the MOV file extension and embed it just like any QuickTime movie. And that gives you the advantage of being able to add some other things. Now, some of the extra plug-in features aren't going to work with the streaming movie, but most of them will. Question?

The question is, the gentleman saw earlier an XML file that you would drag and drop onto QuickTime Player that would turn into a movie file, and that was a media skin. Basically, QuickTime is moving towards XML. XML is the data format that's going to conquer the world. We thought it was MP3. We were wrong. It's XML. Basically, more and more as we go forward, you'll find that you can export anything from any format into XML and then import it into any compatible version. So what's happening here is this is a QuickTime time XML and we're saying the embed, we're giving it the embed tag. We're saying, "Okay, this is a QuickTime Media link, here's the source."

If instead of QuickTime Media link it had said QuickTime Media skin, we would give it some image files. QuickTime has all kinds of growing list of XML importers. So basically you will be able to pass all kinds of things as we go into the future to QuickTime as XML. And so the syntax will be very similar but the actual parameters will typically be a little different. For skin you'll want to give it an image file and a mask file, a drag region. For a movie, you'll just give it a URL.

Okay, embedding streamings in a web page, using a reference movie, I've pretty much talked about that. You open the stream, you save it as a self-contained movie, and it's just a wrapper for URL. It works great. The bonus is that you can then edit the movie to add things like the chapter list. And let me show you some other things you can add to streams. Again, I don't have time to go into the techniques, and I don't mean to cheat you that way, but I think it's worth seeing some things. Here's a... Yeah. This is a QuickTime movie. It's got a media skin. So it doesn't look like a QuickTime movie. It looks like its own application. And when we play it, We've got QuickTime VR here, so obviously this is, this gets the media types that don't stream. I can interact with it, I can drag it around, I can drive myself crazy with it, but I can also an audio. So here we've got a skinned player with a lot of things that are even more interesting arguably than This is one of those amazing Michael Schaaf productions that just blows your mind every time. But, Yeah, you can mix things with streams. So streaming is great, and non-streaming is great, and mixing them is really-- here's something a little bit-- you don't have to be-- something a little more understated.

Okay, the question is, how do you really do this? And the answer is, you open the streaming track in QuickTime Player and then save it as a self-contained movie. Now you've got a streaming movie. And then you can open that in QuickTime Player and edit it just as you would any other movie to add Flash, add sprites. It's just one more media type that you're mixing in. And this media type is a streaming track, which is just basically a wrapper around a URL. And here's Wilco. They've got really nice, high-quality MPEG-4 playing. and again you see your player doesn't have to be It doesn't have to be loud or abrasive. It can be just really attractive.

And there's some really nice ones coming out now. So it's a nice thing to do. And let me see if I can... Okay, that's for recorded streams, what I just told you. Live streams are a little different. And I will show you that now. Okay, pre-recorded stream, we just talked about that. When you add a media to a stream, you can either add it or you can add scaled. If you've used QuickTime Player Pro, it basically adds scale. It says take the duration of the thing I've selected and add. If I want to add a still image to a streaming audio, I add scale. So you select the whole streaming audio and add this image for the duration of the audio. For live streams, it's a little trickier.

I wonder if I have a live stream I can open here. I think I do. I'm going to try to show you this, but first I'm going to explain it just in case I can't show you. You're going to open the stream in QuickTime Player and save it, but now you've got a pointer to a live stream. A live stream doesn't have a known duration. QuickTime doesn't know how long it is or where you are in the stream. It's just the eternal now.

So you have to disable the streaming track in order to do any editing, because editing is time-based. And that's the trick. If you use QuickTime Player Pro, if you're using another tool, it may be very simple. Say, open this live stream and add this media, and it just works.

I think LiveStage just hides all that from you. If you're trying to do it in QuickTime Player Pro for $30, then you have to jump through some hoops. But basically, the thing is, you disable the streaming track, and that'll get your time slider back. Bring in your other media, add scaled to the whole duration and then re-enable your live track. I'll try to show you that now. This is where the demo gets off into some interesting areas.

Okay. Right. okay and let's go mixing OK, looks like we're getting a live stream here. Now as you can see, there's no time slider in the controls because we don't know what the story is with that. We don't know what time it is, how long it is. We can't skip backwards because it's live. We can't skip forward because it's live. But if I go into the movie, rather the edit, okay, let me do a command J, get information. Here's the movie, information, and it has one track, which is a streaming track. And that's all it has. It's in... Cue design two, it's classical music, it's lovely.

And what I'm going to do now is I'm going to disable that track. Go to the Enable Tracks menu and say, here, not longer enabled. Thank you. Now you see we have a time slider. Thank you. So now if I want to open -- okay, here's Web Radio Move. Here's something that looks like a radio. And I'll extract track from it. Yeah, the picture sounds good. Let's extract that. That's good. OK. Now I have an image. It has a duration of-- oh, it's really long. OK, cool. OK.

Copy that. I hit Command--let me do it so you can see. Copy. And I just--when you copy with nothing selected, it copies the image that you're seeing. Okay, I didn't need to save that. Go back here and now select all, edit. scaled. Okay, and now I believe I can re-enable the streaming track.

And now I have an image whose duration is more or less eternal right along. And so here I've basically added a picture to a live stream. It was a little tricky. I had to disable it and then re-enable it to get the slider. --teaming up with harpsichordist Gustav Leonhardt for-- But obviously, the principle here is pretty straightforward. If you have a live radio station, you want to have it playing with the image of your radio station or the song that's being played. You don't want to have it just playing in the player. You can mix live streams with non-streaming media. And the book goes into great detail about other ways to do that.

Is there a quick time call to swap pics? There is a live sprite actions that you can use to swap things. You can have it as part of the movie. Yes, there are ways to make the image change with what's being broadcast. Let's see, do I have a player that does that? OK.

Okay, now, I think we've kind of gone over why you would stream versus fast start, embedding streams in a web page, using source and QT source, text movies, reference movies, pre-recorded and live streams. Any questions about what we just dealt with? All right, we're on the same page. This is going good. Amen.

We have three and a half minutes. All right. Just real quick. If I have a live stream going like that and I want to put indexes for scene change with the question he asked about changing the picture, your standard, like, change the album art for the thing, but you want to do a live stream, like, off a radio station, not a sequence of concatenated MP3 files, how would you approach that? What I would do is I would get Channel Storm, which is an application that does just that. It's a live studio in software. And QuickTime supports this, but you can't do it easily from QuickTime Broadcaster. You need a little bit more sophisticated application that can say send an event stream, mix this current. Basically, you're sending live. What you're doing is you're streaming video as well as audio. It's just that your video has a very low bandwidth. with. Got it. That's the short answer. And you could also send text with URLs if you wanted to load up a web page at that point.

Yes? For streaming tracks, for a streaming movie, can you stream href tracks? Can you add, excuse me? href tracks. href tracks. Yes, href tracks stream, actually. So you can add an href track to a streaming movie, or you can stream the href track. And an href track, for those of you who don't know, is a text track which consists of a series of URLs, but it's a QuickTime text track, so these URLs arrive at a certain time. And basically it says, when I get to this point in the movie, load this URL. And let me show you that over here. There's a little demo of it. Something like that. This is worth seeing. It's kind of cute. I'll just show her how it works. Doesn't look promising. Let's try this one.

Welcome to the audio tour. This is an example of a talking web tour. It combines an audio track and an href track. The href track loads HTML pages into the top frame, synchronized to the narration. The tour is controlled by the audio movie playing in the frame at the bottom of the page. You can pause the audio movie at any time to explore links in the upper frame. Okay, so this is live HTML, and it's being driven by an href track in a movie, which is unexpected. I think we have a bug to report to Apache. Maybe I'll open this in Exploder.

Now here's a tricky thing that browsers sometimes do. It's actually downloading the movie from the hard disk to a cache on the hard disk. That's another reason why you might sometimes want to use QTSource, don't use browser. If you're distributing large movies on a CD and you find that you just try to open the movie, the browser thinks that the movie is coming from the web because it's not really very intelligent sometimes. So it's trying to load this high bandwidth movie from the disk, Put it into a disk cache, play it out of the disk cache, basically doing three times the work it needs to do, and if it's a high bandwidth movie, it can choke or take a very long time. So if you use QT source, don't use browser, that avoids that. Bring the sound back up.

So this is as this movie plays along. The sample content for chapter three, Bust a Move. So that's just to show you a little bit of some of the power of a HREF track. Other questions? Are these examples on the website? Some of them are on the website. They are all on the CD that comes with the book. And I'm putting more of them on the website all the time.

The new edition, the third edition with QuickTime 6.1 now and 6.3 in a couple weeks, we're revving the CD as we go along and we'll be posting updates on the web. You can order it now from the Morgan Kaufman booth here at the show. They'll give you 20% off and free shipping. I think it's expected next week or in a couple weeks.

Two weeks. Okay. Real soon now. Male #2: Similar to the last thing that you showed, are you able in the skins to embed like HTML web functionality, kind of like a little mini browser, if you will, inside of the skin that interacts with the movie? Kind of the way this movie interacted with the page? Yes. The short answer is yes. And we're out of time. Thank you very much.