2009-05-27 7 views
3

これは私が渡す値です。これは私が働いている値の唯一の組み合わせです。Audio Recording iPhone - AudioStreamBasicDescriptionの値

dataFormat.mSampleRate = 44100;  
dataFormat.mFormatID = kAudioFormatLinearPCM; 
dataFormat.mFormatFlags = kAudioFormatFlagIsSignedInteger | kLinearPCMFormatFlagIsBigEndian; 
dataFormat.mBytesPerPacket = 4; 
dataFormat.mFramesPerPacket = 1; 
dataFormat.mBytesPerFrame = 4; 
dataFormat.mChannelsPerFrame = 2; 
dataFormat.mBitsPerChannel = 16; 

status = AudioQueueNewInput( &dataFormat, AudioInputCallback, self, NULL, NULL, 0, 
        &queue); 

status = AudioFileCreateWithURL(fileUrl, kAudioFileCAFType, &dataformat, kAudioFileFlags_EraseFile, &audioFile 

録音は機能しますが、録音中や再生中はノイズが多いです。このコードとは何か関係がありますか?

答えて

1

入力デバイスは何ですか?付属のイヤホンのマイクまたは携帯電話の内蔵マイクまたは何ですか?または、シミュレータに録音していますか?

ノイズ以外にも、スピード、ピッチなど、他のすべての音が正しく聞こえますか?

恐らく問題はありませんが、入力デバイスがおそらくモノラルである間は、2チャンネル入力を指定しています。

最後に考えたのは、これは第1世代のiPhoneですか?私は、8 KHzの入力が44.1にアップコンバートされるそのモデルには奇妙な問題があると思います。

+0

OK、Billはcoreaudio-apiのリストで、噂の第一世代iPhoneアップサンプリングのことが偽であると言った。私の悪い。 – invalidname

2

2つのエラーが考えられます。まず、@ invalidnameが指摘するように、ステレオでの録音はおそらくiPhoneなどのモノデバイスでは動作しません。さて、それはうまくいくかもしれませんが、もしそうなら、あなたはデュアルモノステレオストリームをとにかく戻すつもりです、なぜ、どうして気になるのですか?ストリームをモノで動作させるように設定し、CPUのオーバーヘッドを自分自身で補うこともできます。

2番目の問題は、おそらくあなたのサウンドの歪みの原因です。あなたのストリームの記述形式のフラグは次のようになります。また、このフラグの値はおそらく無視されている間は0にmReservedフラグを設定することを忘れないでください

kAudioFormatFlagIsSignedInteger | 
kAudioFormatFlagsNativeEndian | 
kAudioFormatFlagIsPacked 

、それが明示的に設定するために傷つけることはありません。 0を確認してください。

編集:iPhone上でオーディオをデバッグするための別のより一般的なヒント - あなたの携帯電話からのデータペイロードをつかむとウェーブエディタで記録を見て、歪み、クリッピング、またはその他の奇妙な効果を得ている場合。ズームインして個々のサンプルを見ることができれば、何がうまくいかないかについての多くの手がかりを得ることができます。

これを行うには、「オーガナイザ」ウィンドウを開き、携帯電話をクリックし、アプリケーションの隣にある小さな矢印(通常はアンインストールする場所)を展開する必要があります。これで、少し下向きの矢印が表示されます。クリックすると、アプリケーションからのデータペイロードがハードドライブのどこかにコピーされます。あなたのレコーディングをディスクにダンプしている場合、ここで抽出されたファイルが見つかります。