以下のコードでは、2つのmp3ファイルがマージされますが、マージされたオーディオファイルはVLCメディアプレーヤーでのみ再生され、Windows Media Playerでは再生されません。2つのMP3ファイルをJavaでマージしてWindows Media Playerで再生する方法
import java.io.*;
public class TwoFiles
{
public static void main(String args[]) throws IOException
{
FileInputStream fistream1 = new FileInputStream("C:\\Temp\\1.mp3");
FileInputStream fistream2 = new FileInputStream("C:\\Temp\\2.mp3");//second source file
SequenceInputStream sistream = new SequenceInputStream(fistream1, fistream2);
FileOutputStream fostream = new FileOutputStream("C:\\Temp\\final.mp3");
int temp;
while((temp = sistream.read()) != -1)
{
fostream.write(temp); // to write to file
}
fostream.close();
sistream.close();
fistream1.close();
fistream2.close();
}
}
TO WAVEファイルの変換?マージされたファイルを私たちのマシンで試してみることができますか? MP3は圧縮された形式なので、VLCでファイルを再生できることに感心しています。これは、両方のファイルの内容を連結するだけです。ファイルのすべてのメタデータが壊れている可能性があります。 – Zabuza
私はこの "合併"はMP3フォーマットが何であるかを考慮していないと思います。 –
各MP3フレームは自己完結しているので、それは圧縮ではないので、それが問題です。実際に生のMP3データストリームを連結することができます。しかし、現在、ほとんどのMP3ファイルは可変ビットレートでエンコードされているため、ファイルの圧縮されていない長さを示すヘッダーを書き込むのが一般的になっています。このようなヘッダーが存在する場合、一部のプレーヤーはそれを尊重し、さらに多くのデータがあってもそれだけを再生します。ヘッダーがファイルサイズに大きな不一致がある場合は、何かを再生することを拒否する人もいます。 –