Idag Streaming media Erik Runeland erikr@kth.se Vad är streaming? Distributionsteknik Uppspelning och presentation Några exempel och demonstration Vad är det? En mekanism för att överföra tidsrelaterat medieinnehåll Data som överförs bit-för-bit vid behov Översikt Sändningsnätverk Streamingserver Distributionsnätverk Ljud- & Bildproduktion Encoderdator Tittare/användare 1
Encoder Tar in ljud & bild Digitaliserar om det behövs Komprimerar med en codec Lagrar på disk och/eller sänder till streaming-server Kompression Tar bort onödig information Först yxan: storlek & frame rate Sedan finlir: Transformbaserad kompression & rörelse anpassning Streaming-servern On demand Sänder ut lagrade mediefiler på begäran från klienter Live/direktsändning Tar emot en medieström från en sändare, vidarebefordrar till många tittare/klienter Live-sändning En encoder (digitaliserar) och komprimerar programmet i realtid Ställer höga krav på codec. Efter kompression sänds materialet i realtid Encoder -> Streaming Server Streaming Server -> Uppspelning 2
Simulerad live Materialet färdigt Alla ser samma ström Jämför med TV utan direktsändning, pay-perview Fördelar Man slipper köra encoder i realtid Möjliggör effektivare distribution (multicast) Nackdel Man kan inte titta när man vill Det går inte att spola filmen On demand Tittaren kan välja media själv Två distributionssätt HTTP streaming = fuskstreaming RTSP (eller motsvarande) = riktig streaming Mycket resurskrävande för distribution Distribution Streaming-servern distribuerar innehållet för uppspelning Sker oftast med unicast = alla får en personlig kopia av materialet Distribution med multicast är intressant men i praktiken sällan gångbart Unicast Varje tittare får en helt egen kopia av materialet. Enda alternativet vid on demand - sändning. Belastning på server och nätverk ökar linjärt (minst) med antalet tittare = kan ge problem vid många samtidiga tittare 3
Unicast-princip Exempel Bithastighet: 500kbps Antal användare: 3 Kapacitet vid server: 3 * 500kbps = 1,5Mbps Växer linjärt med antalet tittare Internet-växel Skickar enbart data vidare. Ingen extra intelligens Multicast Endast en kopia av programmet sänds ut från streaming-servern I nätverkets växlar skickas data vidare till en eller flera intresserade mottagare => Mycket effektivt utnyttjande av nätverkskapacitet Men: fungerar endast vid direktsändning eller simulerad direktsändning Multicast-princip Exempel Bithastighet: 500kbps Antal användare: 3 Kapacitet vid server: 500kbps oberoende av antal användare Internet-växel Kopierar och skickar data vidare till dom som är intresserade. Medger förgrening av data i nätverket. Nätverksprotokoll UDP [User Datagram Protocol] Viktigare att det kommer fram fort än rätt. Passerar inte alltid brandväggar. TCP [Transmission Control Protocol] Det vanliga internet-protokollet. Används t.ex. för HTTP. 4
Nätversksprotokoll RTP [Real-time Transport Protocol] Bygger på UDP Anpassat för envägstransport av data/media RTSP [Real-Time Streaming Protocol] Hanterar kontroll av överföringen med RTP. HTTP-streaming / fast start Mediefilen förs över via HTTP Ingen egentligt streamingmekanism Snarare traditionell filöverföring Uppspelning startar när tillräckligt mycket förts över till spelaren Ingen sökning i materialet via servern Kvick spolning i material som förts över Hela mediefilen måste få plats på datorn Buffring = fördröjning Buffring Datornätverk är opålitliga när det gäller stabilt flöde. Genom buffring ökas stabiliteten i flödet vid uppspelning. Men fördröjningen i distributionskedjan blir då större Kan vara särskilt besvärligt vid direktsändning Buffring i codec Jämnar ut bithastigheten dataflöde Buffring i server Jämnar ut variationer i dataöverföring från Encoder dataflöde Buffring i server Jämnar ut variationer i dataöverföring från Encoder 5
Edge caching Edge caching princip Multicast verkar toppen, men fungerar bara för direktsändning Dessutom inte påkopplat i nätet i större utsträckning Hur hanterar vi kapacitetsproblemet vid unicast? = Bygg en distribuerad infrastruktur (Edge caching) Materialet kopieras ut till ett flertal servrar Dessa bör vara nätverksmässigt nära användaren Vid användning hänvisas användaren till den mest gynnsamma servern: Låg belastning för tillfället Närhet till användare Edge caching/lastdelning Lastbalansering Den ultimata lastbalanseringen: Alla har filmen hemma på DVD Film i allas uppspelningsenhet Edge-caching/ lastbalansering En central server Belastning på distributionsmekanismen På något sätt måste informationen transporteras! 6
Uppspelning Fristående spelarapplikation Quick Time Player Microsoft Windows Media Player Real Player m.fl. Naken lösning, men lättlagad Uppspelning Inbäddad videofönster (i webbläsare) Laddas som ett insticksprogram Kodas med <embed > och/eller < object > taggar i HTML Kan kräva meta-filer Meta-filer/ referensfiler Spelare med interaktivitet En fil som hämtas från webbservern med http. Innehåller information om medieströmmen. Används av spelaren för att ansluta till streamingservern. Bör skapas på förhand vid liveproduktion. 7
Spelare med interaktivitet Spelare med interaktivitet Baseras på databas + server-applikation Interaktion mellan script i webbläsare och server Kan vara knepigt beroende på olikheter i webbläsare. Interaktivitetsproducent Ev studiomonitor Encoder Webbserver Streamingserver Tittare Liveproduktion - förberedelse Rekognosera lokalen Kameraplacering Ljudupptagning Plats för programproduktion Ordna streamingkapacitet Telekomleverantör eller egen server? Liveproduktion - förberedelse Förbered material för sändningstillfället Power Point-bilder Vinjetter m.m. Programmera uppspelningsmiljön HTML + java-script + XML + DHTML Se till att stöd för interaktivitet fungerar. Serverapplikationer (php, asp, SQL, m.m.) 8
Liveproduktion, packa väskan Case med bild & ljudproduktion Ljudmixer, Bildmixer, Ev. Textgenterator Bandspelare för upp- & inspelning Monitorer Kameror, mikrofoner, stativ m.m. Sambandsutrustning Case med encoderdatorer och nätverksutrustning Livesändning, inför start Starta VB, vinjettslinga Starta encoder Anslut till streaming-server Lägg ut länkar till live-spelaren (Starta videoinspelning) Livesändning, efter Skapa on-demand-version Redigera materialet Komprimera igen, helst utan realtid Lägg in synkroniseringdata för bildväxling (ev. SMIL) Publicera on-demand-version på webben Ta semester Demonstration Live streaming Quicktime Broadcaster Gratis sändarprogramvara för Mac Firewire DV -> MPEG-4 i realtid. Quicktime Streaming Server På demodatorn Quicktime Player *också* på demodatorn 9
Exempel: Ramlös inbäddning Med chroma-key kan man skapa en gränslös uppspelningsmiljö. Banal teknikstudie, men ger kreativa möjligheter. Exempel: Panorama stream Med specialjox: Optik Codec Uppspelningsprogram En tillverkare: www.behere.com Get Insp(w)ired Australia Uppdrag från Ericsson Lansering av ny generation telefonväxlar Produktion av soffprogram & inslag Webbcastsändningar på Internet Internt webbcast till Ericssons interna nätverk Interaktivitetsfunktioner (Röstning & frågeställning) Synkroniserad bildväxling 10