問題タブ [remoteio]
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.
objective-c - iPhoneでマイクとカメラのライブ生データにアクセスする
iPhoneのカメラとマイクからライブの生データにアクセスする必要があります。私は数日探していましたが、オーディオには「リモートIO」と「オーディオキュー」を使用し、ビデオにはAVCaptureSessionを使用することが提案されました。AVCatpureSessionから生のオーディオ情報を取得する方法が見つからなかったので、AVCaptureSessionで両方を実行できるかどうか、または2つの異なるアプローチを使用する必要があるかどうか疑問に思いました。
ios - この malloc がリモート IO でクラッシュするのはなぜですか?
リモート IO 用のオーディオ バッファ用のメモリを作成するために、malloc を使用しようとしています。ほとんどの場合、それは非常にうまく機能します。しかし最近では、iOS 6.0.1 から 6.1.3 までのいくつかで、奇妙にも iPhone 5 と iPad 3-4、iPad 3-5、iPad 3-6 でクラッシュすることがある。
バッファのサイズは以下です。高性能のデバイスがこれでクラッシュするのは奇妙ではありませんか? より積極的に使用されているためですか?
それを修正する方法についての私の考えは、この試みをキャッチでトラップし、エラーが発生した場合は半分のサイズを試すことです。これにより、通常、マイクを通して 30 秒間「聞く」ことができます。
ありがとう!!
ロン
ios - リモート IO AudioBufferList のクラッシュ
次の太字の行がクラッシュするのはなぜですか??? 助言がありますか?
ios - コア オーディオ: 非 remoteIO ユニットの kAudioOutputUnitProperty_SetInputCallback
私は Core Audio を初めて使用するので、明らかなことはわからないかもしれません… 私の目的は、以前に録音されたオーディオ信号を処理することです。ただし、これらの信号は最初にフィルタリングする必要があります。オーディオを再生する必要はありません。記録して処理するだけです。
私のグラフは次のようになります: RemoteIO --> HighPassFilter --> コールバック (プロセス オーディオ)
そして、私はそれを次のように設定しました:
コールバックを設定しようとすると、コードがエラー -10879 で失敗します。フィルタ オーディオ ユニットがこのプロパティをサポートしていないと仮定しています。では、録音された音はどのように取得すればよいのでしょうか。私の知る限り、2 番目の汎用出力ユニットは許可されていません。
事前にご協力いただきありがとうございます
ios - リモート IO とオーディオ変換サービスを使用して、PCM バッファを iOS 用の AAC データにリアルタイムで変換する
Remote IO を使用して PCM からオーディオ バッファを取得しています。データをセルラー ネットワーク (3G ネットワーク) で Darwin Server にリアルタイムで送信したいと考えています。Fraunhofer の「iOS での AAC-ELD ベースのオーディオ通信 A 開発者ガイド」という記事があるため、AAC 形式を選択します。サンプルコードはうまく機能します。オーディオはLPCM形式で録音され、AACELDにエンコードされ、LPCMにデコードされ、最終的にすぐに再生されますが、AACELD(Enhanced Low Delay)形式です。フォーマットを「kAudioFormatMPEG4AAC_ELD」から「kAudioFormatMPEG4AAC」に変更すると。音声が 1 秒間聞こえ、音声が次の 1 秒間停止し、パターンが続きます。また、音声は現実の 2 倍の頻度で発生します。つまり、現実の世界で最後の 1 秒の音声は、再生では 0.5 秒しか持続しません。次に、サンプル フレーム サイズを 512 から 1024 に変更します。周波数は正常ですが、オーディオを 2 秒間聞くことができ、次の 2 秒間スタックし、パターンが続きます... AudioConverterFillComplexBuffer 関数が失敗することがわかりました。 2 秒後、次の 2 秒で正常に動作します。どうしてか分かりません。助けてください。前もって感謝します。コードの多くは変更していませんが、formatID とサンプル フレーム サイズを 512 から 1024 に変更しただけです。記事は次のとおりです。http://www.full-hd-voice.com/content/dam/fullhdvoice/documents/iOS-ACE-AP-v2.pdf
1.グローバル変数
2.Audio Session、Audio Unit、encoder&decoderの初期化
3.コールバックのレンダリングとエンコーダーとデコーダー
iphone - 録音トラックで現在再生中のトラックの音を削除する
オーディオの録音と再生に RemoteI/O を使用することを検討しています。私はコア オーディオを理解することが非常に苦手です。そのため、Amazing Audio オープン ソースに従いました。これまでのところ、同じコードで録音と再生ができます。同時にオーディオの再生と録音を使用しているときに、2 つのオーディオの混合を避けるために、マイクを介して録音し、iPhone のスピーカーを介して再生しようとしています。
Stack Overflow で質問が重複しているという投稿を多数見てきましたが、問題に対する正確な回答が見つかりませんでした。しかし、 Appleのドキュメントを見て実装したいと思っています。
質問:
RemoteI/O を使用して同時録音と再生を実装するにはどうすればよいですか?
回答: Amazing Audio Engine を使用して実行
録音したオーディオを再生し、別のトラックを録音しているときに、2 つのオーディオのミキシングを停止するにはどうすればよいですか? (私のアプリで再生されているオーディオ サンプルを削除する)
マイク経由の録音とiPhoneスピーカー経由の再生を変更するには?
ios - Core Audio iOS: キャプチャされたサンプルとレンダリングされるサンプルの過去と未来のタイムスタンプを取得する
質問
次の構造を持つ非常に単純な iOS Core Audio アプリケーションがあります。
Remote I/O Unit Input Bus --> Render Callback --> Remote I/O Unit Output Bus
リモート I/O 出力バスによって呼び出されるレンダー コールバック関数は、リモート I/O 入力バスで呼び出すことにより、入力ハードウェアからサンプルをプルしますAudioUnitRender()
。次に、これらのサンプルを処理/影響を与え、提供された に書き込みAudioBufferList*
、戻り、影響を受けたサンプルを出力ハードウェアを介して再生させます。すべてうまくいきます。
私の質問は、次の正確な時間をどのように知るか、または計算できるかです。
- サンプルは入力ハードウェアによってキャプチャされました
- サンプルは実際に出力ハードウェアで再生されました
討論
構造体は、有効な, &値AudioTimeStamp
とともにレンダー コールバックに渡されます。このタイムスタンプが何を反映しているかは、私にははっきりとわかりません。ドキュメントには次のように記載されています。mHostTime
mSampleTime
mRateScalar
inTimeStamp Audio Unit render のこの呼び出しに関連付けられたタイムスタンプ。
これは、レンダリングが呼び出された時間を表しているように聞こえますが、入力サンプルがキャプチャされ、出力サンプルがレンダリングされる時間と (関係があるとすれば) どのように関係しているのでしょうか?
オンラインのいくつかのリソースでは、現在のホスト時間を使用mach_absolute_time()
またはCACurrentMediaTime()
計算することについて話していますが、現在のホスト時間から過去または将来のホスト時間への接続を確立できないようです。
次の Apple メーリング リスト スレッドからの引用では、過去の入力データと将来の出力データの両方に個別のタイム スタンプを含む 3 つのタイム スタンプについて説明しています。これはまさに私が探しているものですが、これは OS X で実行され、AUHAL I/O を使用していると思います。iOS でこれらのタイム スタンプを取得する方法が見つかりません。
したがって、CoreAudio の動作は、I/O proc が起動して 3 つのタイムスタンプを提供するというものです。(1) 入力データのタイムスタンプです。これは常に、少なくとも過去のバッファ サイズになります (2) 現在のタイム スタンプです - I/O proc が起動されて実行されたとき (3) は、提供する出力データのタイム スタンプです。これは、常に将来のある時点です。通常は、将来のバッファ サイズです。( http://lists.apple.com/archives/coreaudio-api/2005/Sep/msg00220.html )
明らかな何かが欠けているのではないかと思うので、誰かがこれに光を当ててくれることを願っています。
前もって感謝します。