Streaming media

Streaming media eller mediestrømme er media, der bliver konsumeret (læst, hørt, set) i takt med, at det bliver leveret. Det modsatte princip er, at man kopierer mediet, hvorefter man kan bruge det.

Streaming er selve det, at media bliver distribueret over et datanet – de fleste andre leveringssystemer er enten en signalstrøm (radio, TV medierne) eller en ikke-signalstrøm (bøger, videokassetter, lyd-CD).

Ordet "stream" kan oversættes til dansk som en strøm, og det bliver også anvendt som et verbum, hvor det betyder det at levere medier i "strømmende form".

Resten af denne artikel diskuterer streaming media-teknologier anvendt via datanet.

Historie 
Forsøg på at præsentere media via computere, kan dateres helt tilbage til midten af det 20. århundrede. Der kom dog ikke de store fremskridt i flere årtier pga. den høje pris og begrænsende computerudstyr.

Akademiske eksperimenter i 1970'erne etablerede de grundlæggende begreber og muligheden af streaming media på computere.

Op gennem 1980'erne blev hjemmecomputere kraftige nok til at præsentere media. De vigtigste teknologiske problemstillinger var:
 Have nok CPU-kraft og databusbåndbredde til at understøtte de fornødne datahastigheder
 Understøtte lavforsinkelse computer-interrupts i styresystemet for at hindre buffer underløb

Dog havde datanettene stadig for lidt båndbredde, og media blev formidlet over ikke-streaming kanaler/dataprotokoller. I 1990'erne blev CD-ROMmen den mest udbredte måde at distribuere media til computere. 

I de sene 1990'ere så man:
 større datanet båndbredde – specielt ud til slutbrugeren
 øget adgang til datanet – især internettet
 Anvendelse af standardprotokoller og dataformater som f.eks. UDP, TCP/IP, HTTP og HTML
 kommercialisering af internettet
Disse fremskridt i datanet kombineret med stærkere hjemmecomputere og moderne styresystemer gjorde streaming media praktisk og økonomisk muligt for almindelige forbrugere.

Teknologi 
Et streaming media system består af mange gensidigt afhængige teknologier. Videokameraer og lydoptagere skaber de rå medier.
 Editorer anvender composition tools til at kombinere de rå medier til afsluttede værk.
 Servere gemmer media og gør dem tilgængelige for mange mennesker.
 Klienter henter media fra serverne og får dem præsenteret til brugeren.
Servere og klienter gemmer media i forskellige filformater; de sender og modtager dem i forskellige streamingformater.

Servere og klienter kommunikerer via datanet via dataprotokolstandarder. Servere koder media til en datastrøm med henblik på sending; klienter modtager datastrømmen og afkoder den med henblik på præsentation; codec (COding + DECoding) udfører kodningen og afkodningen.

Media er i dag omfattende. Med dagens teknologi er hukommelsesmedier og transmissionspriserne stadig betydelige;
derfor bliver media ofte datakomprimerede, når de gemmes eller sendes som datastrøm.

En media datastrøm kan sendes på anfordring (on demand) eller live. On demand datastrømme kan have været gemt på servere i lang tid og bliver sendt, når en bruger ønsker det. Live datastrømme er kun tilgængelig på samme tid som de aktuelle streamede begivenheder finder sted.

Dataprotokol udfordringer 
Selve det at designe datanetprotokoller til at understøtte streaming media rejser mange problemstillinger.

Datagramprotokoller som f.eks. UDP sender media datastrømmen via datapakker kaldet datagrammer. Dette er simpelt og effektivt, men pakkerne går i en del tilfælde tabt eller bliver forvansket under transporten. Afhængig af protokollen og mængden af tab (se QoS), vil klienten klare en lødig præsentation pga. fejlkorrektions- og interpolationsteknikker, men i slemme tilfælde falder præsentationen ud permanent eller "kun" intervalvis.

RTP, RTSP og RTCP dataprotokollerne blev specielt designet til at datastrømme media over datanet. De er faktisk en overbygning til UDP.

TCP garanterer korrekt levering af hver en bit i media datastrømmen, men dette opnås via timeouts og genfremsendelse som er kompleks at implementere. Det betyder også at datastrømmen går midlertidig i stå i "længere tid", hvis forbindelsen falder kortvarigt ud. Dette håndteres og minimeres i dag i klienterne ved at gemme noget af datastrømmen i en buffer så udfaldene får mindre betydning for præsentationen.

En anden problemstilling er at firewalls mange gange som standard konfigureres til at blokere mange af de UDP-porte som mange gange anvendes, derfor falder systemerne som sidste udvej over på TCP. UDP-portene lukkes pt. pga. af kombinationen; øgelse af sikkerheden og fordi mange firewalls ikke understøtter medlæsning af media forhandlingerne (f.eks. i RTSP) med henblik på dynamisk åbning for de ønskede UDP-porte. Anvendes NAT, som faktisk anvendes de fleste steder i dag 2005, kræves endnu mere processering af routeren eller firewallen.

Unicast dataprotokoller sender en separat kopi af datastrømmen fra serveren til hver klient. Dette er simpelt, men kan lede til massiv udsendelse af ens data på datanettet. Multicast dataprotokoller sender kun en datastrøm ud på datanettet, som så duplikeres automatisk ud på alle datanetforbindelser, hvor der er brug for det. Dette er båndbreddemæssigt betydeligt mere effektivitet, men er mere kompliceret at implementere. Desuden skal alle netværk routere (og/eller netværksswitche) have understøttelse for multicast protokollerne som er nødvendige. I netudstyr som understøtter IPv6 er understøttelse af multicast standard. 

I 2005 har de fleste af internettets routere ikke tilstrækkelig understøttelse af multicast protokoller og mange firewall blokerer dem.  Multicast er mest praktiserbar for organisationer, som driver deres eget datanet som f.eks. universiteter.

Streaming media systemer 
 FFmpeg
 Helix Community
 Icecast
 IceShare P2P Icecast protocol
 MuSE
 MPEG-4
 Ogg
 PeerCast
 Peercasting P2P streaming
 QuickTime
 RealSystem
 SHOUTcast
 VideoLAN
 Windows Media
 Zina (Open-source alternative to Andromeda written in PHP)

Codecs 
 DivX
 Quicktime
 RealAudio
 RealVideo
 RealOne
 Windows Media Audio (WMA)
 Windows Media Video (WMV)
 Xvid – et åbent format

Dataprotokoller 
 HTTP
 MMS
 RDP
 RTP
 RTCP
 RTSP
 UDP

Filformater 
 AVI
 ASF -- Windows Media
 DivX
 FLV -- Flash
 MKV -- Matroska
 MP4 -- MPEG
 mp3PRO
 Ogg Vorbis audio
 Ogg Theora video
 RM -- RealTime Media
 QT -- QuickTime
 WebM
 WMV -- Windows Media
 XviD

Beskrivelsesformater 
 SDP – Session Description Protocol
 SMIL – Synchronized Multimedia Integration Language

Se også 
 Webradio (audio)
 Webcast (video)
 Internet stationsliste
 Electronic Frontier Foundation
 Center for Democracy and Technology
 Web TV

Peer-to-peer computing
Multimedia
Streaming