問題タブ [extaudiofile]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
556 参照

macos - AVAudioFormat initStandardFormatWithSampleRate は正しくないストリームの説明を返しますか?

ExtAudioFileCreateWithURL で PCM オーディオ ファイルを書き込もうとすると、「fmt?」というメッセージが表示されます。2 チャンネル オーディオ フォーマットを使用するとエラーが発生する (Mac OS X、SDK 10.10)

でオーディオ形式を作成します

また、アプリで AUGraph のオーディオ形式として使用します。

AUGraph は 1ch と 2ch の両方の形式で正常に動作しますが、ExtAudioFileCreateWithURL でオーディオ ファイルを書き込もうとすると、1ch と 2ch でのみ動作し、「fmt?」という結果になります。エラー。

次のテストを実行すると...

...これはコンソールの出力です:

mBytesPerFrame フィールドと mBytesPerPacket フィールドに違いがあるはずではありませんか? それとも、ここで何かが恋しいですか?

0 投票する
1 に答える
135 参照

ios - ExtAudioFile - メタデータの設定方法

ExtAudioFileWriteAsyncを使用してオーディオ コンテンツをm4aファイルに書き込んでいますが、完全に機能しています。ただし、エクスポートしたファイルにメタ データも追加したいと考えています。

これはまったく可能ですか?もしそうなら、どのように?

どんな助けでも大歓迎です。

0 投票する
1 に答える
447 参照

ios - Core Audio - オーディオ ファイルの先頭または途中 (末尾以外の場所) にデータを書き込みます。

だから、私が取り組んでいるオーディオ録音iOSアプリがあります。私のアプリでは、ユーザーが選択したファイル (ドキュメント ディレクトリ内) の任意の場所にオーディオを書き込む必要があります。これにより、そこにあるオーディオが上書きされます。

例: 3 分間の音声を録音し、スクロールして 2 分目に戻り、再び 10 秒間録音を開始します。現在、2:00 ~ 2:10 に新しいオーディオが含まれており、古いオーディオは削除されています (この例では、オーディオ ファイルは長くなりません)。

私は EZAudio を使用しており、何度でも録音と一時停止を行うことができ、最後に追加し続けます。ファイルを逆方向​​にシークしてそこから記録するために使用するつもりでしたがExtAudioFileSeek、ファイルが読み取り専用として開かれている場合にのみ使用できます。

私が望まないこと:別のファイルに記録したくなく、この方法を使用して2つのファイルを一緒に追加します: https ://stackoverflow.com/a/10562809/1391672 これに関連するかなりの読み込み時間があります. iOS アプリ Voice Memos は、ファイルを瞬時に追加します。

ExtAudioFileWriteAsync先頭にオーディオを追加するために使用できますか? または、指定されたサンプルの場所で? 私が見るべき別の方法はありますか?

0 投票する
1 に答える
623 参照

ios - 拡張オーディオ ファイルを使用したオーディオ ファイルの書き込みと読み取り

ExtAudioFileWriteAsync を使用して、デバイス録音の使用中にオーディオ ファイルを書き込んでいますが、録音が終了したら、ExtAudioFileRead 関数を使用して読み込もうとしますが、取得したサンプルは、私が書いているサンプルとは異なります...なぜこれが起こる可能性がありますか?

書き込み用:

読むために:

ところで、デバイスのオーディオを取得するためにNovocaineプロジェクトを使用しています。Novocaineコードまたは他のプレーヤーで保存されたオーディオを再生できます。

ExtAudioFileRef 出力を書き込む場合:

outputFileDesc の場所

AudioStreamBasicDescription outputFileDesc = {44100.0, kAudioFormatMPEG4AAC, 0, 0, 1024, 0, thisNumChannels, 0, 0}; outputFileDesc.mFormatFlags = kAudioFormatFlagIsBigEndian | kAudioFormatFlagIsSignedInteger | kAudioFormatFlagIsSignedInteger | kAudioFormatFlagIsPacked;

ExtAudioFileRef inputFile を読み取る場合:

どちらの場合も (書き込みと読み取り)、同じ形式が適用されます。

ちなみに、読み取りサンプルと書き込みサンプルが等しくなくても、両方の信号の平均値は非常に似ています。しかし、完全に等しくない理由がよくわかりません!

私が間違っていることは何か分かりますか?

0 投票する
0 に答える
43 参照

core-audio - Core Audio の EXC_BAS_ACCESS - 拡張 AudioFile サービスを使用してマイク データをファイルに書き込む

着信マイク オーディオをファイルに書き込もうとしています。オーディオ サンプルはタイム クリティカルなコールバックで一度に 4096 フレーム (プロジェクトの設定フレーム レート) 配信されるため、単純に AudioFileWriteBytes を使用してバイトをファイルに書き込むことはできません。また、別の場所に書き込むサンプルを格納するための独自のリング バッファーをセットアップする手間と複雑さを経験したくありませんでした。そのため、ExtAudioFileWriteAsync 関数に拡張オーディオ ファイル API を使用しています。

ドキュメントの指示に従って、CFURL を使用して ExtAudioFileRef を作成し、ヌル バッファとメインで 0 フレームを使用して 1 回実行します。次に、AUHAL ユニットを開始すると、入力コールバックが呼び出され始めます。

ExtAudioFileWriteAsync(player.recordFile, 0, NULL);

そこに、このファイルに非同期で書き込むコードがあります。コールバック関数がスコープを終了した後に実行されるように、ディスパッチ キューに呼び出しをネストしています (それが必要かどうかはわかりませんが、ディスパッチ ブロックを囲むことなくすべてこのエラーが発生します)。これが現在のコールバックです。

最初のコールバック呼び出しで不正なアクセス例外が発生し、すぐに救済されます。明確にするために、これらは最初にファイルを作成するための設定です。