AW: 1 Sender streamen an mehrere Leute online
Hallo,
der Windows Media Encoder oder wie er jetzt heißt Microsoft Expression Encoder kann das auch. Leider ist mir der Name einer Linuxapplikation entfallen die das auch kann.
Dann reicht nämlich auch ein kleiner Vserver mit 100 Mbit/s Anbindung un ca. 1000 GB Traffic für 4-5 Mann. Allerdings muss ich auch Grimeton recht geben, dass bei den Serverdiscountern ganz gern mal die Leitungen überlastet sind oder das Routing nicht wirklich intelligent klappt und die Latenzen in die Höhe schießen.
Also von Windows würde ich bei sowas die Finger lassen... Es sei denn du arbeitest mit VLC. Der kann ganz ohne Probleme den Stream von TVHeadend ziehen, das ganze auf ein brauchbares Maß einstampfen (encoden) und dann wieder weiterreichen. Damit hast du alles in einem Akt erledigt. Allerdings brauchst du dafür auch Rechenpower.
Um mal eine Idee zu geben:
Ich encode eine Serie also einen Stream 1920x1080i, mit einer Sprachspur der 45 Minuten dauert im zwei-pass-Verfahren in nicht ganz 40 Minuten. Dafür hab ich nen Server mit 4 Quad Core Xeons und 128GB Ram der seine Daten über ein SAN bezieht und schreibt. Der Datendurchsatz zur Platte ist da garnicht mal so das Problem. Wirklich problematisch ist halt das Encoding selbst. Würde ich das im ein-pass-Verfahren machen könnte ich den Stream in ~18 Minuten encoden. Bedeutet ich bräuchte die halbe Leistung um einen Live-Stream in 1080i mit einer Tonspur on-the-fly zu encoden so das am Ende auch wirklich was brauchbares rauskommt.
Achso, was kommt da raus...
Code:
avprobe Mr._Robot_S01E10_eps1.9_zer0_day.avi.mp4
avprobe version 9.18-6:9.18-0ubuntu0.14.04.1, Copyright (c) 2007-2014 the Libav developers
built on Mar 16 2015 13:19:10 with gcc 4.8 (Ubuntu 4.8.2-19ubuntu1)
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'Mr._Robot_S01E10_eps1.9_zer0_day.avi.mp4':
Metadata:
major_brand : mp42
minor_version : 512
compatible_brands: isomiso2avc1mp41
encoder : HandBrake 0.10.1 2015030800
Duration: 00:54:00.27, start: 0.000000, bitrate: 1768 kb/s
Stream #0.0(und): Video: h264 (High), yuv420p, 1280x720, 1568 kb/s, 23.98 fps, 90k tbn, 180k tbc
Stream #0.1(und): Audio: aac, 48000 Hz, stereo, fltp, 192 kb/s
# avprobe output
In dem Fall hat die Folge eine Länge von 54 Minuten und wurde auf 720p eingedampft. Dann hast du eine Dateigröße von 685MB für eine knappe Stunde Film.
Das kannst du jetzt runterrechnen auf den Datendurchsatz den du pro Sekunde brauchst:
(685*1024) = 701440 Kbytes. Das durch die Sekunden die die 54 Minuten haben, macht 701440/(54*60)=216. Also hast du 216Kbyte/s pro Sekunde, also 1728kbit/s. Da kommt dann noch Overhead vom Protokoll drauf dann dürftest du bei 1850kbit/s sein. Das ist der Durchschnittswert. Wenn sich viel im Bild ändert geht das auch mal hoch auf 5MBit/s... Wenn sich wenig ändert runter auf 500kbit/s.
Den Stream umzubiegen und durch einen Encoder laufen zu lassen geht übrigens nur, wenn am anderen Ende Geräte stehen die damit umgehen können. Ich kann zwar weiterhin h.264 oder auch MPEG2 verwenden, wenn die Daten aber zu stark gepackt sind (nichts anderes ist encoden), dann reicht die Rechenleistung bei den meisten Receivern nicht mehr aus um daraus wieder ein bewegtes Bild mit passendem Ton zu machen. Deshalb sind die Streams auf dem Transponder auch so groß und ineffizient weil die 50 Euro Receiver damit auch umgehen können müssen und stark encodiertes h.264 kann die $5 CPU in den Dingern halt nicht.
Was du auch nicht unterschätzen darfst, ist der Server den du brauchst. Die meisten Anbieter bieten mittlerweile unmengen an Traffic an so das du da nicht in ein Problem laufen solltest. Da die Daten des Videostreams aber on-the-fly weitergeleitet werden müssen, können aussetzer einer virtuellen Maschine (VPS), bereits reichen um einen Stream zum hängen zu bringen. Das Problem besteht darin das die 5 Euro VM auf einem Host läuft auf dem Viele 5 Euro VMs laufen. Kann man sich schnell ausrechnen was die da drauf packen. Wenn der Host, auf dem die VMs laufen, 64GB Arbeitsspeicher hat, und du 4GB für den Host abziehst dann bleiben 60GB übrigt. Verbraten die jetzt pro VM 512MB, dann hast du 120 VMs auf dem gleichen Host laufen. Wenn jede VM 10GB Speicherplatz hat sind das locker realisierbare 1,2TB. Von daher ist meine Rechnung garnicht so abwegig. 2-3 Netzwerkkarten in das Ding und ne Quad Core CPU und schon hast du den typischen Host der für VMs in der Preisklasse verwendet wird.
Wenn jetzt mehrere VMs gleichzeitig Rechenleistung ziehen kanns schnell eng werden. Interrupts stehen auch nicht unbegrenzt zur Verfügung. Und weil die Anbieter immer so ne Mischrechnung machen, wo es darum geht möglichst viele VMs gleichzeitig auf der Hardware laufen zu lassen die dann alle gemeinsam nicht wirklich viel machen, kannste dir ausrechnen was du mit so nem VPS wirklich auf die Beine stellen kannst.
Du brauchst dann aber auch ein Gerät(DVB IP Server) der bei dir läuft und die Sognale vom SAT, Kabel oder terr. umsetzt. Wenn das 24h 7 Tage die Woche laufen soll ist eine redundante, effiziente und flexible Lösung gefragt.
Alles andere macht keinen Spass

.
MfG
Seh ich das Problem nicht
Cu