This forum uses cookies
This forum makes use of cookies to store your login information if you are registered, and your last visit if you are not. Cookies are small text documents stored on your computer; the cookies set by this forum can only be used on this website and pose no security risk. Cookies on this forum also track the specific topics you have read and when you last read them. Please confirm whether you accept or reject these cookies being set.

A cookie will be stored in your browser regardless of choice to prevent you being asked this question again. You will be able to change your cookie settings at any time using the link in the footer.

MIXXX Streaming für LINUX und WINDOWS
#1
MIXXX Streaming für LINUX und WINDOWS


MIXXX ist eine freie DJ Software, die sich auch zum Erzeugen eigener Streams eignet.
Mit Mixxx werden in Echtzeit Audiosignale verarbeitet und auch in Echtzeit "live" ausgegeben.

Es ist also kein Nonlinearer Audioeditor!

EINSATZMÖGLICHKEITEN:

Man kann die Software vielfältig einsetzten:

- Zum Beispiel um eigenen Mix Tapes für das Auto zuerstellen. Dafür zeichnet man das Ausgangssignal von Mixxx auf.
- Man kann sie aber auch nur lokal als Ersatz eines klassischen Mischpultes einsetzten- zum Beispiel für Karaoke. Dann wird das Ausgangssignal an Lautsprecher gesendet.
- Ebenso kann man sie aber auch zum Broadcast von Mikrofonsignalen verwenden, wie zum Beispiel Ansagen zu Events.
- Eine weitere Nutzung ist zum Live Streaming von Webradios
- Und zu guter Letzt lassen sich auch fertige Playlisten abspielen.


FEATURES und HINTERGRUNFDINFO für die die verstehen wollen wie das funktioniert:

Die Vielseitigkeit erreicht das Programm duch die freie Konfigurationsmöglichkeit beliebiger Audiokarten.
So unterstützt es ausdrücklich hochwertige mehrkanalige ProfiKarten wie RME    https://www.rme-audio.com/startseite.html
Aber auch rechnereigene Soundkarten reichen für einfache Anwendungen.

Diese Audio Hardware wird benötigt wenn man reale externe Audioquellen und Senken anschliessen will.
Dann wird in Mixxx das Audiosignal digital abgemischt, und an die konfigurierten Ausgangs Kanäle gesendet.
Dieses werden in der Regel zum Anschluss von Abhörlautsprecher, Hinterbandkontrolle Kopfhörer, Mikrofonen, exteren DVD Player,
oder wie bei mir - als Zuspieler für mein externes Yamaha Studiomischpult verwendet.

Zum Streamen in Opensim ist dieser Aufwand aber nicht nötig. Da reicht eine simple Audio Onbord Karte zum Abhören für den Kopfhörer,
da das Streaming Signal intern erzeugt wird, und die Qualität der AudioHardware nicht in die Streamqualität eingeht.

Womit wir beim zweiten Kernfeatur von MIXXX wären, der Stream Erzeugung:
Dieses ist ein reines Software Feature, das jedoch zur Funktion einen physikalisch vorhandenen und richtig konfigurierten Master Ausgangskanal braucht.
Es liegt also am Master Ausgang denau das gleiche Summen Signal an, das gestreamt wird.

Mit einem physikalisch vorhandenen 2. Ausgang lässt sich einen autarke Abhöre zum Vorhören realisieren,
und zwar unabhängig von parallel erzeugten Master Ausgang & Stream.

Die Hardware Konfigurieren wir später nach der Installation unter "Einstellungen - Sound Hardware"


Kehren wir zurück zum konfigurierten Ausgang für das MIXXX Summensignal. Identisch wird der Stream erzeugt.
Dieser wird dann an den extra konfigurierten Distributions Server wie zum Beispiel Icecast geschickt.
Der Icecast Server erhält also nur einen einzigen Stream, egal wieviele Zuhörer den anwählen.

Aufgabe des Icecast Servers ist es dann diesen Stream zu vervielfachen, und zu verteilen.
Die Zuhörer machen also nur eine Verbindung zum Icecast Verteilserver auf.
Soviel zur Theorie. Detais zum Icecast werde ich gesondert posten wenn ich die Einrichtung eines Icecast beschreibe.


