2012-03-26 13 views
0

私は奇妙な質問があります。今、私はwavファイルのサンプルを読み込んで処理した後、再びファイルに保存することができます。しかし、私のプロジェクトでは、null値でいくつかのバイトを変更する必要があります。私はwavファイル(例えば:バイナリ形式の25)にいくつかの整数を入れると、それはサウンドカードが私たちに25の電力を与えることを意味します。(私はサウンドカードとwavファイルの概念について誤解を持ちます。Java - Wavファイル - Nullバイト?

私のプロジェクトでは、nullの値をwavファイルに入れる必要があります。サウンドカードが25のバイナリ形式を読み込んだように、それは信号を与えますが、それ以降はnullバイトになり、サウンドカードは別の値が来るので電気信号を与えません。

私の知る限り、私は質問を正しく表現できませんでした。それをもっと理解できるようにする。

のは、私はそれ

data[]= {10,12,13,14,null,null,null,12,11,10} 

作りたいとサウンドカードは、このデータを読んだとき、それはたとえば

のための私達に与えること

data[] = {10,12,13,14,15,14,13,12,11,10}; 

のように格納されたファイルがあるとしましょう

10 voltage,12 voltage,13 voltage,14 voltage,no any signal,no any signal,no any signal,12 voltage, 11 voltage, 10 voltage} 
+0

「null」ではなく「0」の値を使用してください。 – Jesper

+1

*「私には奇妙な質問があります。」*ほとんどの場合、基本的な事実を確認する必要があります。実際には、オーディオファイルの一部に「無音」と書いてもらいたいのですか?それを置く別の方法は、音声信号の部分をミュートすることです。サウンドファイルの一部に純粋な '0'値を書き込むと、一般に、サイレントセクションの最初と最後で大きな音が発生することに注意してください。開始時に通常の音量を0にフェードアウトさせてから、もう一度最後に戻すのが良いでしょう。 –

+0

詳細を追加してより広い意味で何をしたいのかを述べると、もっとお手伝いできるかもしれません。例えば。 "私はJavaバイト配列で8KHz/8bitの署名付きPCMオーディオを10秒間持っており、5秒後に1秒の無音を挿入したい" ... – thkala

答えて

0

私は、WAVファイルが波形の途中で「信号なし」を表す特定の方法を持っているのではないかと疑います。 (this descriptionの大文字小文字はこれを確認しているようです)

私はあなたの信号がないところでゼロを使用することをお勧めします。 (もちろん、ゼロが選択したコーデックを使用してエンコードする必要がある。)ところで


、WAVファイルは、「無信号」を表すないの方法を持っていた場合でも、それはnull値を入れ伴わないだろうJavaバイト配列に変換します。 Javaバイト配列にはnullが含まれていません。 Java言語仕様ではそれを禁じています。

+0

rangeの任意の値の定数は同じ効果を達成することに注意してください。 1つのサンプルの '14'から次のサンプルの '0,0,0、..'に直接移動すると、通常、大きな「クリック」タイプのサウンドが発生します。 –

0

バイトを扱うときにnullをファイルに入れることはできません。各バイトは256個のビットの組み合わせの1つでなければなりません。

サウンドカードがno any signalを返すとき、正確にはどういう意味ですか?これはゼロ電圧と等価ではありません(つまり、ファイル内で整数値0を使用します)。または、 "不明"を表すプレースホルダとしてnullを使用していますか?

まだ完全にあなたの質問を表現していないかもしれません。あなたがファイルにnullを入れる必要があると思っているように思えます。あなたは何ですか実際に(「WAVにヌルを入れない」)を試みています - これはゼロで動作しますか?

0

「ヌルシグナル」はありません。あなたが出力をしたくないということを意味するならば、0を送るだけです(符号付きの値を使用している場合)。符号なしの値(Javaでサポートされていない値)を使用している場合、8ビットのサンプルでは128を、16ビットのサンプルでは32768を送信します。

だから

yourSoundCardObject.write(data); //The method write is hypothetical 

あなたのサンプルレートとは何ですか?のようなものが続く

data[]= {10,12,13,14,0,0,0,12,11,10}; 

を言いますか

+0

あなたの答えをありがとう、私はゼロを試しましたが、私の場合はうまくいきません。 – user1252105

関連する問題