1

Iphone ゲームを作成しています。サウンドに圧縮形式を使用する必要があり、オーディオ ファイル内の特定のサンプルにシームレスにループ バックできるようにしたいと考えています (つまり、イントロがあり、その後オフセットにループ バックします)。 )

現在、シームレスなループを許可する唯一のエクスポート プロセス (適切なプライミングおよびパディング フレーム番号を報告し、ループ時にクリックする必要はありません) は、caf ファイルで aac 形式への Apple の afconvert を使用しています。

しかし、より低いビットレートにエンコードしようとすると、自動的にサウンドが再サンプリングされます! サウンドを再サンプリングしたくありません。私が遭遇した他のすべてのエンコーダーには、出力サンプルレートを設定するオプションがありますが、これにはそれが見つかりません。

余談ですが、Audio Queue を使用して圧縮ファイル形式をシームレスにループさせることができた人がいたら教えてください。

現在、次の場所にある情報に取り組んでいます。

http://developer.apple.com/mac/library/qa/qa2009/qa1636.html

エンコードのビットレートをデフォルト (~128kbs) のままにすると、この DID は完全に機能することに注意してください。

4

2 に答える 2

1

少なくとも48kbpsである必要があります。32kbpsは、より低いサンプルレートにダウンサンプリングします。

于 2011-09-30T16:03:56.480 に答える
0

サンプルレート (典型的な値: 32kHz、44.1kHz、48kHz) とビットレート (典型的な値: 128kbps、160kbps、192kbps) を混同していると思います。

ビットレートの場合、32kbps は非常に低いです。このビットレートでは音質が悪くなります。おそらく、代わりにサンプルレートを 32kHz に設定するつもりでした。これも完全に典型的ではありませんが、より理にかなっています。

AAC に圧縮し、WAV に解凍すると、同じオーディオ ファイルが返されません。AAC では、オーディオ データが raw wave とはまったく異なる形式で表現されるためです。たとえば、圧縮形式に変換するために必要な数マイクロ秒単位のシフトを行うことができます。高度に圧縮された形式でこれを完全に回避することはできません。

クリック音は、連続して再生される 2 つのサンプル間の突然の変化から発生します。これは、ループ内でジャンプして戻るオフセットが、AAC ファイル内の位置と WAV ファイル内の位置がまったく同じにならないために発生する可能性があります (上記で説明したように、マイクロ秒単位でシフトする可能性があります)。

圧縮時には、これらのわずかな変化を回避することはできません。代わりに、オフセットを調整して、圧縮後にそれらを補正する必要があります。つまり、圧縮されたサウンド ファイルを Audacity などのオーディオ エディタで開き、元のオフセットに近い、ループに適した別のオフセットを手動で見つける必要があります。

ループに適したオフセットを見つける方法は?

波形の最後にズームインします。そこで波形がどのように見えるかを見てください。次に、元のオフセットで波形を拡大し、波形が波形の最後にシームレスに接続するオフセットをその近傍で検索します。

これがどのように見えるかの例として、オーディオ エディタで圧縮されていないオーディオ ファイルを開き、波形の最後とそこでのオフセットを調べます。

于 2014-02-25T14:33:22.170 に答える