WWDC2001 Session 406
Transcript
Kind: captions
Language: en
oops
so I'm crystal crime the engineering
manager for the streaming server I've
been doing that for about three years I
guess I'm going to talk to you kind of
at a high level about the QuickTime
streaming server so some of the things
I'll tell talk about our kind of explain
what the server's do what they are I'll
give you some status on our latest
version and I'm also going to give you
an overview of some of the functionality
and some of the typical configurations
of the server which is something that's
in a documentation but it might be nice
for me to get up and actually talk about
it a little bit I'll give a real
high-level overview of some of the
streaming protocols which is important
because it's actually possible to write
tools around these protocols that will
interact and interoperate completely
with the streaming server and the
streaming client I'll also mention a
couple of ways that you can extend the
streaming server go through a few of
development opportunities and I'm just
going to talk about our general future
direction so what are the QuickTime
streaming server and the Darwin
streaming server says three servers in
one but actually it's more than three
but the three major things we do our
video on demand which basically allows
you to serve stored content off of a
hard drive it's a lot like a web server
serving static HTML except the server
streams movies instead of serving up
HTML we do the server does live stream
reflecting and what that means is that
you've got a broadcaster or some kind of
an input source sending media to the
server and then the server reflects that
out to massive number of clients
thousands of clients we also do
something we call simulated live using
our playlist broadcaster future and what
that allows you to do is to have stored
content on the server and have that
broadcast kind of in a delayed fashion
as if it were a live broadcast it's
really good for doing delayed broadcasts
obviously and also for doing things like
setting up internet radio stations you
can actually create playlists of songs
or have videos and play that out to the
server on this if it were a live stream
the server is completely standards-based
when we decided to get into the
streaming server business we kind of
took a look around and decided that we
didn't need another a third proprietary
format so we decided to go completely
with standards and we actually believe
in it so much that Apple's one of the
founding members of the internet
streaming media Alliance which is an
organization whose Charter is basically
to make sure that mpeg-4 streaming and
mpeg-4 in general works in an
interoperable fashion between different
vendors the server scales really well it
on a single processor machine we can do
over 2,000 concurrent off of disc movies
or off of disk connections or streams
and we can do well over 3,000 when it's
reflected from a live broadcast that's
not a single processor machine there
also ways to kind of tie machines
together and do even larger larger
broadcasts which is was a real a feature
is the relay feature allows you to set
up a collection of machines so that they
one one server can or one relay can
relay out to other relays which allows
you to do instead of maybe two thousand
client you can have ten machines and do
twenty thousand clients and we of course
support UDP UDP is for those of you
don't know is kind of the sister the
brother to TCP except that it's not
reliable and that's the normal way to
stream media using RTP which is a
standard protocol we also can tunnel
over HTTP and the reason we do that is
to allow extremes to get through
firewalls that are not configured to
allow RTP traffic to come through so
basically a request will look just like
an HTTP HTTP request to a firewall or to
a proxy and everything I'm all the media
can get through that in trouble that way
that is people love us for doing that
the QuickTime streaming server and the
Darwins streaming server are also open
sourced so a point of confusion for a
lot of people has been that people are
continually asking what's quicktime
streaming server and
Darwyn streaming server what's different
about these two and the answer
especially as of the latest version is
that there's absolutely no difference
whatsoever we simply use QuickTime
streaming server as the brand name for
the Mac OS 10 version of the server and
we use Darwin streaming server to refer
to any other platform that the server
runs on and to the open source project
so we build obviously for Mac OS 10 and
we've been we ship a binary for that we
also build binaries under the darwin
name for linux solaris freebsd and
windows NT 2000 and we actually build
these things and treat them as a
first-class citizen and in terms of
being equal to Mac OS 10 we do test
those those versions of the server we do
put effort into making sure that they
perform well so you can download the
binaries and it's you can be assured
that it's at least as good as Mac OS 10
in addition to that because we're open
sourced developers have ported to Darwin
streaming server 2 to a wide variety of
platforms basically every major platform
you can think of so it's been ported to
Mac OS 9 by us and people in Brazil it's
been ported to SGI's I Rick's it's been
ported to to Hewlett Packard's hp-ux
Compaq ported it to their tru64
operating system it's been ported to
basically every flavor of Linux in the
world and so it's available on almost
everything I'm not I think I heard
something about Abby OS version but I'm
not actually sure if that's out or
around right now and because it's open
source we also make the source code
available to the public in kind of two
forms you can download the source code
for any GM version just as a tarball
so you've always got a copy of the GM
version of the source code in addition
to that we actually do our development
in a public CVS repository so if you
were to pop over to our CVS repository
right now and do an update or a checkout
from there you'd actually get code
that's in progress by the Apple
engineers and various the darwin
developers and some it's a great way to
help us out you can download that stuff
and if you see above fix it for us
submit a bug and we'd be happy to roll
into the into the CVS repository for you
so where we at today probably all know
that we just released QuickTime
streaming server 3 Oh
this week it's available for download on
the web as an installer and that can
install on Mac OS 10 desktop or Mac OS
10 server but it's actually already
included with Mac OS 10 servers one of
the standard services on that package
run that product and of course we've got
all of the the darwin binaries up there
for download as well for all the various
platforms that Apple support that Apple
actually builds on and so what's new in
3m kind of give you a high-level
overview of each of these I'm gonna go
any detail into these in a second
skip protection is a new feature it's
actually not a feature it's more of a
collection of quality of service
enhancements that we've added to the
server and it's kind of an ongoing
process for us to always improve quality
we've added a web-based administration
to the server so if you're familiar with
streaming server 2 we had for Mac OS 10
a little cocoa based app that did some
limited administration it looked nice
its aqua fide but for the other
platforms configuration basically meant
that you needed to get over to the
server telling it in modify some text
files stop the server or send a signal
to the server and hope you got
everything right hope you didn't screw
up the config file and we decided that
was too complicated so we decided to do
a UI for all platforms we've
strengthened the authentication and by
that I mean dedication that happens when
a client tries to connect to the server
and access a movie that's been protected
and we've also in conjunction with
QuickTime 5 foot 10 5 added some api's
that allow you to do live broadcasts and
to do basically encoding from an in from
an input source broadcast that out to a
server so we support that we also and we
support some of the new features they
added such as announced support I'll get
into that in a second and broadcasting
via reliable transport we've also done a
couple of API enhancements that I'll
talk about
so skip protection if you guys were at
the keynote you probably saw avi do the
demo where he had two movies up
side-by-side he pulled the plug which
was intended to simulate packet loss the
the old 2o version of the stream stopped
and the three overs and just kept on
going there are a couple of things that
we did that allowed that to happen so
the first thing that we do is we now do
intelligent retransmission of lost
packets basically the client is
continually telling the server which
packets that gotten lost and the server
makes some decisions based upon whether
the packets whether there's enough
bandwidth whether the package is really
important or whether the client will
even be able to use it it may be too
late to even retransmit so it does some
intelligent retransmission then the and
in conjunction with that we actually do
congestion avoidance you know in our
algorithms we don't just blindly treat
retransmit things and the reason we do
that is that if the server's being
notified of packet loss and we just
start retransmitting more data and it
turns out that the packet loss is caused
because there's not enough bandwidth or
there's a congested link somewhere on
the net all we're gonna do is evaporate
the problem um so we try to be really
smart about what we actually
retransmitted we in conjunction with
this we do something we call over
buffering and what that is is basically
sending the media and faster than real
real time and the reason we do that is
that typically you've got a three second
buffer in the client in what over
buffering allows is for us to stretch
that buffer out and it gives us a lot
more time to perform retransmit so
instead of performing retransmits up in
this little 3 second buffer we may have
up to 25 seconds to do a retransmit
which gives us a lot of time to recover
from just temporary conditions on the
internet and things like that and so
over buffering is cool but you don't
want to just like send things as fast as
you can we actually need to know how
fast of a connection each client has so
we have something we have we built some
technologies into the server that
actually can detect the available
bandwidth for all of each of the clients
that are connected and we use that when
we're doing the over buffering
in addition to that we've improved our
thinning algorithms and what thinning is
is there are situations where there just
isn't enough bandwidth and somebody's
asked to watch a movie that maybe
requires 40 4k but their modem is only
running at 40 K so what sending what
thinning is is the mechanism where we
actually select packets based upon their
priority and just don't send those and
the idea there is to and to decrease the
bandwidth of that stream so that the
client gets at least some semblance of
the usable stream in the past with - oh
the shifts when we were doing thinning
were pretty abrupt you'd be watching
you'd see a movie would look like crap
we would sin it would immediately go to
a slideshow if that didn't work we'd go
down to audio and basically we've just
got to smooth that progression a little
bit and skip protection is like I said
it's not a feature it's just it's just
our umbrella term for quality of service
enhancements to the server and the
things we've added for three are just
the beginning we plan to do quality of
service enhancements for every release
of the server moving forward an obvious
goal is to get the broadcast quality at
some point then even beyond that better
than broadcast quality there are some
things we think we can do with
interactivity and just really high high
quality video high resolution video that
we're gonna be looking into over time
it's gonna take a long time obviously
next new feature is our web-based
administration and one of our goals with
kind of from the beginning with the
servers that we wanted to make it
extensible for developers and we wanted
it to be easy to extend so we kind of
took that philosophy to heart when we
did the web-based administration and the
way this works is we implemented it as
basically a collection of HTML that
contains some tags in it and some Perl
scripts that know how to parse that
those HTML files and read those tags
make a request off to the streaming
server for data and kind of reform at
the HTML so that it looks like normal
HTML on the web browser we built kind of
a mini web server based on Perl which
just a very simple little web server
room
for actually talking to the web browsers
the web browsers never talk directly to
the straining server and as I said it's
extensible just by replacing some add in
simple cases just adding some additional
HTML with whatever tags in more complex
cases if you've got some complicated
data data that you need to parse and you
might have to write a little pearl CGI
that does the parsing for you and of
course it's secure we the little mini
webserver actually does SSL you know I
probably have this upside down don't you
okay and here the screenshot I'm
actually gonna demo I was gonna show you
just a screenshot but I decided that a
demo might be better just gonna quickly
show you a couple of the features in the
web based admin so this is kind of the
initial screen it's basically just a
snapshot of what's happening with the
server hopefully you guys can all see
that in the back if I if I had a lot of
I could check my CPU CPU load here I can
see how many bytes the ministered I can
see how much bandwidth this winged out
it's kind of a convenient thing here are
some of the general settings here you
navigate just by moving through these
tabs and compute the logs in the admin
there's an error log lots of errors and
another thing we added so is UI for the
playlist broadcaster if you guys are
familiar with that you'll actually like
this in the past you actually needed
setting up the playlist broadcaster on
all platforms really consisted of
modifying multiple text files and people
inevitably got it wrong and so we added
UI here basically you can create a new
playlist here all the movies listed down
here that are in this playlist you can
tell it how you'd like it to play
sequential weighted random you can tell
it to turn logging on things like that
and then turning this on or off is just
a matter of clicking the little play
button here and the broadcast
automatically gets started up and
automatically starts talking to the
server and you've automatically got your
internet radio station or your broadcast
happening
I guess you guys hated the text files on
announce support so like I mentioned
could time 5 has added they've made the
broadcaster api's public so in the past
we had there was one broadcaster with
Sorenson and the way that worked is that
you would set up your broadcast plug
your camera in he'd have the Sorenson
broadcaster generate an SDP file which
is a file that had basically a
description of the session you would
have to take that file get access to the
server that you're gonna broadcast to in
a lot of cases he actually had to go in
and modify the SDP file which meant that
you needed to understand the SDP format
and after that you would start the
broadcaster up and typically it wouldn't
work the first time you look at your FTP
file figure out what's going on
basically it was a mess and we didn't
think it was easy enough so we decided
we needed to automate that so we've
added some support to the broadcaster
api's to use the standard RTSP and to
use the announce method in our TSP and
what that means is that all you need to
do now is type in an IP address on the
broadcaster application specify the name
of the broadcast and press press start
at that point what happens is the
broadcaster will send all of that
information that was originally in the
SDP over to the server server will say
first of all or it'll ask are you okay
to do this and actually authenticate
that broadcast or been the reason for
that is you don't want to have anybody
being able to broadcast to your server
what once it decides that the
authentication is OK it'll let the
broadcaster know things are cool go
ahead and send me over all of the
information that I need and the
broadcaster will start broadcasting and
you're done
so basically it's type in a couple of
fields push a button you're done
in addition to the announced support for
broadcasters there was a problem with
the original broadcaster broadcast only
on UDP and if I mentioned UDP is a non
reliable transport which means that
packets can get lost so that's a minor
problem when you're a client watching a
stream in one pack one or two packets
get lost and then everything is fine
after that it's a major problem when a
broadcaster is sending data to a to a
reflector and it loses packets because
then every single client loses those
packets so we decided we needed to have
a reliable transport and we decided to
just go with TCP rather than doing
anything real complex the problem the
second problem with using TCP is that
the buffer sizes are typically too small
so the reliable broad with reliable
broadcast the broadcaster is actually
able to tell the server how large it
would like its buffer so it can tell the
server
I'd like a 1-minute buffer and what that
allows is for situations where TCP gets
into congestion problems or maybe a
little little flow control problem it
gives us give us the broadcast or plenty
of time or the TCP stack plenty of time
to get caught up and make sure that
basically all the packets get through
and everybody's happy which means that
all of your clients will receive much
better quality stream in the case of
packet loss between the broadcaster and
the server so those were those are the
new features
I'm going to talk about some of just
some of the typical configurations that
you can put the server into and the
thing to the thing to notice that these
are not modes that this River goes into
the server can be configured to do any
one of these or all of them at the same
time these are just different ways the
server can be operating so we've got
video on-demand live streaming simulated
live streaming and we have a more
advanced the advanced configuration is
real a streaming slow go into those more
detail actually have pictures there for
you guys to look at so probably the most
typical form of streaming is stored
media streaming or video on demand and
this is actually as I mentioned just
light or it's analogous to web servers
serving static HTML basically all you
need to do is take some hinted movie
files drop them into a directory on your
server the client will make a request to
the server just using a URL it looks
like an HTTP URL except it says RTSP
server will go out try to find that
movie and then just begin streaming it
to the server and as I mentioned these
movies needs need to be hinted and what
hinting does is it takes a standard
QuickTime movie and it adds some
additional track for each track in the
movie it adds an additional track and
that track basically contains
information that the server uses to
determine how to which block which blobs
of media to put into which packets and
what time to send them out so and one of
the big advantages of that is that it
allows the server to be completely
agnostic about media formats that's why
we're able to stream media on a linux
server or freebsd server where quicktime
api's don't exist in the codecs don't
exist next configuration is live
streaming which adds a couple of pieces
to the puzzle first you need a camera or
some some form of an input source and
what you do is hook that camera up to an
encoder broadcaster machine and the job
of the broadcaster or the encoder is to
obviously encode the incoming stream and
then to packetize it into RTP format and
send it off to a server or a client so
in this picture though you'll see that
it sends it off to a server and there's
a really good reason for that
you technically can send things directly
from the broadcaster but decoding and
encoding can take quite a bit of CPU and
so it's not really not a good idea if
you want to scale to any more than a few
clients so what happens in this case is
that the encoder encodes one stream and
broadcasts one tree stream to the server
and then the server which has hardly any
load on it because it's not doing any
encoding can broadcast out to thousands
of clients simulated live this is the
playlist broadcaster I just showed you
and the way that works is kind of a
combination of live streaming not really
and video-on-demand and the way it works
is you put your hinted movie files onto
the hard drive of the server and you
create a playlist which can be either a
single movie or unlimited number of
movies and then there's a little tiny
process that runs for each playlist on
the server machine itself and it
basically goes through and parses those
files reads the hint tracks and then
streams those things and local loopback
to the to the streaming server which
then broadcasts that out to all of your
clients so what this looks like from a
client perspective is a live feed even
though it's really not there they're not
gonna be able to thumb back and forth in
the movie they're all going to see the
same thing at the same time and it's
really useful for doing things like
delayed broadcasts let's say you've got
an event that you pre-recorded you can
drop that on the movie or drop that on
the server create a playlist with that
individual file and it started up but
whatever time you want to start it and
then everybody can tune in and then as I
mentioned it's really it's also really
good for creating things like internet
radio stations if you go to yeah
actually go up to Apple's put time TV
site and look at Warner records for
example they've actually created kind of
a mini mtv using the playlist
broadcaster it just shows video after
video throughout the day and more
complex and probably doesn't affect most
of you but it can certainly affect some
of you is the configuration we call
relays streaming and in this case and
relays dimming is used for live or
simulated live and it's used for
allowing you to do events that are much
bigger than what one server can handle
so basically we've added just another
layer between the original it's the
fervor connected to the encoder and the
claims so you've got the live stream
coming into your relay server and
instead of that server broadcasting out
the clients it broadcasts out to other
servers which means that you can have
instead of one machine doing 3000 you
could have maybe 10 machines doing
thirty thousand concurrent streams so it
allows you to do really large events
this is effectively what companies like
Akamai and digital island are doing ferd
for for their live events they I don't
think they're using our exact our code
but they've got something that looks
really similar to this so I'm gonna go
over the kind of the three major
protocols we use really briefly here
first one is RTSP and it stands for our
real-time streaming protocol we second
one is RTP and real-time streaming
protocol actually is kind of the control
mechanism for the client from the client
to this river lets the client tell the
server what to do real-time protocol or
real-time transport protocol is the
protocol that the media is actually sent
on and that operates under UDP typically
it can be on TCP we do both actually
with HTTP tunneling and rtcp is
real-time control protocol is actually
used by the used you know the way it
works is that the client uses that
protocol to tell the server how things
are going are we losing packets is there
Network jitter happening things like
that and I've got a little picture here
that'll either make it easier to see
your heart ride around so on the top
we've got RT SP and RTSP is based on
HTTP it actually looks almost identical
the difference is that instead of HTTP
in the header it'll say RTS T and
instead of methods like get and put
it'll have methods like play and pause
and describe and set up RTP runs on a
different port RTSP typically is on port
55 54 RTP happens on a different port
from the server and that's the stream
that the media actually gets
gun and RTP basically is the way the
package look it's pretty simple it's
just got a little packet or a little
header on the top of the packet that is
an RTP format and then a blob of medium
and the client knows how to decode that
media once it gets that repackage or D
packetize it our tcp as I mentioned is a
status channel from the client back to
the server and that section that's what
the server actually uses that for doing
all of the quality of service and
features that I talked about with skip
protection well that's how we get
notified the package for getting lost
and which packets are getting lost
oops here's an example session and I
think you guys can read that so kind of
walk through what happens when somebody
presses the play button on a movie so
the first thing that happens is the
client will send an RTS P describe
request to the server and that contains
just a URL basically and the URL looks a
lot like an HTTP URL it'll have the
server name slash and then a path to the
movie and the server responds to a
describe request with information about
that movie and the information that it
responds with are things like the number
of tracks what types of media each of
the tracks are and things may be a bit
rate of each track the language of the
tracks things like that so once the
clients got that information it can then
make a decision about which tracks it
actually would like to listen to for for
example you might have a movie that's
got a single video track and three
language tracks Spanish English and
French the client will then send a setup
request for each of the tracks that it
actually wants to listen to so in this
case it's going to send back a set up
for the video track and a set up for one
of the audio tracks that it would like
to hear server will respond with OK's to
both of those and then the client sends
a play request which tells the server
okay now start streaming me the things
that I asked you to set up at that point
media just gets sent out over RTP
everybody's happy nothing more happens
until the stream either ends or the
client it sends either a teardown
request if the movie wants to be
completely shut down or somebody presses
the pause button and they just want to
the movie pausing the movie is different
than shutting down the movie because the
server actually maintains the state of
the movie so that if you press play
again it's going to know what to do so
that's kind of it for the protocols
there are a lot of ways to extend
streaming server and I think I don't
think I think it's pretty clear that the
QuickTime streaming server is easily the
most modern most extensible streaming
server in the world there are other
servers out there they're not typically
extensible other than maybe some little
module api's we have a lot of ways to
extend kind of the most obvious way is
that the source code is all available
and you can take the source code and do
whatever you want with it we have source
for the server we also have a proxy
server that we have source for all of
the source codes available for the the
admin that we added for 3oh and the only
the only issue here is that Apple's got
a license we call the Apple public
source license and with that license
says is if you are going to make
modifications to the to the core code of
products that are open sourced by Apple
we just ask that you send those changes
back so that we can share them with the
rest of the open-source community other
than that you're free to do whatever
you'd like and a lot of times you might
make changes that have no meaning to us
we're not gonna roll that into the
server but you still need to post that
for the public can see it there's a way
to get around that with the streaming
server though we recognize that there
are companies that are gonna want to
build things that have some some really
strong intellectual property value or
are just proprietary they don't want
other people to see it the way to do
that is to build an 8 module that
attaches into the server and the reason
it doesn't fall under the apsl is that
you're not modifying any of our source
code you're actually just writing
brand-new source code that belongs to
you the plug-in API that we use for
these is really similar to the Apache
plug-in API if you're aware of that it
uses concept of roles and callbacks in
different during different states in the
server there are two ways to build
modules you can build them as Dinan
dynamic modules and those are basically
standalone little shared libraries that
you drop into directory the server auto
discovers the
asks them to register for their roles
and the way they go or you can compile
in compile the module directly into the
server and then it just becomes a part
of the single server binary and in fact
most of the server features are
implemented as modules so things like
the ability to reflect live streams as a
module error logging access logging
authentication the module that lets feed
web-based admin work those are all done
as modules that are just built into the
server we did we we think we did a
really good job of making sure that that
API or is it that that architecture was
really high performance because we use
it them another way you can extend the
server new with three oh and maybe it's
not an extension of the server but just
kind of build the ability to build some
products around the servers to use the
admin protocol now the admin protocol is
basically a way to get and set
attributes in the server using simple
HTTP requests and the requests will
basically have a URL to the server and
then maybe some parameters at the end
that tell the admin the admin module
whether you want to get a value set a
value to lead a value things like that
and this is what the web the web-based
admin uses this primarily so the things
that can be built around this are like
I'd like to see somebody write some
really cool monitoring applications they
don't have to be written in it in Perl
or anything like that they can be
written in any language because it is
just straight HTTP maybe some advanced
configuration or advanced administration
applications things like that the kind
of the last way to extend the server I
want to talk about is by extending the
web-based admin so the read there are a
couple of really good reasons for doing
this first one might be that maybe you
don't like our admin maybe you want to
repurpose it for your for your
corporation or you want to repurpose it
and sell some to sell a product to
somebody you can just take the existing
admin and modify it probably a more
common reason to extend it would be that
you write a module for the server and
you want to have some user interface for
your module so what you can do is
just create some HTML files with the
special tags possibly write a Perl CGI
drop it into a directory and it'll
automatically appear in the user
interface along with the rest of you
it'll be along with all of the UI that
we've written it basically becomes a
first-class citizen in the admin you
might might show up if there's an
additional tab in our admin or something
like that and all of these some ways of
extending the server there's a session
immediately following this and we'll
have some streaming server engineers up
to show you how to do each of these
extensions see a little bit more of the
web admin and a little bit about the API
as well as how the admin protocol can
work so development opportunities so we
have we don't have a gigantic team at
Apple working on the streaming server
with so we can only do so much we think
we think we've done a really great
reference River we think it's a really
high performance server but there are
like hundreds of features that we're
just never gonna be able to get to
because we don't have enough people to
do it we do have on the other hand 500
darwin developers that are that are
building things around this thing so we
really want to get developers out there
building things around this possibly
building the server and repurposing it
as your own product we actually really
promote that as long as you follow the
Apple public software license there's
actually absolutely no issue with doing
that so a couple of ways you can a
couple of development opportunities
might be to port to some other platforms
most of the major platforms are done but
if you're doing maybe a network
appliance server like NetApp does or
Novell I think has something Tomi you
can take the server put it over to your
device and where you go and you can and
resell it there's no issue with that at
all from Apple there are also a bunch of
plugins we'd like to be see see written
so we have some really basic
authentication in the server I'd like to
see a module that does something keishon
with a stronger back-end authority maybe
or with with a database of user accounts
it's also possible to write modules that
use a database as the means of storage
for all of your content I think that you
know that's kind of a vertical market
but there's definitely not
there and of course you can do
additional logging and reporting modules
and maybe a cool feature would be a cool
product would be to kind of build an
entire broadcast system for internet
broadcasting similar to what TV stations
use they've got software that manages
all of the scheduling and which content
to serve and add insertion and things
like that and might be interesting to
see somebody write some modules into the
server that do that and reaper and kind
of go after that vertical market and as
I mentioned monitoring tools via the
admin protocol admin protocols news so I
hope to see a bunch of those coming out
and of course web-based administration
extensions possibly do a web-based admin
that's purposed for some corporation and
sell it into the corporation things like
that so our future directions are
actually pretty simple we plan to
continue working towards standards and
to support standards we actually work
with the IETF to extend the protocols
when we think that they've got some
limitations a good example of that is
that we recently proposed an internet
draft to the IETF that makes it much
makes it possible to write streaming
caching servers that work much better
with with streaming media nobody else
has done this and it was something that
was desperately needed basically the
streaming caches were at the mercy of
the network they didn't have any
information coming to them about packets
that were being sent to them or ways to
get the media sent to them in a reliable
fashion and so we worked on an extension
with the IETF to do that as I mentioned
we're also Apple is also a founding
member of the internet streaming media
Alliance which is basically an mpeg-4
alliance and we are big on making sure
that mpeg-4 works with all of the
different vendors and I think you're
gonna see a lot of and for coming out of
Apple over the next year and of course
we plan to continuously improve quality
and of course performance sometimes they
get lucky we get a really fast machine
and that helps us automatically but
we're continually looking at the
software and looking for ways to make
the software perform better
and of course we'll always be looking at
adding new features and looking for
other leading edge technologies to add
into the server so there are a few
places that you can go to get more
information about the streaming server
the first place maybe or maybe the
second place or third place I'm not sure
it depends on you but we have a mailing
list for developers and that list is
actually it's a really high-quality list
I want a lot of mailing lists some of
them are not high quality this one is
good it's the traffic is probably
between 5 to 20 messages a day they're
all very focused and very development
related it's a great way to have contact
with the engineers because all of the
engineers and and some of the marketing
people are actually on this mailing list
and monitoring and replying to message
to questions so I highly recommend you
go to that the best way to get to it is
to just go to lists Apple comm and
search for the word stream you'll find a
developer's list and you'll also see a
users list which is interesting too if
you want to find out what users are
doing or if you want to become a user
and figure out how to use the server
better all of the open source
information the Darwin versions of the
server are all available on Apple's open
source website at WWF in source code
comm and for things that are more client
related or authoring related you should
go to Apple's the developer site for
QuickTime that's developer.apple.com
slash QuickTime and then even though you
may not ever write any networking code
it's always it's actually a good idea to
understand what the protocols do and how
they work and so go up to the ietf site
and check out the RFC's for each of the
proto for the major protocols we use our
TSP is 2326 RTP is RFC 1889 and SDP is
and here are the sessions that are
remaining at WABC that are related to
the streaming server so immediately
following this session in this room you
don't even have to get out of your
chairs is a session on how to customize
and extend the streaming server and
we'll have some streaming server
engineers up for that there's a feedback
forum tonight at 3:30 in room j-1 and
that's going to be that feedback form is
actually intended for both QuickTime
client and server issues it's just kind
of a uber QuickTime and feedback set for
them recommend that you go to that and
of course there's a beer best at Apple
tonight we'll have engineers in either
the we'll be either in the server area
or the QuickTime area for me it depends
on how close the beer is if you need to
contact anybody with developer related
questions you should contact Jeff Lowe
he's the quicktime technology Manafort
manager for Apple Worldwide Developer
Relations his email is Jeff flow at
apple.com he also handles them so he
handles both quicktime River and client
you