Après une sueur de sang et de larmes j'ai enfin réussi à mettre en place un Nœud C++ addon et d'enfoncer le web, une plate-forme standard MediaStream
objet dans l'un de ses méthodes C++ pour de bon. Pour la compatibilité entre les différents V8 et Node.js versions, je suis aide Maternelle Abstractions pour Node.js (nan):
addon.cc
NAN_METHOD(SetStream)
{
Nan::HandleScope scope;
v8::Local<v8::Object> mediaStream = info[0]->ToObject();
}
addon.js
setStream(new MediaStream());
Pour ce que ça vaut, cela fonctionne correctement (c'est à dire qu'il n'anéantit pas le moteur de rendu processus à vue), et je peux vérifier la présence de l' MediaStream
objet, par exemple, par le retour de son constructeur nom du C++ méthode:
addon.cc
info.GetReturnValue().Set(mediaStream->GetConstructorName());
Lorsqu'il est appelé à partir de JavaScript par setStream
, ce serait de retour la chaîne MediaStream
, de sorte que l'objet est bel et bien là. Je peux aussi retourner l' mediaStream
objet lui-même et tout fonctionnera correctement, donc c'est en effet l'objet dont j'ai besoin.
Alors, comment pourrais-je lire des données audio (c'est à dire des échantillons audio) à partir de ce MediaStream
objet en C++? Au passage, les données réelles de lire (et de traitement) pourrait être fait en séparer std::thread
.
Bounty Mise À Jour
Je comprends que ce serait un peu plus facile/possible si je ont été de la compilation d'Électrons et/ou de Chrome moi-même, mais je préfère ne pas en arriver à l'entretien de l'enfer.
Je me demandais si il serait possible, sans le faire, et dans la mesure de mes recherches, je suis convaincu que j'ai besoin de 2 choses à faire ceci:
- Pertinentes fichiers d'en-tête, pour qui, je crois, clin public devrait être suffisant
- Un chrome/clin fichier de bibliothèque (?), pour résoudre les symboles externes, de même pour le nœud.dylib fichier
Aussi, comme je l'ai dit, je crois que je pourrais compiler chrome/blink moi-même et puis je l'aurais ce fichier lib, mais ce serait une maintenance de l'enfer avec des Électrons. Avec cela à l'esprit, je crois que cette question dépend en définitive un C++ reliant question. Est-il une autre approche pour faire ce que je suis à la recherche?
Modifier
ScriptProcessorNode n'est pas une option dans mon cas, comme ses performances les rend presque inutilisable en production. Cela nécessiterait de traiter des échantillons audio sur l'interface utilisateur/thread principal, ce qui est absolument fou.