2

Java を使用して 24 ビット wav ファイルを作成するプログラムを作成しようとしています。Java サウンド API は 24 ビット オーディオをサポートしていないため、ファイルを最初から書き込もうとしています。これは何気ない興味から始まりましたが、ビット、バイト、サイン、チャンクの壮大な探求になりました。

24 ビット wav ファイルのデータ チャンクには、符号付きバイトまたは符号なしバイトがありますか?

Java の unsigned バイトの欠如はイライラさせられます。ビットマスクされた整数を使用して符号なしバイトを表すことができることを読みましたが、ファイルへの最終出力でそれがどのように表されるのか疑問に思います。

分岐して申し訳ありません...私の質問は、「24ビットのwavファイルのデータチャンクには、符号付きまたは符号なしのバイトがありますか?」です。

いずれにせよ、この署名済み/未署名のビジネスを把握する必要がありますが、見つけた参照のデータ チャンクに関する答えが見つかりません。

4

2 に答える 2

2

また、WAV ファイルの 24 ビット データが署名されていることも確認できます (データが WAVE_FORMAT_PCM 形式で格納されている場合)。より一般的には、サンプルあたり 8 ビットの場合を除き、WAVE_FORMAT_PCM データは常に符号付きです。

于 2011-03-31T19:28:32.230 に答える
1

これ(および私自身の個人的な経験)によると、Microsoft WAVE ファイルは 2 の補数の符号付き整数を使用して、8 ビットより大きい PCM サンプルを表します。デフォルトでは、これらの整数のバイト順はリトルエンディアンです。

SoXsoxiパッケージから使用して、独自のテスト ファイルでこれを確認できます (いくつかありますよね?)。

WAVE ファイルは、プレーン PCM 以外のオーディオ形式も保持できることに注意してください。

于 2011-03-31T19:17:12.373 に答える