Java 1.6で2つのWAVファイルを連結する最も簡単な方法は何ですか? (等しい周波数とすべて、何も空想。)Javaから2つのWAVファイルに参加しますか?
(これはおそらく、すっごく簡単ですが、私のGoogle-fu今日この主題に弱いようです。)
Java 1.6で2つのWAVファイルを連結する最も簡単な方法は何ですか? (等しい周波数とすべて、何も空想。)Javaから2つのWAVファイルに参加しますか?
(これはおそらく、すっごく簡単ですが、私のGoogle-fu今日この主題に弱いようです。)
は必要最小限のコードです:2つのWAVファイルは波ヘッダーの正確な同じフォーマットを持っていない場合
import java.io.File;
import java.io.IOException;
import java.io.SequenceInputStream;
import javax.sound.sampled.AudioFileFormat;
import javax.sound.sampled.AudioInputStream;
import javax.sound.sampled.AudioSystem;
public class WavAppender {
public static void main(String[] args) {
String wavFile1 = "D:\\wav1.wav";
String wavFile2 = "D:\\wav2.wav";
try {
AudioInputStream clip1 = AudioSystem.getAudioInputStream(new File(wavFile1));
AudioInputStream clip2 = AudioSystem.getAudioInputStream(new File(wavFile2));
AudioInputStream appendedFiles =
new AudioInputStream(
new SequenceInputStream(clip1, clip2),
clip1.getFormat(),
clip1.getFrameLength() + clip2.getFrameLength());
AudioSystem.write(appendedFiles,
AudioFileFormat.Type.WAVE,
new File("D:\\wavAppended.wav"));
} catch (Exception e) {
e.printStackTrace();
}
}
}
ありがとう!簡単な方法が必要でした。 – krosenvold
これはもはや機能しません。アンドロイドはjavax.sound.sampled。*パッケージをサポートしていません。彼らの他の方法はそれを行うのですか? –
親愛なるアレックスの質問は、Javaの場合Android用ではない – dhams
WAVヘッダを解析するにはあまりにも難しいこと、そうでない場合する必要があります私はthis header descriptionを正しく読んで、2番目のWAVから最初の44バイトを取り除くだけで、最初のバイトに単純にバイトを追加することができます。その後、最初のWAVのヘッダーフィールドのいくつかを変更して、正しい長さにする必要があります。
同じビットレート、サンプルレート、および同じチャンネル数を持つと仮定します。 – dreamlax
もちろん、クロセンボルトはそう言っていました。 – schnaader
私は本当にこれを自分で行う必要がありますか?より単純なソリューションが必要ですか? – krosenvold
あなたの挑戦にもかかわらず発生します。
2つのファイルの波形が同じでない場合は、一致するようにそれらを変形させる方法を見つけなければなりません。
MP3トランスコードやその他の種類のトランスコード(MP3コーデックでエンコードされている場合)が含まれる場合があります。
これを考慮する必要がないのは幸いです。 – krosenvold
私はGoogle-fu +1のことを学びます。 –