Gibt es nicht dank ALSA und Co. noch Möglichkeit 4: Simultaner Zugriff auf Sound Devices?
jhr
Gibt es nicht dank ALSA und Co. noch Möglichkeit 4: Simultaner Zugriff auf Sound Devices?
jhr
Das entspräche dann Lösung 2: Statt einem REC-Thread der im Nachhinein die WAV-Datei zerlegt, nehmen mehrere Threads parallel auf.Zitat von jhr-online
Einfacher zu programmieren, braucht dafür mehr Ressourcen.
Frage an die Code-Entwickler: Funktioniert das?
Andreas
Hmm. Meine Idee (was auch ins bestehende Konzept ganz gut passt):
Es gibt eine "Auswerter"-Klasse für die Aufnahme. Die wird einmal oder mehrmals als Modul (Objekt) erzeugt.
Jedes Modul macht eine Datei und weiß, wann es mit der Aufnahme aufhören soll. Die kommen dann in eine Warteschlange (technisch: vector) und bekommen dann schön nacheinander die digitialisierten Daten übergeben. Dann kann jedes Modul für sich die Aufnahme auf die HDD schreiben. Egal, was die anderen machen.
Ist die Aufnahme fertig müßte sich das Modul aus der Warteschlange abmelden.
Ungefähr so:
Sound-Device (Block aus Float-Werten) -> [Auswerter-Module] -> Aufnahmemodul 1 -> Aufnahmemodul 2 -> Aufnahmemodul 3 ...
Muss ja nicht jedes Modul für sich ständig neu digitialisieren. Machen die Auswerter auch nicht. Die bekommen die digitalen Daten auch fertig präsentiert.
Nur zum Verständnis: Will man denn digitalisierte Daten aufnehmen? Ich dachte für die Aufnahme nimmt man die Rohform...
Ach, und was meinst du von der Protokoll-sache? Aufnehmen nur mit Zeitangabe oder auch endlos?
jhr
OK. heißt das (in Kurzform für die anwesenden Nicht-entwickler wie mich):Zitat von Buebchen
monitord kann ohne probleme x-fach parallel aufzeichnen?
Folglich könnten diverse Clients parallel REC-Kommandos an den Server senden.
Um die Clients dann im Protokoll auseinanderzuhalten müsste man eine Art "Auftrags-ID" festlegen, damit der Client später seinen Aufzeichnung findet. Das würde gewährleisten, dass a) mehrere Clients parallel und b) ein Client parallel mehrere Kanäle aufzeichnen können.
Beispiel:
C->S (aufnahme start timed)
230:(Soundkarte):(Kanal):(Dauer Sec):(Dateiname HEX)
oder
C->S (aufnahme start infinite)
231:(Soundkarte):(Kanal):(Dateiname HEX)
wobei man sich da ein Kommando sparten könnte und einfach 230 mit Zeitangabe 0s übermittelt, um eine langfristige Aufnahme anzuleiern
S->C (aufnahme gestartet)
131:(Dateiname HEX):(Auftrags-ID) -- die ID erstellt der Server so quasi aus einer Kombo: IP des Clients plus /dev/random
...danach...
S->C (Aufnahme fertig)
132:(Dateiname HEX):(Auftrags-ID)
zwischendrin könnte dann auch noch kommen:
C->S (Aufnahme abbrechen)
239:(Dateiname HEX):(Auftrags-ID)
S->C (Aufnahme fertig)
132:(Dateiname HEX):(Auftrags-ID)
oder der Client sendet das 230er Kommando nochmal und der Server verlängert einfach den REC-Vorgang.
klingt das plausibel?
Andreas
Das trifft genau den Kern der Idee. Wie man das ganze jetzt im Client am besten regelt ? Tja, das ist noch zu definieren.
Ggf. müßte man so eine Art "Aufnahme-Manager" schreiben. Denn jeder Client hat seinen eigenen Thread, der ihm Daten sendet und seine Anfragen erstmal bearbeitet.
Jetzt könnte der Thread dem AM irgendwie mitteilen:" Hey, mach mal ne Aufnahme ...". Das "irgendwie" müßte noch definiert werden.
Ähnlich stelle ich mir später auch den direkten Live-Audiostream vor. Wobei das noch etwas knifflig ist, die Daten zum Client zu bekommen.
Ansonsten glaube ich, könnte das so einigermassen laufen. Ggf. wird das nur bei kleinen CPUs schnell das System überlasten. Muss man dann mal austesten...
Halte ich für simpel. Der Client erledigt die Auswertung und setzt das REC-Kommando ab. In der Client-Konfig hinterlegt der admin, in welchem LAN-Pfad die Rec-Dateien dann zu finden sind. Um das mounten des LAN-Pfades muss sich vor dem Client-Start der Anwender kümmern.Zitat von Buebchen
Wo. Auf dem Client oder Server?Zitat von Buebchen
Wobei ich immer noch glaube, dass man hier nicht das Rad neu erfinden und was Neues programmieren muss. Hier liesse sich doch sicher was bestehendes wie VLC nutzen. Das ist Open Source und unter Win, Mac und Linux verfügbar.Zitat von Buebchen
Parallele Aufzeichnungen von zwei bis drei 22-khz-Mono-Streams sollten auch alte 300-Mhz-P2-CPUs noch hinbekommen.Zitat von Buebchen
Andreas
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)