ZEITVERSATZ durch PUFFERUNG.

Wichtig ist noch folgendes:

Streaming ist (k)ein Echtzeitgenus für den Zuhörer.
Es ist nicht akzeptabel wenn beim Zuhörer der Stream zigfach zuckt, unterbricht oder ausfällt.
Dazu muss dem Zuhörer ständig die benötigte Datenmenge bereit stehen damit der Player diese kontinuierlich wiedergibt.
Das Internet aber ist alles andere als auf Echtzeitfgähigkeit augelegt. Es gibt keine reservierte Bandbreite - jedenfalls nicht für uns.

Somit muss die Datenverteilung im Mittel deutlich schneller sein als der Datenraten Bedarf des Streams,
und es müssen Puffermechanismen eingesetzt werden um Reserven auf Empfangsseite zu schaffen.

Dies wird an 2 Stellen realisiert:

1. Puffer des Icecast Servers auf der Eingangsseite des Streams, der von MIXXX ankommt. Das wirkt sich so aus das der Icecast den Stream "später" abspielt als er eingeht.
2. Puffer jedes Streamingclients des Zuhörers.
Passt die Puffergröße auf beiden Ebenen, so läuft der Stream ungestört, selbst wenn die Datenrate der Verbindung schwankt.

Aber: nun ist klar das jeder Zuhörer das Signal zu einer anderen Zeit hört.
Wenn es keine Zeitreferenz gibt, fällt das in der Regel nicht auf.
Das bedeutet: Der Stream ist absolut nicht geeignet um eine Startkommando zum Autorennen zu geben.

Wer den Stream inworld mit seiner Hinterband Kontrolle vergleicht, kennt es das es locker bis zu 20 Sekunden Zeitversatz gibt.
Daher muss man immer Hinterband hören um mitzubekommen das ein voraufgezeichneter Beitrag bereits beendet ist und Stille gesendet wird.
Umgekehrt dauert es ca 20 Sekunden bis inworld der erste Ton ankommt wenn man Senden startet.

Nun kann man auf den Gedanken kommen den Zeitversatz zu minimieren.
Ja, das ist möglich und konfigurierbar, aber dann wird es immer kritischer das es zum Stream Abriss kommt durch Buffer underrun.


BANDBREITEN ÜBERLEGUNGEN:

Beim Streamen wird kontinuierliche Bandbreite gebraucht, aber auch Reserven.
Die Reserven dienen dazu Lastspikes auszugleichen. Diese Spikes treten auf wenn ein Client zum Beispiel neu verbunden wird. Dann holt sich der Client "im Block" eine größere Datenmenge um seinen Abspielpuffer zu füllen. Erst dann startet der Client die Wiedergabe.
Ebenso fallen Spikes mittendrin an wenn ein Client durch Netzwerkschwankungen "Nachholbedarf" hat um seinen Puffer wieder zu füllen.

Der kontinuierliche Bandbreitenbedarf ist berechenbar, die Reserven muss man schätzen.
Aus beiden Werten ergibt sich wieviel Zuhörer maximal bei verfügbarer Bandbreite zugelassen werden können.
Auserdem muss bedacht werden wie zuverlässig die eigene Icecast Internet Anbindung ist, oder ob auch die Schwankungen unterliegt.


BANDBREITEN BERECHNUNG:

Pro Stream ist die Datenrate in MIXXX einstellbar. Das hängt am gewählten Codec, der die Bitratenrahmen vorgibt.
Typisch ist MP3 mit 192 bis 256kBits/sec. Diese bezeichne ich in der weiteren Betrachtung als "1x Stream"

In der Folge muss daher bedacht werden wo Streaming Client und Server stehen, um die Upload/Download Datenrate zu ermitteln.

Generell gilt folgender Bedarf:

1x Stream  als Upload vom MIXX Client zum IcecastServer
nx Streams als Download von Server zum Hörer, da Unicast Verwendung findet.
Leider funktioniert für uns noch kein Multicast im Internet, was die Bandbreite deutlich reduzieren würde.
Hinzu kommen die oben angesprochenen Reserven die individuell ermittelt werden müssen.

