2 Stimmen

Wie benutzt man loadPCMFromByteArray?

Konnte jemand die neue Sound-Methode loadPCMFromByteArray in Flash 11 erfolgreich einsetzen? Ich höre immer nur einen sich wiederholenden tickenden Ton, wenn ich ihn verwende.

Und auch gibt es eine Möglichkeit, die Tiefe (Bits) in dieser Methode zu setzen? Es scheint, dass diese loadPCMFromByteArray nur 32bit PCM-Daten versteht.

Ich habe nach Beispielen gesucht, aber ich habe keine funktionierenden Beispiele gefunden

Hier ist mein Beispielcode, bitte beachten Sie, dass ich kontinuierlich Daten zum soundBA (ByteArray-Objekt) hinzufügen und löschen Sie es nach der Übergabe an die loadPCMFromByteArray-Methode, auch ich bin gerade gezwungen, eine Überprüfung (8192 * 4) zu tun, da es wirklich scheint, dass die loadPCMFromByeArray-Methode nur 32-Bit-Audio-Samples versteht, wie kann ich es 8-Bit und 16-Bit-Samples zu lesen?

if (soundBA.bytesAvailable >= (8192 * 4 * channels))
{ 
    soundPlayer.loadPCMFromByteArray(soundBA, soundBA.bytesAvailable / 4, "float", false, 22050);
    soundChannel = soundPlayer.play();
    soundBA.clear();
}

0 Stimmen

Ich erhalte das gleiche glitchy / loopy Probleme bei meinen Experimenten. Wenn Sie eine Antwort gefunden haben, lassen Sie es mich bitte wissen oder posten Sie sie hier. Danke

1voto

TheArsenik Punkte 98

Ich suche das Gleiche wie Sie, aber ich habe bereits einen Teil der Antwort. Bevor ich versucht habe, die Funktion "loadPCMFromByteArray" zu verwenden, habe ich as3wavsound lib die eine Audiomanipulationsbibliothek namens " sazameki ". Diese letzte Bibliothek bietet Möglichkeiten, 8 oder 16 Bits in einen Zahlenvektor umzuwandeln. Sie müssen nur diesen Vektor nehmen und ihn in ein ByteArray mit schreiben:

var someByteArray:ByteArray = new ByteArray();
for (....){
  someByteArray.writeFloat(number);
}

dann geben Sie ihm die Funktion "loadPCMFromByteArray". Sie sollten einen Fehler haben, weil Ihre Position auf dem ByteArray nicht gut ist. Setzen Sie sie also zurück. Ihr endgültiger Code sollte so aussehen:

var flexSound:Sound = new Sound();
var someByteArray:ByteArray = new ByteArray();
for (....){
    someByteArray.writeFloat(number);
}
someByteArray.position = 0;
flexSound.loadPCMFromByteArray(someByteArray, length);
flexSound.play();

Ich hoffe, dass dies Ihnen helfen kann.

0voto

Ghazale Punkte 5

Ich kann loadPCMFromByteArray nicht verwenden, es gibt mir diesen Fehler:

Aufruf einer möglicherweise undefinierten Methode loadPCMFromByteArray durch eine Referenz mit statischem Typ flash.media:Sound.

_output.position =0;
mySound.loadPCMFromByteArray(_output, _output.length);
channel = mySound.play();

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X