2

JAVA でオーディオ インポーター (ドラム シーケンサーで使用) を使用していますが、AIFF ファイルのインポートで次の問題が発生します。

同じタイプ (24 ビット、44100kHz、モノラル) の 2 つの AIFF ファイルがあり、1 つは Mac で作成され、もう 1 つは Windows コンピューターで Wavelab で作成されています。どちらのファイルも圧縮されていない PCM で、どちらも FORM == AIFF です。

Mac の AIFF は BigEndian (当然のこと) で、Wavelab (Windows) の AIFF は LittleEndian です。

どちらのファイルも、Wavelab (Windows) と Quicktime (Windows) で正しく再生できます。これらのツールは、これらのファイルのエンディアンをどのように検出できますか? そうしないと、ファイルの少なくとも 1 つがノイズのように聞こえます (それが私のアプリケーションで発生することです)。

AIFF ファイルのエンディアンを判断するファイル ヘッダーまたはその他の方法に隠し情​​報はありますか? 助言がありますか?

どうもありがとう

4

1 に答える 1

3

簡単なグーグル検索によると、AIFFファイルはビッグエンディアンです。

ただし、ウィキペディアによると、データを圧縮する AIFF-C と呼ばれる別の形式があります。Apple は最近リトル エンディアンを使用し、sowtという名前の偽の圧縮方法を作成しました。これは本質的に「圧縮なしでリトル エンディアン」を意味します。それを確認する必要があるかもしれません。

それとは別に、プレーン AIFF はエンディアンをチェックする方法を提供しません。リトルエンディアンでエンコードされた標準の AIFF は、仕様に違反しているようです。

于 2011-09-09T08:55:09.307 に答える