Nun kommt es darauf an wo der Server steht.
Ist MIXXX und Server daheim, so fällt der 1xStream in der Bandbreiten Berechnung weg, dafür benötigen wir nx Streams als Upload Rate unseres heimischen Internet Anschlusses.
Und zwar zusätzlich zum sonstigen Bedarf! Vergesst dabei auch nicht den Viewer und andere heimische Internet Nutzer.
Das wird schnell knapp bei einem DSL Anschluß. 4 Zuhörer machen schon 1MBit UPLOAD dicht- ohne Reserven.
Es geht also meist nur sinnvoll wenn man daheim Glasfaser hat, oder einen Server im Rechenzenrum.
Noch schlimmer sind shared Medium Anbindungen, wie Kabel, etc. Da teilt man sich die gekaufte Datenrate mit anderen Internetnutzern der gleichen Strasse/ des Häuserblocks, und hat absolut keine Planbarkeit was Verfügbarkeit und Latenz angeht. Steigt die Nutzung in der Strasse an, so steigt auch die Latenz und führt gerne zu Streamabbrüchen.

Gegen den Heimischen Standort spricht auch die Firewall Problematik, da ja jeder Zuhörer des Icecast Servers von extern den Zugriff initiert, und dies die Firewall zunächst verbietet. Macht man die Ports auf, reduziert man seinen Sicherheit im heimischen Netz.

Besser ist daher der Rechenzentrum Standort.

Hier eine Beschreibung und Skizze der Streaming Funktion in Englisch:

https://manual.mixxx.org/2.3/de/chapters...ng-servers



INSTALLATION

SICHERHEITS WARNUNG: Holt euch Software immer nur vom ORIGINAL PROJEKT SERVER!
Gerade bei Opensource Software ist es spielend einfach Trojaner in eine eigne Distribution hinein zu schmugeln,
und diese auf dem eigenen Download Portal anzubeiten. (Weil der Quellcode offen herumliegt und herunter geladen werden kann!)
Den richtigen Server findet man über Suche. Prüft an der Zertifikats Anzeige ob das als gültig angezeigt wird!


DOWNLAOD der MIXXX Software:      https://mixxx.org/download/

Stand 05.2022 ist die Version 2.3.2 aktuell.
Es gibt die für LINUX und WINDOWS. Wählt die 64Bit Version. Die Installationsanleitung wurde noch mit der 2.3.0 gemacht.
Wer sicher gehen will prüft die SHA256 Prüfsumme. (Beschreibung in anderem Artikel hier im Forum)


LINK ZUM MIXXX HANDBUCH:             https://manual.mixxx.org/2.3/de/


Der zum Streamen nötige MP3 Codec muss separat besorgt werden ( aus Lizens Gründen)
Dazu wird der LAME MP3 Encoder in der gleichen Bitzahl wie MIXX benötigt.
Bei Linux ist der Bestandteil der Distribution oder einfach als Paket nachwählbar.
Unter Windows ist Handarbeit angesagt, diesen bekommt man hier:   https://lame.sourceforge.io
Aktuell (09.2021)ist Version 3.100.



EINSTELLUNGEN in MIXXX:


KONFIGURATION der SOUNDHARWARE:

-BILD1-


LIVEÜBERTAGUNG einrichten:


Hier wird die Schnittstelle zu ICECast eingerichtet.

Dazu müssen die Settings des Icecast Servers bekannt sein, und ein Account dafür vorhanden.

ANNAHME der ICECAST KONFIGURATION:
Username: "source"
Passwort: "SpielsnochmalSam"
Namen des Streams: "stream"
Verwendeter Port des Steams: 10000
IP des Icecast servers unter dem der MIXXX Client diesen erreicht:  10.38.10.20



Daraus abgeleitete SETTING für MIXXX:

   

Serververbindung:
TYP: Icecast2                 ( ist aktuell immer der Fall wenn Icecast Server installiert werden)
Host: 10.38.10.20           (Das ist die IP unter der MIXX den Icecast erreicht, das muss nicht die gleiche IP sein unter der die Zuhörer den Server erreichen!)
Anmeldung: "source"       (das ist der Username des zugehörigen Icecast Streams)
Einhängepunkt: "stream" (unter diesem Stream Namen werden die Zuhörer den Stream finden)
Port: 10000
Passwort: "SpielsnochmalSam"

