Wie Audiodaten von einem 'MediaStream' Objekt in einem C ++ Addon gelesen werden

11

Nachdem ich Blut und Tränen geschwitzt habe, habe ich es endlich geschafft, ein Node C ++ - Addon einzurichten und ein Web-Plattform-Standard-Objekt MediaStream definitiv in eine seiner C ++ - Methoden zu schieben. Um die Kompatibilität zwischen verschiedenen Versionen von V8 und Node.js zu gewährleisten, verwende ich Native Abstractions für Node.js (nan) :

addon.cc

%Vor%

addon.js

%Vor%

Für das, was es wert ist, funktioniert dies korrekt (d. h. es löscht den Rendererprozess nicht aus Sicht), und ich kann das Vorhandensein des Objekts MediaStream , z. indem Sie den Konstruktornamen von der C ++ - Methode zurückgeben:

addon.cc

%Vor%

Beim Aufruf von JavaScript über setStream würde dies die Zeichenfolge MediaStream zurückgeben, so dass das Objekt definitiv vorhanden ist. Ich kann auch das mediaStream -Objekt selbst zurückgeben und alles wird korrekt funktionieren, also ist es in der Tat das Objekt, das ich brauche.

Also, wie würde ich Audiodaten (dh Audio-Samples) von diesem MediaStream -Objekt in C ++ lesen? Als Nebenbemerkung würde das eigentliche Lesen (und Verarbeiten) der Daten in einer separaten Datei erfolgen std::thread .

Kopfgeldaktualisierung

Ich verstehe, dass dies einfacher / möglich wäre, wenn ich selbst Elektron und / oder Chrom kompiliere, aber ich möchte lieber nicht in diese Wartungshölle verwickelt werden.

Ich habe mich gefragt, ob das möglich wäre, ohne das zu tun, und was meine Forschung betrifft, bin ich überzeugt, dass ich zwei Dinge brauche, um das zu erreichen:

  1. Die relevanten Header-Dateien, für die ich glaube, dass öffentlich blinkt , sollten ausreichen
  2. Eine Chrom / Blink-Bibliotheksdatei (?) zum Auflösen externer Symbole, ähnlich der Datei node.dylib

Wie ich schon sagte, ich glaube, ich könnte Chrom / Blinken selbst erstellen und dann hätte ich diese Lib-Datei, aber das wäre eine Wartungshölle mit Electron. In diesem Sinne glaube ich, dass diese Frage letztlich auf eine C ++ - Verknüpfungsfrage zurückzuführen ist. Gibt es einen anderen Ansatz, um das zu tun, wonach ich suche?

Bearbeiten

ScriptProcessorNode ist in meinem Fall keine Option, da seine Leistung es in der Produktion fast unbenutzbar macht. Dies würde erfordern, Audio-Samples auf dem ui / main-Thread zu verarbeiten, was absolut verrückt ist.

    
John Weisz 26.02.2018, 18:03
quelle

0 Antworten

Tags und Links