4

ミキサーからオーディオを録音してバイト配列に保存するか、ファイルに保存する Java アプリケーションがあります。必要なのは、2 つのミキサーから同時にオーディオを取得し、それをオーディオ ファイルに保存することです (.wav で試しています)。問題は、2 バイト配列を取得できることですが、それらをマージする方法がわかりません (「マージ」とは、連結を意味するものではありません)。具体的には、USB モデムを介して会話を処理するアプリケーションであり、それらを録音する必要があります (ストリームは、話している各人の声であり、個別に録音するように既に作成されています)。

それを行う方法の手がかりはありますか?

これが私のコードです:

import java.nio.file.Files;
import java.nio.file.Paths;
import java.nio.file.Path;

public class FileMixer {

    Path path1 = Paths.get("/file1.wav");
    Path path2 = Paths.get("/file2.wav");
    byte[] byte1 = Files.readAllBytes(path1);
    byte[] byte2 = Files.readAllBytes(path2);
    byte[] out = new byte[byte1.length];

    public FileMixer() {

        byte[] byte1 = Files.readAllBytes(path1);
        byte[] byte2 = Files.readAllBytes(path2);

        for (int i=0; i<byte1.Length; i++)
            out[i] = (byte1[i] + byte2[i]) >> 1;

    }
}

前もって感謝します

4

2 に答える 2

6

音波をデジタル的に混合するには、2 つのファイルの対応する各データ ポイントを一緒に追加します。

for (int i=0; i<source1.length; i++)
    result[i] = (source1[i] + source2[i]) >> 1;

つまり、バイト配列 1 から項目 0 を取得し、バイト配列 2 から項目 0 を取得してそれらを加算し、結果の数値を結果配列の項目 0 に入れます。残りの値について繰り返します。オーバーロードを防ぐために、結果の各値を 2 で割る必要がある場合があります。

于 2013-08-26T21:51:26.157 に答える