私はnativescriptを初めて使い、iosバージョンアプリを開発しています。 Audio Queueコールバックの処理に問題があります。Nativescriptでios core audio(AudioQueue)にアクセスするには
デバイスのマイクで生のオーディオバッファデータをキャプチャする必要があります(入力レベルをミリ秒単位で評価する)1 これを行うには、カスタムプラグインからiOSネイティブAudioToolBox/AudioQueueNewInput APIを呼び出そうとしています。
最後に、
はここに私のコードです...それはエラーなしで実行されますが、コールバック「inCallbackProcは」解雇されることはありません。このコードを実行するときにvar kSamplingRate = 44100;
var inUserData = null;
var inCallbackRunLoopMode = kCFRunLoopDefaultMode;
var inFlags = 0;
//var outAQ = AudioQueueRef.alloc().init(); // error
//var outAQ = new OpaqueAudioQueue(); //error
var outAQ;
var inFormat =
new AudioStreamBasicDescription(
kSamplingRate,
kAudioFormatLinearPCM,
kLinearPCMFormatFlagIsFloat,
4,
1,
4,
1,
8,
0
);
var buffers = [null, null, null];
var audiomodule = {
inCallbackProc : function(
inUserData,
inAQ,
inBuffer,
inStartTime,
inNumberPacketDescriptions,
inPacketDescs
){
console.log("callbacked");
}
,record: function(){
console.log("recordstarting");
AudioQueueNewInput (
inFormat,
this.inCallbackProc.copy,
inUserData,
CFRunLoopGetCurrent(),
inCallbackRunLoopMode,
inFlags,
outAQ
);
for (i in [0, 1, 2]) {
AudioQueueAllocateBuffer(outAQ, 256, buffers[i])
AudioQueueEnqueueBuffer(outAQ, buffers[i], 0, null)
}
AudioQueueStart(outAQ, null);
}
};
module.exports = audiomodule;
app.jsが
var MyPlugin = require("myplugin");
exports.loaded = function(args) {
var page = args.object;
if (page.ios) {
MyPlugin.record();
}
};
、私は「エラーなしでコンソールログに "recordstarting" を見つけることができますが、見つけることができません
myplugin.ios.jsコールバック "。
私はこの文書を読んでいます。 NativeScript Doc - Marshaling
誰でも助けてくださってありがとうございます。
私は同様のオーディオプラグインがNativeScriptのために存在することを発見し、あなたがオーディオを再生すると、記録のためにそれを使用することができます - HTTPS ://github.com/bradmartin/nativescript-audio –
こんにちはNikolay、そのプラグインはAVAudioRecorderに基づいています。そのAPIは、待ち時間のために私のアプリには適していないかもしれません。 pls [this](http://stackoverflow.com/a/7402810/6606449)を参照してください。私は生のオーディオをキャプチャする必要があります。 – shige
あなたのプロジェクトには、生のオーディオをキャプチャするのに適したプラグインが見つかりませんでした。ただし、ここで説明した手順を使用できます.http://stackoverflow.com/questions/6039291/simplest-way-to-capture-raw-audio-from-audio-input-for-real-time-processing-on-aこの機能を提供する独自のプラグインを作成することができます。もう一つの選択肢は、生のオーディオサポートのbradmartinのプラグインレポに新しい問題を記録することです。 –