0

この問題について本当に助けが必要です。オーディオ ユニットを使用して iOS アプリケーションを開発しています。録音されたオーディオは、alaw 形式を使用して 8 ビット / 8000 ヘルツのサンプル レートである必要があります。スピーカーから歪んだ声が聞こえてきます。

このサンプルをオンラインで見つけました:

http://www.stefanpopp.de/2011/capture-iphone-microphone/comment-page-1/

アプリをデバッグしようとしているときに、彼のアプリケーションで自分の audioFormat を使用しましたが、同じ歪んだサウンドが得られます。設定が間違っているか、これを機能させるために何か他のことをする必要があると思います。リンクのアプリケーションと以下の audioFormat を考えると、私が何か間違ったことをしているのか、何かが欠けているのか、誰にでも教えてもらえますか? 私はこのことについてあまり知りません、ありがとう。

オーディオ形式:

AudioStreamBasicDescription audioFormat;
    audioFormat.mSampleRate         = 8000;
    audioFormat.mFormatID           = kAudioFormatALaw;
    audioFormat.mFormatFlags        = kAudioFormatFlagIsPacked | kAudioFormatFlagIsSignedInteger;
    audioFormat.mFramesPerPacket    = 1;
    audioFormat.mChannelsPerFrame   = 1;
    audioFormat.mBitsPerChannel     = 8;
    audioFormat.mBytesPerPacket     = 1;
    audioFormat.mBytesPerFrame      = 1;
4

1 に答える 1

1

やっと正常に再生できるようになりました。同様の問題に直面している他の人を助けるためにここに投稿しています。

私が直面していた主な問題は、シミュレータと実際のデバイスの間に大きな違いがあることです。デバイスでアプリを実行すると、音質は良くなりましたが、1秒または2秒ごとにスキップし続けました。これを修正するように見える設定と、バッファサイズ/期間を変更する設定を見つけました。(デュレーション設定はシミュレーターでは機能しません。私の問題のいくつかは、他の何かと同期するために特定のレートで実行する必要があり、これが歪んだ音の原因でした)

status = AudioSessionInitialize(NULL, kCFRunLoopDefaultMode, NULL, audioUnit);
UInt32 audioCategory = kAudioSessionCategory_PlayAndRecord;
status = AudioSessionSetProperty(kAudioSessionProperty_AudioCategory, sizeof(audioCategory), &audioCategory);
[self hasError:status:__FILE__:__LINE__];

Float32 preferredBufferSize = 0.005805; // in seconds
status = AudioSessionSetProperty(kAudioSessionProperty_PreferredHardwareIOBufferDuration, sizeof(preferredBufferSize), &preferredBufferSize);
[self hasError:status:__FILE__:__LINE__];

status = AudioSessionSetActive(true);

最初のオーディオ セッション プロパティは、スキップを停止して、よりスムーズに再生できるようにするものです。2 番目はバッファ期間を調整します。これは、コールバックが発生する頻度を秒単位で表したもので、異なるバッファ サイズが得られます。提供する値にできる限り近づくことを意味する最善の努力ですが、利用可能なサイズのリストがあり、最も近いものを選択しているようです.

このことを始めるための非常に優れたチュートリアル/サンプルプログラムについては、私の質問でリンクしている投稿を参照してください。

于 2012-08-09T12:24:53.100 に答える