Stream Einstellungen:
Öfentlicher Stream: NEIN (Setzten dieses Häckchens bewirkt das der Stream angemeldet im Icecast Radio Verzeichnis: dir.xiph.org) Dies ist die Einstellung für einen profesionell betriebenen, angemeldeten Internet Radio Kanal bei uns.

UTF-8 Kodierug für Metadaten: NEIN. (es geht um den Zeichensatz in dem Liedertitel, Interpret etc mitgesendet wird.)

Ogg Vorbis Metadaten dynamisch aktualiesieren: NEIN ( bei MP3 ohne Wirkung)

Stream NAME: zum Beispiel "Meine Rede zur Eröffnung". (Ohne Belang, nur Anzeige Funktion beim Zuhörer)

Genre:  "Live" oder Ähnliches- dient nur bei Anmeldung an Radio Verzeichnis der Klassifizierung

Kodierung:
Bitrate: 192 oder 256 oder Ähnliches, je nach Qualitätsbedarf und zur Verfügung stehenden Icecast Srver Download Bandbreite
Format: MP3 für Opensim
Kanäle: Stereo

Benutzerdefinierte Metadaten aktivieren: Geschmacksache. Hier wird definiert ob und wie Interpret und Titel gesendet werden
Interpret: Einstellen der Notation der Anzeige oder statischer Wert
Titel:    Einstellen der Notation der Anzeige oder statischer Wert



Anmerkung: Dies ist nur ein technisches Tutorial. Bevor ihr Streamt, unterrichtet euch bitte über die rechtliche Situation in eurem Land.


Viel Spaß beim Testen

Tron
Zitieren
#2
Hoch interessanter Beitrag zum Thema Streaming. Ich könnte mir einen eigenen Stream auf einer Region schon vorstellen. Allerdings nicht gefüllt mit den neuesten Musik Charts! Eine speziell zugeschnittene Geräuschkulisse (Vogelstimmen, Meeresrauschen, Strandgeräusche) für eine Naturparksim aber schon. Ton eben alles selber aufgenommen und zugeschnitten. Damit wird die Umgebung noch realistischer- auch für längere Zeit. Vogelstimmen lassen sich in der Zeit versetzt anordnen. Dies könnte realistisch wirken, wenn ein Specht nur einmal zu hören ist. Wolfsgeheule z.B viel entfernter und auch leiser, weil der Pegel angepasst wurde. Wildschweingrunzen gibt es auch nur einmal usw. Urheberrechtsverletzungen sind ja in diesem Fall nicht möglich.
All done!
Zitieren
#3
Super Idee von dir Lukas, das für dezentrale Ambient Geräusche zu nutzen.
Denn die Sound Wiedergabe per LSL Befehl ist mehr als leidlich. Man hört das nur im geringen Umkreis, um das Prim mit dem Script herum.
Damit lassen sich also nur punktuelle Geräuschquellen, wie ein laufender Motor, darstellen.
Das war mir besonders bei Meeresrauschen ärgerlich wenn die gesamte Insel eigentlich diesen Wellenschlag Sound bräuchte.
Wenn man aber einen Loop auf dem Icecast Server mit Wellengeräusch startet, dann könne man alle Inseln gleichzeitig damit versorgen.
Ich werde das mal testen, ich habe etliche Wellen Videos von 4m Wellen auf den Kanaren gedreht.

Für Wald Ambiente musst du eine Sound Datei vorher nonlinear als Loop abmischen. Dafür eignet sich Audigy

Mein Gedanke war eigentlich den Stream für online Schulungen zu verwenden.

Gruß Tron
Zitieren
#4
Der Gedanke einen Ambient Sound Stream aufzusetzten nimmt langsam Gestalt an.

Zunächst muss der Mixxx dafür sinnvollerweise direkt auf dem Server installiert werden wo der ICECast läuft.
Dazu muss der Server eine beliebige Soundkarte aufweisen. Wir werden ja den Ausgang nie anschliessen, aber er dient als Abgriffpunkt des erzeugten Streamsignales. Bei meinem Server ist kein Audio Device onbord vorhanden- da muss ich nach einer virtuellen Soundkarte suchen.
Diese gibt es um Ausgaben in bestimmten Dateiformaten zu ermöglichen. Ich werde sie daher einfach "missbrauchen".

