QuickTime • 1:09:08
With QuickTime Streaming Server and QuickTime Broadcaster, Apple provides a free suite of world-class tools that makes delivering your MPEG-4 or QuickTime media easier than ever. This session guides you through setting up both a live and prerecorded streaming solution. If it's distance learning for your school, a live CEO speech on the company network, or a new product video on your website, you will learn the oft-requested tips and tricks to make your streams shine.
Speakers: Stephen Tonna, Victor Alexander
Unlisted on Apple Developer site
Transcript
This transcript was generated using Whisper, it has known transcription errors. We are working on an improved version.
Good afternoon, everybody. I would like to introduce you to session 704, Introduction to QuickTime Streaming Server. At this time, I'd like to introduce our speaker, Victor Alexander, who will take you through the world of real-time streaming with QuickTime. Victor comes from the software engineering team at Apple, and he formerly worked for the Apple technical training team where he wrote a course on QuickTime streaming. So you will all be in good hands with Victor. Take it away.
As Stephen said, I'd worked previously moving to software engineering. I'd worked on a course called QuickTime Streaming, obviously related to this topic. This is a copy of it. I'll make it available for your review after the session's over. So if you want to take a quick look at it, just make sure it ends up back in my hands after we're all done.
Welcome to Introduction to QuickTime Streaming. Hopefully you're in the right section. If you haven't wandered down the hall and got disoriented, you were looking for the MPEG-4 section next door and wandered in here. We're going to cover some real-world steps for QTSS. So hopefully I'll give you some skills today that will allow you to go back to your home office environment and actually use QTSS and QuickTime Broadcaster and have some fun with it.
Whether you realize it or not, streaming actually is a huge portion of the traffic that actually moves across the internet. Right now, we're actually partaking in a stream. You just don't know it right now. What will happen is the videotape that they're actually taking of this particular session will be taken back and captured and actually compressed and actually put up on the developer website at Apple. They'll also produce a DVD of it.
And those sessions will be streamed out to participants who participate in the developer connection organization. Stephen Tonna, Victor Alexander So what we're doing right now is actually we're actually doing a video on demand stream. It's just not going to show up for a few weeks. So quick show of hands, how many folks have had any exposure to QuickTime Streaming Server in any fashion? Hands up.
Okay, okay. How many folks are very experienced at QuickTime Streaming? Good, good, because I was going to send you to another session. Excellent. So what I want you to do, since this is eventually going to be a stream somewhere on the Apple site, somewhere for some developer session, someone to watch and review and get information from, I want you to say hello to them, because, of course, you know, they'll get some joy and probably a good giggle out of it.
So on the count of three, I want you to say, Hi, ADC, right, Apple Developer Connection. So on the count of three, say, Hi, ADC. And when they watch this stream a few weeks later, they'll get a good kick out of it. All right, ready? One, two, three. Hi, ADC. Excellent. You just participated in a video-on-demand stream. Congratulations.
That concludes my session. Okay, all right, all right, okay. I'm just kidding. So let's move on to the actual real content. Stephen Tonna, thank you for introducing me. Again, my name is Victor Alexander. My extremely long title, Mac OS X Server Software Seed Engineer, is my current position at Apple, very enjoyable. I work with the server as a whole, but I have a particular love for QuickTime Streaming Server and Broadcaster, as you'll hopefully see in the next 60-odd minutes.
Here's a high-level introduction of what we're going to cover. I'll give you a bit of background on the topic of real-time streaming very briefly, just to give you a basement level of knowledge. We'll do some setup and configuration of the actual streaming server, which I hope you'll find useful. I'm going to focus on QuickTime Streaming Server and QuickTime Broadcaster specifically. Those aren't the only tools that are available, especially for QuickTime Broadcaster. So just be aware that I happen to be demoing these tools, but the basic concept that I'm demonstrating actually apply to other tools.
For example, QuickTime Broadcaster is not the only piece of software in that space, so I'd encourage you to check out what other offerings there are after this session's over. I'll cover where possible some new features of QuickTime Streaming Server 5, which is actually included with Panther Server. And I'll try to provide you with as many real-world examples as I can.
A little more detail. So let's see what you'll learn. Again, we'll do an introduction to QTSS 5 and QTB. I'll do the initial setup for the streaming server and walk you through the settings, especially since there's some new tools there to be seen. I'll show you how to prepare media specifically for streaming. We'll work with playlists. We'll create some playlists. We'll show you how those function, how they behave. We'll do a little bit of live streaming where you're going to be my talent, so to speak. And we'll talk a little bit about the QuickTime Streaming server publisher.
Now, we should have enough time for some question and answer, where folks can just walk up to the mic and ask me some questions on things I may or may not have covered. Okay? Sounds good. Let's go at it. So what is real-time streaming? I'm just going to try and give you a basic run-through of what it is so that we can start from ground level.
After all my talking for 60 minutes and everything I'm going to say in the next little while, what I really want you to remember from this particular slide is that all we're doing in real-time streaming is we're moving media from the server to the client over a network in real time. There's some time sensitivity that's involved in that process, but really that's all we're doing. We're pushing the media files from the server to the client over a network in real time.
We're going to use some network protocols. In that process, we're going to use some industry standards. We're going to use RTP, which is Real Time Transport Protocol, and RTSP. They're brother and sister protocols that work together to get that video information off of the server down to your machine, where you're watching your favorite rock concert or your favorite teacher run through their session in psychology, whatever it is, so you can watch your information. Those protocols work hand-in-hand to deliver the information. I'll reference RTP and RTSP a couple of times during the session. So I just wanted to get those acronyms out there and just say that they're the foundational protocols for streaming.
Well, the nice things in terms of the folks who are delivering the information is that there's no file that's actually written to the client's machine during the streaming process. Now, that's important. If you have gone to all the trouble to film a music video or whatever particular piece of event it is, and you've done all the editing and all the compression, all that work in advance, and you want to get the word out to everybody, but you don't want to necessarily leave them with a copy of those files on their computer. You want to maintain the control of that media. This particular aspect of real-time streaming is important.
So no file gets left on the client's machine. All they're left with is they get to watch, say, a concert, or watch a class or a session, whatever they're viewing. And all they're left with is the good memories from that event. No files are on their hard drive.
There's three ways to present content in terms of the streaming server. I won't talk about in this session the traditional way or the slightly older mechanism or what's been around for longer, the way of delivering QuickTime files by simply copying them to a web server, which is what you typically see on the Apple Trailer site. Folks have seen the Apple Trailer site with movies? Yes, nodding heads, good. That's just simply copying a file to a web server. That's not typically real-time streaming, although people generically call it streaming. I'm really talking about using a streaming server and sending this information on the fly.
So the three mechanisms that you can use streaming server for are you can use a simple video on demand. A client asks for a video, and the server delivers it. And the person watches the content, and it stops, and you're done. In fact, that's how these sessions will likely be delivered once they go online, is a video on demand or a VOD setup. The second is a simulated live, more commonly called playlists. And what you can liken it to is a radio broadcast on the internet.
So you've used various different players likely to listen to music online. This is a similar approach to that. It's very similar to what traditional radio is if you turn on your radio in your car. You just drop in and listen to whatever portion of the stream is happening. The third and probably the most exciting and what typically draws people to streaming is live streams.
So you can do a live presentation where the information is routed onto the internet, and people can watch as it happens. How many folks have either watched or been to a keynote from Apple? Of course, right? Lots of you. So that technique is getting-- getting to be extremely common, and not just from Apple. Other folks are doing them quite successfully outside of Apple.
So remember the basic model that I mentioned as the first item of the previous slide, right? You've got a server, you've got a network, and you've got a client, right? Anything missing? We've got our media, right? So your media files have to sit on the server and they get delivered to the client. So that's the basic model I want you to keep in mind. Very, very simple.
Now, let's talk a little bit about the streaming server itself. I'll give you some background on the actual product before we demo it. It's based completely on open standards. I mentioned RTP and RTSP. Those standards are ratified by the IETF, an international organization which exactly does that. It ratifies open standards.
So the streaming server, wherever possible, adheres to those standards. Why do you think they might do that? If other tools want to be developed by other companies that interact or interoperate with the QuickTime Streaming Server, all they have to do is read those same standards and develop the application adhering to those same standards. Very, very useful.
A single server can handle literally thousands of streams. Thousands of streams. So it's very, very impressive. That's one way how we do streams that are so large. So we can do tens of thousands of streams watching a live keynote at Macworld, for example, or WWDC. We have several servers working in unison that can handle these. But each one itself can handle 2,000 or 3,000 streams without a problem.
QuickTime Streaming Server in its last major revision offered support for MPEG-4. It continues, obviously, to offer support for MPEG-4. So if you're creating MPEG-4 files for those folks who do the compression authoring side of it, you can use your MPEG-4 files on QTSS without a problem. We'll actually show that as well today. The Streaming Server also provides a nice feature called Instant On.
If you've used streaming for more than a year or two, you're probably used to the sequence where you go to a web page and you click on an event, and usually the QuickTime player or your player launches. Then you wait a few seconds while the broadcast actually queues up, right? It buffers. So you wait your six or eight or 12 seconds while it buffers. Instant on, for folks who are on broadband connections, so DSL, cable, office connections, high-speed optical connections, will actually have that buffering time reduced to virtually zero.
So it actually feels like, to the viewers, that they're playing a file off their local machine, right? It's actually not. It's being streamed, but it looks and feels that way. You can scrub through the file, you can start playing it from virtually any point, and it feels instant. It really is instant.
The Streaming Server comes with a remote-based web administration tool. I'll show that to you as well. It's really similar in terms of its design to Apache. So for folks who have used Apache in terms of administering it, or maybe you develop components for Apache, you'll see that the design methodology for Apache is very similar to QCSS.
And one bit of clarification to clear up, how many folks have heard of Darwin Streaming Server? Okay, so enough of you to make it worth mentioning it. QuickTime Streaming Server and Darwin Streaming Server are twin brothers. The only difference is the name. Feature-wise, they're virtually equivalent for the core server features. The difference is that Darwin Streaming Server is available for platforms other than Mac OS X Server. So if you see the list at the bottom of the slide, Darwin Streaming Server is available for Mac OS X.
Linux, Solaris, Windows NT, and 2000. That's an extensive list. So you can literally run Streaming Server on a variety of different platforms. Now, I always get someone in the very back that puts their hands up and says, you know, I have FreeBSD or some other version of Unix, for example, and I want to run Darwin Streaming Server. Can I do it? Of course.
The open source, the actual programming code is available from Apple to download. And of course, you can take that code and compile it on your particular server class workstation, compile it, and you can run Darwin Streaming Server. It may or may not require a couple of subtle tweaks, but you can get it working and running on your particular platform. I think we've offered a decent list of platforms to start with in terms of downloads for ready-to-go binaries. Right? So essentially, when I say QTSS and Darwin Streaming Server, really they're the same product. There's a differentiation there that I think I've clarified pretty well.
There's a brand new application that's bundled with the Panther Server. It's called Server Admin. It's brand new in terms of its look and some of the extra features it includes. It also includes administration abilities for QuickTime Streaming Server, which is actually new. So, we'll take a look at Server Admin and see what you can do. You can monitor and admin the server from that tool.
Very, very useful. You can configure things like IP binding, if you happen to know what that is. Some of the relaying that the server can do. You can also check the number of users and the amount of data that's going through the server at any one moment with these very, very beautifully rendered graphs.
Also, you can do remote administration. So, you can have a copy of Server Admin running on one machine back in your office while you're eating your donuts. And of course, you can control your streaming server, which is in the closet, maybe in a rack, for example, and monitor it, see what's going on, and configure it and work with it.
So let's take a look at the Streaming Server. We'll do an initial setup and run-through. So on computer 2 here, You'll notice a couple of new icons on the dock of note is the one I've got highlighted, which is Server Admin. Of course, you can use it for lots of different configuration items, but what we really care about is, in this session, is QuickTime Streaming Server.
I'm connected to the machine that's actually I'm in front of right now, so I'm doing local administration. And the machine's called QTSS Intro. I simply turn down the arrow on the left-hand side, and it denotes all the available services that I can possibly run. The services that are actually active, that are turned on, that are ready to receive calls are actually in bold. So currently only open directory is bold or running. If we click on QuickTime Streaming on the left, we get a 10,000-foot view of what's going on with the server.
We can see that it's currently stopped. It's current throughput, it's number of users connected, and a little bit of a status here. It simply takes going to the Start Service button at the top center of the window to turn the server on. And that's it. That activates your service, your server, excuse me, you get an update at the bottom of what it was turned on.
Now we can move through the bottom buttons along the lower area here. And I'll just step through them one by one just to clarify what's going on. We've got the ability on the server to log what's happening. So you can see logs and events. This happens to help greatly with troubleshooting.
If there's an issue with your server, you can see what the last few events are. Not only do you get the error log as shown here, but the access log. So who has connected to your server and asked for streams? You can see I have a few streams that have been requested before the session started.
What you'll take note of in the access log is that roughly about 40 parameters are recorded when clients connect and actually watch a stream. So a massive amount of data is recorded. I mean, it's just textual, but a massive amount of useful data is recorded. If someone watches a stream and then disconnects, the access log is actually updated when the client disconnects. So keep that in mind for troubleshooting or for any kind of investigation of the log. If you want to see someone who's currently connected, you won't see an entry here until they disconnect. They close the window, and the session ends. And so 40 parameters.
I'll switch to the connections tab, very, very useful tab. If I can remember, I'll try and jump back here while we're actually doing some test streams. This gives you a list of users that are connected to your streaming server and some stats about their current stream they're watching. The type of stream, it can be an MPEG-4 movie stream or an MP3 stream, since the server supports MP3 streaming as well. Their IP address, their bit rate, how many bytes they've been sent, and most importantly, the percentage of packets they've received.
So if they didn't get all of the actual stream, you can see how much degradation in the actual video quality. You can also check out what they're connected to in terms of content. So you can see what actual movie or stream or et cetera that they're actually linked up to.
Here's the beautiful graphs I alluded to. You get to see, you can check in this case on how many users have connected. I hope your streaming servers are a little busier than mine in particular is here. I hope you have more than two people connected at once, but we did a quick test to get the graphs pop up and we got two connected, but 1.5 or two users connected on average.
We also get to switch to throughput. You can see exactly how much data, information, how much content's flowing out of the server. I typically would monitor this for myself for a real event during peak times for only brief moments. It's usually just to check in to make sure my server is not struggling with an overloaded amount of people trying to watch the content. So I usually want to make sure that I'm not hitting any limits in terms of what the server can do. So for example, 500 streams running off the server and the actual video is fairly skinny, slim piece of video, that's not a problem for the streaming server.
You notice you can slide the duration so you can see exactly from one hour all the way up to seven days of the graph. You'll notice I did a test about an hour ago to make sure everything was running. And finally, I move to the Settings tab. Notice when I click Settings, I get a number of buttons up across the top of the interface. This is really the meat and potatoes of the configuration of the server.
The media directory denotes exactly where the server is going to look for movies, files, and content. So you want to select a folder where your actual files are going to be, right? The default's not a bad location, but you may want to move this to an alternate drive. Let's say you have a huge amount of movies you want to provide via your streaming server.
You want to reroute it to another hard drive. You can do that via two mechanisms. It depends which kind of a system administrator you might be. The GUI way would be to click the button to the right and get a column view, which you can simply scroll through and select the correct folder. You can obviously reroute it to another hard drive.
If terminal is your best friend, you can maybe take another approach of typing the information directly into this file path area, where you can-- Where you can do something like the following, where you can type in volumes, which actually starts you at the very, very top level of the operating system above the hard drives, then type in the drive name, then type in the subfolders.
So in that way, you can actually scale your way over to other hard drives that are connected. I like the default, so I will select QuickTime Streaming and Movies. I'll choose that. Briefly, the maximum number of connections and maximum throughput, just to note the ceiling the server will allow for connected users and the amount of data that's leaving.
You should set these options that are as appropriate to your internet connection. I can't really tell you the perfect answer for your particular installation, but if you have a corporate installation of, say, DSL, I would probably say that 100 megabits isn't probably the right fit if you're sending movies from the streaming server out beyond your office.
You might want to tune that down to one megabit or two or three megabits as appropriate for your internet connection. If you're streaming inside of your office or inside of your school or inside of your campus, for example, where you've got Ethernet everywhere, then 100 megabits for the maximum throughput is probably a suitable level.
The check mark on the bottom actually is a feature of Server Admin. The question was, what's the check mark? The check mark on the bottom actually will allow you to copy settings that you've denoted in this particular option we've selected, which is QuickTime Streaming Server. You can drag them to other servers you're administering, and it will copy those options across. You can also save them out, I believe, and apply them to other servers. I don't want to take any other sessions thunder away, but if you want to check that out, I'm sure there's a streaming server overview that will cover that.
Quickly for access, this is where you can set things like an MP3 broadcast password. So you can actually have a piece of software that can send MP3 streams to your streaming server and actually send those streams out to the internet. It's best to set a password for that, so you can enter that there. If you want to accept incoming broadcasts, you can do that here as well. We'll be doing that later with a live stream. So we'll take a look at that in more detail. We can also enable the web-based administration, which actually I'm going to go ahead and do.
Web-based administration literally lets us use any web browser that can see our server to administer the streaming server machine. So I'll turn this on, and we'll check back on that in a moment or two. I'll skip past the IP bindings and relays. It's a little bit more of an advanced session. If you want to get insight on more advanced topics like these two tabs, I'll refer to the advanced session that's coming up, I believe, tomorrow. I'll point it out at the end of the session.
For logging, I'll point out one more thing with respect to logging on this tab. I highly recommend actually you turn on logging for both error and access logs and have them roll themselves over periodically. You only probably learn that lesson well after 5,000 people show up and watch your stream.
So I would recommend turning those two on, have them archive, say, every seven days or every month, and just make sure that they're actually archiving. It really leaves you a good breadcrumb trail that you can refer to to see what happened with your server in case there was a problem or anything. issue.
So a lot of talking, a lot of showing, but basically I turn the server on. If I literally just click Start Service, my server would be running. So how do I know it's running? The server admin says it's running, but how do I know it's running? If I can switch to computer 3, there's a simple test that you can do to make sure your streaming server is running.
And basically, when you install QuickTime Streaming Server or you install Mac OS X Server at large, you get some sample files included in the movies folder. You may have seen them for a moment when I reselected my media folder in Server Admin. There's some sample files that we provide you that we know work properly. So you don't have to go and find your own content and prepare it and work on it in order for your streaming server to actually be testable. I can simply launch QuickTime Player on my client machine.
And normally you would get to a stream via a web page. That's traditionally how you ultimately want to announce your streams. I'm not going to talk about that at all because there's a great session coming up this week called QuickTime for the Web with Stephen Gould. You may know the book by the same name. He's going to extensively cover that topic. I'm simply going to just use a great trick for system administrators and folks wanting to test the server.
to just get directly at the stream and make sure that my stream server is working. So I'm going to select URL in New Player. This gives me the opportunity to type in an address to ask the server for a test file. Now, it's not going to be HTTP, right? Because remember those protocols we were talking about the server using? We're going to use RTSP.
We're going to use one of the twin protocols that makes streaming possible. So I'm going to enter in RTSP, the address of my server, in this case an IP address, and the sample files are literally called sample underscore 300kbit.move, 100kbit.move, and there's the equivalent MPEG-4 files. So I can request this by simply clicking OK, and if all goes well, my stream will appear.
So if I wasn't quite as long-winded, I could set the server up and test it in less than two minutes. So we've got a running stream. This is just a loop of the QuickTime. It will run for about a minute to make sure your stream is running. Now I want to point out a couple things about this particular movie, in that it's slightly different from typical movies you play off your hard drive.
I'm going to show movie information and just point out a couple of details here. Typically, when you play a movie, and Paul Z. Typically when you play a movie from your hard drive, the source in the information panel on the right typically says, you know, the path to the file on your hard drive. Well, we're not doing that. We're streaming, right? So it makes sense to provide the RTSP location.
So if you're never sure where your stream's coming from or if you're really looking at the correct file or not, you can refer to the information panel. It will tell you exactly where that file's coming from, both server and the actual file name. The other bits of information in the Info Panel are helpful, but I'll point out the bottom two specifically. Let me back this file up and replay it.
The bit rate and quality items at the very bottom of the movie info pane are extremely useful for administrators. Extremely useful for administrators. The bit rate denotes exactly how much information is flowing to your client at any one moment. So for example, this particular movie. is roughly around 500 kilobits. It's doing some work to actually queue up more than just a few seconds of it. It's roughly around 500 kilobits or so.
But notice the quality. The quality says 100%. That's what you always want to try and get. If all your clients can get 100% in that quality setting, that means that they're not losing any of the details of the stream. If the quality is set, for example, 85%, that means that 15% of the stream that's coming down to them is either not arriving, or it's not being dealt with, or it's being discarded for some reason, and it's being lost. That results in pieces of the video being missing, or the audio dropping out, or the audio garbling itself.
So if you're running into problems and you're trying to do some troubleshooting, I would investigate the quality and bit rate panels to see if you're getting what you expect, especially the 100% quality. That's very useful. But I was able to test the server without producing any files. I just simply go and ask for one of the samples. Very, very, very easy. Let's switch back to slides.
So I've turned the server on. I've checked out the options. Server admin is kind of cool. I like it. I think I'll use it. We'll check out the web admin a little bit later. I got to test my sample file. But how do I make my own movies? How do I do that? Stephen Tonna, Victor Alexander Well, hopefully you have a crack staff of videographers and filmographers and you go out and shoot everything you want and then they come back and they can compress it for you and prepare all the media for you and everything.
What I'll really focus on is once you have files that are already edited in, say, something like Final Cut, and they're really in their final state, what do you do from there to take them onto the streaming server? Stephen Tonna, Victor Alexander So if you want to check out on how to prepare video content and compress it, there's a session at 5 o'clock today.
I believe it's called Pre-Processing Techniques, which will take you through that authoring process. Stephen Tonna, Victor Alexander Previous to this step. But once you have a file that's been prepared, it's ready to go, it's compressed, it's, say, a 50 megabyte file, it's a 20-minute promotional video, there is one step you need to do.
It's called hinting. It's not very difficult, but it's a required step you have to do. QuickTime and MPEG-4 require the hinting process. Notice I say MP3 does not require it. So if you're working with QuickTime or MP4 files, you have to do this hinting process. Media must be processed before real-time delivery. It absolutely has to be.
The actual step that's performed is QuickTime movies, MPEG-4 movies are made up of tracks. The hinting process simply adds a couple more of these tracks called, funny enough, hint tracks that help the server understand how it's to cut up the movie to send it over the network. It can't just take the entire movie in one foul swoop and send it across as one big blob.
It needs to cut it up. Those hint tracks give the server a hint, hence the name, of how to cut that media up into smaller bits so they can send it out broken up, and on the other end, the client can play it back. Again, not difficult, but it's absolutely required.
The process really involves using some sort of authoring tool. The easiest and most inexpensive one typically is QuickTime Pro. That's a version of QuickTime. You already have QuickTime typically installed in your machine if you're running any recent versions in the last few years of the Mac OS. Obviously, Mac OS X comes with either QuickTime 5 or QuickTime 6.
All you simply have to do is purchase a key, a serial number for $29.95. That turns on a number of key features in QuickTime Pro, one of which that we care about is an export option that appears in the Pro version of the player. That lets you export media for compression, but we also can do hinting. So it's really just an export on the files that have already been edited in Final Cut Pro, for example.
Other tools offer this hinting process. For example, folks have heard of Cleaner, Media Cleaner, previously named, that also does hinting. A number of other video tools tend to do hinting as part of their process. A key thing to remember with hinting is it should be the very last thing that you do.
If you edited all your video and crunched it down to a small file, and then you hint it, and then you make some other change to the video, that's not going to work. You have to go and re-hint the video. So it should be the very, very, very last thing you do before you send the file up to the streaming server. Here's an example of the MPEG-4 pane for exporting. I'll walk you through that right now. So I'll switch to computer two. Hi, I'm a high server admin here. Let's go take a look at some of our content.
Let's take a brief look at this particular video. It's an MPEG-4 compressed video. I, of course, have a crack team of filmographers who go out and film Red Hot Chili Peppers for me and bring it all back and edit it and compress it for me. I've got this video I want to put on the streaming server.
It's an MPEG-4 file, totally supported by the server. It's a fairly large file, but it's perfectly suitable for streaming. I'll point out one thing before I do the actual streaming process. I'll go to Movie Properties. This is a pane that you get in both the regular version of QuickTime, but you get an enhanced version in the pro version of QuickTime that's $29.95. Let's take a look at this pop-up item right here. This shows us exactly what tracks are available inside of the movie. Notice there's a soundtrack video track and then two MPEG-4 tracks at the bottom.
You'll notice in the center I've got a hinted video track and a hinted soundtrack, right? So I've already hinted this file previously. I'm going to remove it and just redo the process to show it to you. This is what a file looks like when it's already been hinted.
It's already been hinted. A soundtrack, a video track, it's got hints for each one of those tracks, and it's got some required tracks for MPEG-4 compliance. I'm going to go and delete some tracks. This is a feature of QuickTime Pro. I'm going to remove them. I now have what would be a stock video file that I would work on. So to hint a movie, it's very, very simple. File menu and select Export.
I'm going to select the option in the bottom left-hand corner that says "Movie to MPEG-4." I don't want to change anything about this file. I don't want to do any other kind of compression, audio, any kind of work at all. I just want to add those extra tracks.
If I click Options-- I get a very, very probably well-known by at least some of you MPEG-4 export panel. If you've done any kind of MPEG-4 file creation, you're probably very familiar with this panel. It's got five major elements. The general-- since I don't want to actually edit this video or do any kind of other changes except add those required hint tracks, I'm going to select pass-through for the video and audio. That means just take the data in the original file and just shift it over to the brand new one. Don't do anything else to it. Just shuttle it over.
You'll notice if I go to the video tabs and the audio tabs, pass-through is selected. All the regular elements you might select if you're trying to compress a video are grayed out. The tab we really care about is the streaming tab. And of course, for hinting type, I already have streaming basics selected.
If I didn't want to hint this, I would select none. But of course, we do want to hint this. The two options below, which are maximum packet size and maximum duration, are great options. If you happen to know what they mean, great. But in 99.9% of the cases that I've run into and I've compressed and hinted a lot of media, I've never ever changed those settings.
So I probably wouldn't tweak those settings unless you either know exactly what they mean, or you have a case to do so. Like I said, 99% of the videos I run into never require this to be modified. I can click OK, pick a location for the file to be sent to, and simply clicking Save will hint the file and export it.
I've been watching a lot of cooking shows on the Food Network, so I like to do things like the cooking show. So I've already prepared a number of videos that are pre-inted. So let's take a look at some of those. We've got-- let's go and open the Red Hot Chili Peppers. Just to reiterate, now we've got-- what will be added is an MPEG-4 hinted video track and an MPEG-4 hinted soundtrack will be added during that export process. We'll end up with six tracks, in this case, total.
So does it work? Let's take a look. If we want to actually add media to our streaming server, we need to put those files in the location that we saw earlier. Remember, library, QuickTime Streaming movies. So let's copy a file into that location and give it a try. So I'm going to switch to column view. I'll go into library. QuickTime Streaming and Movies, right? There's our samples we saw earlier. Let's take our-- and Chili Pepper will copy over there. If I could switch to computer three. Now let's see if my hinting process worked.
So again, normally we get this file via web page. I'm just going to do it the somewhat manual way of just asking for a URL. And we'll type in the actual name. You can type. My attempt to change the man's name. Let's take a look and see. Oh, did I mistype? Of course I did. Yes, thank you.
It worked. Perfect. Hinting. Very, very simple. Oh, do I get a mini applause for that? Maybe. The hinting process is very, very simple. If you're not the one actually doing any kind of compression work or editing on the video, and your job is simply to actually add files to the streaming server, the hinting process is very, very easy. It's one tab, select the option, and export it. The export time for this particular file, by the way, is roughly about a minute to a minute and 20 seconds. And that's on moderate towers. That's not even the latest and greatest.
I'll bring up another InfoPanel to show off another feature here, especially since we've got a longer clip. I'll bring up the movie properties again that I just showed you the track listing. You'll notice when a file's being streamed out to someone's machine, they're a viewer watching it from their computer, you notice that the track listing that I'm showing you is extremely short. All it says is streaming track.
Well, the video and audio that's sent down to the viewer actually just gets congealed in terms of how they see it as just one streaming track, but there's actually some great information inside this properties panel that can be discovered. If I select streaming track here and then go and dig for further information in the right-hand pop-up, I can select information like frame rate to see how quickly the video's playing back. The original source for this particular video is 24 frames a second, so it looks like I'm getting full speed playback, but even better is the bit rate.
So if you select streaming track on the client machine while the video is playing and bitrate from the right-hand pop-up, we get a great little status. Have folks seen this? Raise your hand if you've seen this little info bar before. Okay, not too many. So great. So this is new for some folks. So you've got data rate information about how much information is flowing down to the viewer. More importantly, you've got some information about packet loss, so data that's not making it to the client, which is definitely a bad thing.
And we've got something at the bottom called buffer size, which I'll briefly explain in a moment. If you're trying to determine whether your videos are playing back properly on the other end of the spectrum on your client machine, for example, you can get your viewers to inspect their packet loss window just in the same way I did. Red in the packet loss window will denote that there's information that's being thrown away, and that's definitely bad.
In the case of lost information, you'll see blocks of gray that just simply don't represent any part of the video at all because the data was lost. Real-time streaming is extremely time sensitive, so that information is being pushed down as it's being played back, so there's really no time to resend information. You just have to keep on moving.
The buffering size at the bottom of that window, QuickTime will actually work to try and ask for more information of the video and audio before it has to play it back. So it will try and pre-download some of that content in advance. The nice thing about this is that will try and help your viewing client surf through some of the unpredictable aspects of the internet.
So if the client machine is able to queue up about five seconds of content before it actually has to play it, if there's a dropout in speed, then the video will continue to play appropriately. So you might want to get your clients to inspect their buffer size if there is a problem. Great, my video worked. Excellent. Let's go back to slides.
We turned on the server, we looked at server admin, we tested a sample file, we hinted a file, we added it to the server, we played it, and we watched it. So we completed really the video on demand aspect of it. Remember there's three ways to present your media. Video on demand, I'd say we probably have demonstrated that pretty well. Next up is the simulated live or playlists. A key test that allows you to create a preset list of media to deliver to an audience.
Let's say you want, you have a set of lectures that you want, a semester's worth of lectures from a teacher. There's ten of them and you want them to play in a certain order, right, from the first portion of the semester to the last portion. And you just want them to loop over and over again so that students on campus can tune into them and listen to those lectures.
The only way to really do that is with a playlist. Video on Demand will just maybe play one lecture, or if you strung them all together, it will only play the entire thing from start to stop. Let's say you just want to keep looping over and over again.
Or you have a CEO's financial address to the company or maybe to the public, where you just want to keep it on loop for the first 24 hours. If you've ever tried to watch any of the keynotes from Apple, after the fact, they go on this kind of rotating schedule the exact same way. They just play over and over again for the first couple, first few hours, maybe the first 24 hours. Then eventually they go to a Video on Demand kind of setup.
Whenever viewers tune into anything that's running on a playlist, they just jump in wherever it happens to be playing. It's literally like turning on a radio or turning on a TV. If you turn on a TV at 15 minutes after the hour, half the show's already played. You'll just start watching it right from that spot. Playlists are exactly the same thing. So think of them in terms of broadcast radio, broadcast television. There's two types of playlists. I'm going to focus on one of them. There's movie playlists, which generically means QuickTime and MPEG-4 playlists. And that's what I'm going to focus on.
Let's go back to slides. Great. Two types of playlists. I'm going to focus on the movie and QuickTime MPEG-4 playlist. You can also create MP3 playlists, which are actually what are called IceCast-compatible playlists. If you've ever gone to websites like live365.com and listened to internet radio, you're very likely using that IceCast standard underneath the covers to listen to audio. You can do the exact same thing with the streaming server, and you can even send streams to services like live365.com to actually relay your playlists out to the world. But I won't focus on MP3 for this particular session. I'll keep it strictly to QuickTime MPEG-4.
You can configure the playlist, by the way, via the web-based interface or something brand new called QTSS Publisher, which I'll talk about at the very end. So let's switch to computer two, and I'll show off the creation of a playlist. So let's switch back to-- I'll just hide server admin here.
So I'll skip to the applications folder. Inside the applications folder with Panther Server, there is a brand new folder called Server. It includes a lot of server tools that you'll want to check out. If we venture inside there, there will be actually a nice little icon, an application called QTSS Web Admin. That's the easiest way on the local server to actually get to the web-based administration tool. It's not the only way, but it's a simple way to do it.
All it does is simply takes you to a web page. So if you're thinking, do I have to be sitting in front of a Mac to do this? You don't. You can sit in front of a Windows machine and administer this server, as long as it's a recently downloaded, recent version of web browsers that can adhere to most of the current standards. So.
Recent version of Internet Explorer, Safari, of course. All those things will do for virtually any machine that can see that server on the network. For the folks who love things like IP addresses, port numbers, et cetera, you'll notice that the web admin is using port 1220. That's just one door into the server to talk to it. And we'll just simply just log in.
The web-based administration tool, by the way, when you run it, if you choose to run the server or control the server using this mechanism, it doesn't just drop you into the interface. On the first run, it actually takes you through a kind of setup assistant, a web-based setup assistant. So you'll notice I'm just going to step through a few screens here that look very similar to what we already saw in the server admin tool.
We've already filled out some of this information. That's the MP3 broadcast password. It's asking you if you want to do a secure version of administration. We'll just, in the media folder,
[Transcript missing]
QTSS web-based administration. The main screen, this is a 10,000 foot view of the server. This is the whole rundown. It's kind of a top-level scope of what's going on with the server.
This is usually what I check if I've got a busy time period on my server. I usually will check this location first to see if there's numbers as I anticipate. If I'm expecting 40 people to watch a stream, I want to see the connected users at kind of about 35, 40 maximum.
To create a playlist in the web-based administration tool, very, very simple. There's a playlist link on the left-hand side. I click it. And again, there's two types of playlists you can create. MP3, which I won't do here, but I encourage you to experiment with. I'll create a new movie playlist.
And if you notice, on the left-hand side, there's two columns in the web page now. On the left-hand side, we're looking at the current items inside of our media folder. So that's inside Library, QuickTime Streaming, Movies. That's what's currently inside of there. If I want to create a playlist, it's very, very simple. I can take one item and simply drag it over to the right-hand column. That adds it to the playlist I'm creating.
Of course, it wouldn't be good enough unless you could select multiples. So I just use the Shift key to select items two and three in that list. And I can, of course, drag them over. And it will say multiple items selected, if you noticed. While I'm dragging it over, I let go. And those three items are now added to the playlist. Very simple.
I should give my playlist a name. I'll call it ever so imaginatively, Test. This is the name that will appear from an administration standpoint. So when you go to work with the playlist, you'll see the name Test. And we need some way to actually connect to or attach to or watch the stream, at least to make sure it's running. We'll use this mount point terminology, which I'll explain in a moment when we play the playlist. I should point out there's three ways that playlists can run.
The first is sequential, which means it will play from the first item in the list to the bottom item in the list, and then will stop. So if you have a broadcast with content that's already been prepared and it's starting at 5 o'clock Eastern time, you can start the playlist at 5 o'clock. It will play until it's complete and it will stop. And that's it.
Sequentially looped will play from the first item to the last item, then it will skip back to the first item and will just keep going in a loop infinitely. And that's what you typically see with online radio stations or in our campus radio station or an announcement that just runs on the network. You'll usually see it be sequentially looped. The coolest option that I think on a playlist is weighted random.
If you notice on the right-hand column on the right-hand side, there's a column that says weight. Currently, each one is set at five. If you increase or decrease the weight for each song, it increases, in this case seven, or decreases, in this case I've set it to two for the second song, decreases the chances of it being the next item to be played. So it's a random playlist that randomly picks from the media, but based on the weightings you set here, the chances of it being the next item to be played are lower. Stephen Tonna, Victor Alexander I'll just simply select sequential as a simple test.
All I need to do, if you want to remove items, by the way, you can use the Remove Items option. But I'm just going to simply Save Changes. And I now have a running playlist. So it's really that simple. I'll go back to main. Now, if I can switch to computer 3, let's play that playlist and see what it looks like.
So I'll open up QuickTime Player. Again, I'm just going to go directly to it. Normally, you would get to this via a web page. Does anyone notice anything different about this URL over the previous ones I typed in this box? I heard someone say it. There's no file extension. So whoever said no file extension, gold star. There's no file extension. The reason is because we're actually taking that content that's prerecorded and we're making it seem like a live piece of stream.
Any live stream, it's just simply the name of what's called the mount point. In this case, it was test. We don't need to enter in the extension, which in this case, behind the scenes, is .sdp. That's just simply a file behind the scenes that keeps the details of that particular stream in check. All we need to do is enter in test in this case instead of test.sdp. And if all works well, we will listen to our-- Oh, we haven't listened to our... Ooh, I'll check my playlist.
I'll tell you in just a moment what I didn't do there and why it didn't work. I realize exactly why. OK, let's try that one more time now that things are actually running. This is a running playlist, right? Test. Anyone notice any differences in terms of... Turn the sound just down a touch.
Anyone notice any difference in the player in terms of the interface it's offering you over what we played when we had the chilis running? There's no thumb bar where you can skip through the media, right? It just says live broadcast and it just kicks right down to pause, fast forward, stop, volume controls. So there's no bar where you can thumb through the media, right? Simulated live. It's content that we already have prepared, but the Stream Server makes it look like it's live.
Just like radio stations, they already have A-tracks and CD players and all that stuff all set up in the DJ booth. They pop it all in and they play it and it goes over the air. You don't know the difference. Your radio just plays it back as is. Exactly the same experience here.
This is great to use on a campus, school, company for announcements, updates, financial stats, whatever you want to use it for. You don't have to be streaming commercially available songs in order to make use of this. You literally can have content that's appropriate to your particular organization and use this technique to deliver information in a timely fashion.
One of the examples of this use that I saw was quite ingenious. I literally did a 20-minute demo of QuickTime Streaming Server for a math teacher at a school. They had a slightly older server, perfectly suitable, where I had QuickTime Streaming Server. He sat down in front of iMovie, of all things, and recorded in his math problems each week. He read off 10 questions that the fifth graders needed to do. You go into iMovie and export those files out of iMovie.
Of course, he hinted them and put it on his streaming server, and he just let the playlist loop. He created the playlist and let it loop over and over again. The students would go to the library or go to any other computer in the school, and they could listen to the math problems instead of just being able to read them on the actual paper.
He would state details like when the assignments were due, other details you might want to check out, pages in the math book that might be appropriate. So don't just think streaming radio station with your favorite Liz Phair song or whatever it happens to be. There's other applications that are really appropriate. Great, let's switch back to computer two. I just want to point out briefly what it was that I missed.
Let's switch to computer two. Now, I saved the playlist and I switched over to computer three in a big rush because I'm all pumped up for my demo, but I forgot to do one thing. I forgot to actually press the play button. Now, it currently says stop. You need to press the play button to start the playlist in order for your playlist to start running.
So you'll notice that the status now says playing. I simply switched back to here, turned it on, and then we got our playlist running. I'll click stop. The playlist has stopped. No one can listen to it. If anyone's currently listening to the playlist, they'll get blank. Dead air. Okay.
Let's... Sorry, what's that? You can still hear it playing for a while. Oh, it will play for-- sorry, the question was, it's still playing for a few minutes. Well, remember I mentioned the buffering the client will do? It will queue up a few seconds of audio or video to make sure it can survive some of the bumpiness of the internet. Usually, it will play for five to eight seconds, and it will cut out. But definitely, if someone tried to connect to the playlist right now, they will definitely get nothing. They'll get dead air.
I'll take questions at the end, but that's a good one. So the question is, what's the situation with the media you have to add to the playlist? This is detailed in a very, very clear form in the documentation that comes with the streaming server. You can access that help, by the way, that documentation via the good old question mark button in the web interface.
If you were to search through this particular help guide, it will tell you that playlist media needs to have the exact same parameters. So if you're playing video, they all have to be the exact same frame size. They should use the exact same codecs to compress them, and they should be similar in all other aspects wherever possible.
In terms of MP3 playlists, just as a side note, the only real requirement with those is to make sure that the rate at which the audio is originally recorded is exactly the same. So typically, audio is done at 44.1 kilohertz. That's really the only thing for MP3s that need to be consistent.
The bit rate for MP3s can be wildly different, and the server will handle it properly. So check out the help for more details on exactly what those parameters are, but video frame size, the type of compression that we use should all be the same. Let's switch back to slides.
Back to slides. So we talked about video on demand. We talked about playlists. Very easy to do. Last but not least, live streaming. The only way to send content out to the internet as it happens is using this technique. How many folks consider that one of their main interests in terms of streaming server and the related pieces? Yeah, always about 30% to 40% of the folks are curious about that. It just takes one Steve Jobs keynote, and then you're hooked. You want to run your own live event. So live streaming, using a camera and QuickTime broadcaster is the only way to really do it. You can't do it by using a web server or some other contraption.
You have to have a piece of software I generically call a live encoder. There's actually a product from Apple available for free called QuickTime Broadcaster. And you really just connect any AV equipment that you've got connectors for on the back of your Mac. In this case, I'm using a camera with a firewall connector. I'm going to plug it into the back of the Macintosh, turn the camera on, and use that.
One of the best things about the MPEG-4 format, as a side note, is it has a phenomenal codec built into it called AAC. I'm sure you might be interested in checking out some of the other MPEG-4 sessions. That's a phenomenal codec for doing audio-only broadcasts, in case you're curious. We obviously use this technique for all our keynotes and WWDC major speeches. Let's switch over to... Actually, sorry. Here's a diagram of exactly what a live streaming event can look like.
Of course, you may have more or less iMacs connected on the right-hand side, depending on how popular your event is, but it essentially follows this model. You've got a camera, likely connected to a live encoder machine. In this case, we're using a PowerBook as an example. And of course, everyone wants to have an XServe as their QuickTime streaming server on the back end, so we've got that in our diagram. And that streaming server sends information out to the clients.
If someone's thinking that you might be able to use that XServe for both live encoding and to deliver the streams, you're right. You can actually use one box for both, but only for small events. I wouldn't recommend it for anything even remotely large. If you have a small audience, say 20 or 30 people, or short pieces of content that you want to just do live, a five-minute speech, very few people, you can use one machine. I have a feeling for our events, we probably use more than one machine.
So let's do a demo of Broadcaster. I'll show it to you. Hopefully everything works perfectly well as anticipated. In the applications folder in Panther Server, you have a great little tool called QuickTime Broadcaster. It's a Cocoa application written at Apple. I'm going to simply turn on my camera. This is a standard video camera. It's just a mini DV camera with a FireWire jack on it. Nothing too magical, nothing too complex. I'll launch Broadcaster.
It's a little hard to see because the room's a little on the dark side. What we have is-- We've got a preview screen. This is Broadcaster in simple mode. We've got a preview screen. We've got some buttons there to choose from, some presets, and that's pretty much it. Very, very easy. Broadcaster is extremely easy to use.
If you had already set things up, you could pick from these lists and literally click Broadcast. If you click Show Details, we get a little more extensive interface, and I'll just quickly step you through the three. For this particular demo broadcast, I'm not going to do audio just because we've got other speakers going on and I don't want any feedback, so I'll deselect audio. You can see in the interface down here, you can select all sorts of options, the right codecs, the right speed selections, whatever you want to pick.
For video, I'll pick one of the presets. QuickTime Broadcaster comes with some nice presets. If you're not sure exactly what to set in the interface, you can pick something that's appropriate. If you're doing a modem stream, select the modem options. If you have a high-speed connection that you want to deliver content to, live content to, select DSL or LAN, for example. I'll pick DSL. I'll pick DSL Cable High Motion, for example. That presets all of these options below so that I don't have to remember every time what to set.
Under Network, again, there's a preset that you can configure if you like. All it really takes is entering in the name of the streaming server you want to send the live content to. In this case, I'm using the same machine to stream to itself, the one box solution. I can name the stream.
This is very similar to test, which is what we did for the playlist. I require a username and password. There's an admin password you need to use in order to broadcast to the streaming server. And of course, we can set some details that appear in the info panel on the QuickTime player.
You literally can click broadcast. It's going to request a password. I will enter my super secret password. Clicking Broadcast will literally start taking content from this camera, bring it down the firewall cable into the computer, taking that content, compressing it, hinting it, and sending it to the server, which in this case is the same machine.
So you can imagine that that live encoding machine that's underneath the counter here is working really hard to do this job. That's why for larger events, you often want to have one computer for a live encoder and one box doing the streaming server. So I'm broadcasting. I've got some details about the current status of my broadcast.
and some details. You might notice that if you wave in front of the video camera, you may not see that once I start showing you the stream on the client. There's roughly between six to eight seconds delay between the live encoding software doing its job and ending up on the client. That's to make sure that the streaming server can average out the streams and make sure everything is sanitized before it gets sent out to the world.
You would never normally see that because typically your clients aren't sitting in front of the camera that's pointing at them, right? In the real world, they don't know there's a six-second delay. Just like in radio, they have a six-second delay, right? You would never know unless you stood inside of a radio broadcast booth. Let's switch over to computer three, and let's fire up this stream and see what it looks like.
So everyone in the front row, I want you to smile pretty and give me a nice pose. We'll go open a new-- I'll type in RTSP colon slash slash, the IP address of my stream server on my stream, just to get this running. There we go. It's that easy. Thank you.
If any folks have done any kind of live broadcasting previous to this, you may remember in a shudder that you may have had to copy files up to the server from this live encoder and it spit out a file and I didn't know what the file did, but I had to get it up to this certain directory. QuickTime Broadcaster uses a technique called announce. That means that the live encoder software, QuickTime Broadcaster, can simply alert the streaming server that, hey, I'm going to start a stream. Here's all the details.
The streaming server will automatically create those files locally on the server in the right directory and do all the right things as long as we enter the correct information into the QuickTime Broadcaster itself. So that situation where you have to copy files and I don't have file sharing turned on and how do I FTP off the command line, you don't have to worry about any of that using QuickTime Broadcaster because it uses announce.
So we've got our stream running. This is a moderate speed stream. We can see that all the information that I typed in in the extended panel in QuickTime Broadcaster, right, enter the key TSS, all that information ends up in the info panel, right? The top name obviously populates to the top of the QuickTime player panel, and it's working perfectly. Let's switch back to slides.
"I'm still testing the six second delay. If I do this, it's amazing. There's nothing like a QuickTime Broadcaster to make people act goofy. Because when I first turned it on, I was like, 'Ooh, I was doing lots of crazy things in front of it,' and then my boss walked in.
So it was not a good scene." Unfortunately, I can't demo this particular app, but it is on the way. How many folks went to the State of the Union for QuickTime this morning, first thing? So you did probably get a glimpse of it, if I understand what the agenda was for that. QTSS Publisher, another Cocoa application. This runs on Mac OS X server only, and it connects to QuickTime Streaming Server only. So this particular discussion does not apply to Darwin Streaming Server. This is a Cocoa tool that helps you manage your media.
Just like we set up playlists, and just like we hinted content, the publisher takes care of that process for you automatically. Simply adding content to the publisher window will automatically upload your content, hint it, put it in the right directory, you can even make a playlist with it in less than five seconds. It's a very, very good tool. It's not quite baked yet. It will be included with the QuickTime Stream Server 5 package. I encourage you to go check it out.
It's impressive. I've been playing with the early versions of it, and it's very, very good. The streaming playlist management is great. And that's a Cocoa application. You need to run it from either Mac OS X or Mac OS X server. You can run it remotely, just like the web admin, except you need to be sitting on a Mac OS X based workstation to run it.
I believe the publisher will be Panther only, but please read the final release notes in order to determine exactly what the compatibility is. So wrap up, let's take a look at whether sessions are happening this week that you probably care about. If you feel energized from this session, you're totally pumped up and you want to go into the advanced session, there is an administering QuickTime Streaming Server session. I believe it's tomorrow. Please check that out. That's with the QuickTime Streaming Server engineering team. Very, very useful.
Great session for the authoring side, previous to streaming content. You can check out session 710, which is pre-processing principles, which is always good stuff. In this room, following this session, we have a great session coming up on QuickTime on the campus, a case study of how QuickTime is being used on campuses.
We've also got lots of other great sessions going on. Of course, QuickTime for the web. If you're interested on how I would take that stream and get it onto a web page and make it look great, check out session 712 with Stephen Gooley. Excellent session on how to get your content announced and out there and out to the world. Again, more great sessions. Streaming Server Programming, if you're more on the programming ilk, like I say, Terminal is your best friend. Xcode is your best friend. You can check out session 727 if you want to learn about the guts from a programming standpoint of the streaming server.
Of course, even more sessions to check out. Who to contact? In general, Guillermo Ortiz, QuickTime technology manager. Of course, he's got the infamous email address, QuickTimeMan at Apple.com, right? You can contact him if you have questions about the topic of streaming in general, QuickTime in general. If you have questions specifically about this session and only this session, please contact me. You can email me at the address on the slides. I can only answer questions about this particular session.
I think I may rewrite you to Guillermo if they are outside the scope. For more information, here's some useful URLs that I found very, very valuable to myself. The QuickTime Streaming, Darwin Streaming Server Administration's guide, I definitely recommend. It's a PDF you can download. I believe it's even included on the CDs you received during the conference. Please check that guide out. A lot of folks did hard work on it. It's a really good stepping stone to take you beyond this session. General information, you can check out the QuickTime portion of the Apple site. Developer documentation available there.
You got some reference resources, of course. The course that I wrote, QuickTime Streaming, is still being taught. And it's available to-- it's being run in the US, and I believe beyond. You can check out the URL at the top there to get more information about that course. It's a three-day course taught in the classroom.
It covers a lot more than what we did today. And some excellent books to refer to. Knowledge-based articles. I'll probably bring these back up on screen after the session's done, but there's two or three good, excellent knowledge-based articles available from Apple's website that I find helpful if I back myself into the corner with the streaming server.
And of course, do not miss the QuickTime labs that are located downstairs. There are folks that you will love to talk to and meet, engineers, very, very skilled media authors, and folks downstairs that you want to chat. It's down in the Sacramento room. Please check it out. Have a chat with those folks. Introduce yourself. Talk to them about what you're doing. Bring them your code if you're doing development. Talk to them about your setup. They'll be happy to chat with you and answer your questions.