2011-09-09 9 views
2

私は(ドラム・シーケンサーで使用される)JAVAでのオーディオの輸入に取り組み、私はAIFFファイルをインポートすると、以下のような問題があります。AIFFオーディオファイルのエンディアンを判別することは可能ですか?

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

MacのAIFFはBigEndianです(これはすべきです)。 Wavelab(ウィンドウ)のAIFFはLittleEndianです。

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

ファイルヘッダー内に隠れた情報やAIFFファイルのエンディアンを判別する方法がありますか? 提案がありますか?

どうもありがとう

答えて

3

迅速グーグルはAIFFファイルがbig endianある、と言います。

しかし、Wikipediaによれば、データを圧縮する別の形式のAIFF-Cがあります。アップルは最近、リトルエンディアンを使用し、sowtという偽の圧縮方法を作成しました。これは、基本的に「圧縮はないがリトルエンディアン」を意味します。あなたはそれをチェックしなければならないかもしれません。

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

+0

はい、AIFFはビッグエンディアンです。しかし、wavelabはリトルエンディアンで24bit aiffを作成します。それは事実です。これは24bit aiffsだけに起こります。他のすべてのビットレートはwavelabでビッグエンディアンとして正しく作成されます。私は奇妙に聞こえるかもしれません。しかし、ファイルは、実際には、リトルエンディアンです – gal

+0

@gal:私は参照してください。私は答えを更新しました。 – musiKk

+0

はい、同意します。ファイルが仕様に違反しているか、ヘッダーを読んでいる間に何か間違ったことをしています(私は16bit aiffsと全く同じ方法でそれを読んでいます。私は偽の圧縮「sowt」について読んだが、ファイルはそのタイプではない。ヘッダーはAIFFではなくAIFF形式です。ちょうど不思議、どのように両方のファイルが正常に再生される可能性があります – gal

関連する問題