In dem Mixxx auf dem Server muss dann der AUTODJ gefüttert werden.
Der dient normalerweise um Playlisten automatisch abzuarbeiten. Sowas findet sich bei kleinen Radiosendern im Einsatz um die Nacht zu überbrücken.

Wenn man anstelle von Musikdateien kleine Audio Schnipsel reinlegt- Lukas Idee mit verschiedenen Vogelstimmen- und auf Random Play stellt- so sollte man eine gemischte Soundkulisse bekommen. Fertig wäre der "Wald Sound".

Natürlich läßt sich das auch für verschiedenes Wellenrauschen oder Halloween Sondkulissen realisieren.
Aber für jeden Stream braucht man eine eigene MIXXX Instanz.
Zitieren
#5
Punktuelle Geräuschquellen dürfen aber nicht fehlen, da z.B das Holz im Kaminfeuer nur in unmittelbarer Nähe zu hören ist. Das gleiche gilt für einen Frosch, der nur am Teich herum quakt. Eine gelungene Kombination von Ambiente und punktuellen Geräuschquellen (Schritte auf dem Waldboden) macht es bestimmt zum Erlebnis. Privat habe ich zu Hause die Soundkarte von 'Creative' die Sound Blaster Z. Das Teil ist absolut gut im Sound! Habe aber noch 4 ältere PCI Karten und kann sie nicht wegwerfen. So lange die Buchsen nicht ausgeleiert sind, möchte ich auch nichts anderes nutzen. Creative bleibt für mich als Anwender die Nr 1.! Aus der Soundkarte raus geht es dann zur Röhrenendstufe.

   
All done!
Zitieren
#6
Für die Wiedergabe des Sounds brauchst du natürlich eine gute Soundkarte.

Aber für die Erstellung eines Streams normalerweise nicht wenn der nicht von extern zum Rechner zugeliefert werden soll-
Also die Wandlung eines Tonsignals in ein Datenformat benötigt wird.
Dieses Szenario hast du wenn du ein externes Audio Mischpult einsetzt, dessen Bus Ausgang zum Streaming in den Rechner rein geht.
Das habe ich mit einem Yamaha O3D und einer RME Soundkarte die symetrisches analoges Audio und Digitales AES/EBU Audio verarbeitet, realisiert.
Das ist aber Ausstattung für einen kleinen News Sender, und für Hobby wie Opensim Streaming absolut überdimensioniert, und viel zu kostspielig.

Die Stream Erstellung selber ist reine Codec Rechenarbeit.
Als Zulieferung dienen Daten - Ebenso kommen als Ergebnis Daten heraus. Diese werden dann als Stream verschickt.
Insoweit kann man auf dem Server komplett auf echte AudioHardware verzichten,
und eine Software Emulation, auch "Virtuelle Soundkarte" genannt reicht völlig aus.

Auch diese ist eigentlich überflüssig, aber die MIXXX Konfiguration erfordert sie als Einstellung.
Daran sieht man das MIXXX eigentlich für die Live Ausgabe auf einer lokalen Party gedacht ist- und da braucht man natürlich einen Ausgang aus dem Rechner um den Sound in die Verstärker und Lautsprecher zu übertragen.

Beim Streaming hingegen wird das errechnete Datensignal vor der Ausgabe abgezweigt und auf den Stream umgelenkt.
Parallel aber wird der Stream auch auf den eingestellten Soundkarten Ausgang zur Hinterband Kontrolle ausgegeben.
Wenn wir das System für Life Streaming mit Micro einsetzten würden, wäre dies der Abhörpunkt für einen Kopfhörer, da dieser Abhörpunkt noch kein großes Delay aufweist.

Natürlich sollte man dann das gesendete Signal selber wieder (separat) empfangen und (periodisch) überwachen, aber das ist dann je nach Einstellung der Puffergrößen ca 20 Sekunden von der Erstellung verzögert, was daher als Abhöre absolut ungeeignet ist. Typischerweise würde man daher diesen Rückempfang auf Messgeräte zur Überwachung geben.

So schliesst sich der Kreis.
Zitieren


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste