如何在核心java代码中组合两首以上的歌曲?

如何在核心java代码中组合两首以上的歌曲?,java,Java,我想在Java代码的帮助下,将mp4、mp3、Avi和wmv等格式的歌曲组合成一个文件,因为在我的服务器中,我只有JDK环境,到目前为止,我使用的是核心Java文件操作代码。具体如下 String str="E:\\Movies\\Dark Skies (2013)\\Dark.mp4"; String ftr="F:\\CRS\\stv.mp4"; File file=new File(str); File Kile=new File(ftr);

我想在Java代码的帮助下,将mp4、mp3、Avi和wmv等格式的歌曲组合成一个文件,因为在我的服务器中,我只有JDK环境,到目前为止,我使用的是核心Java文件操作代码。具体如下

    String str="E:\\Movies\\Dark Skies (2013)\\Dark.mp4";

    String ftr="F:\\CRS\\stv.mp4";

    File file=new File(str);
    File Kile=new File(ftr);

    FileInputStream fis=new FileInputStream(file);

    FileOutputStream fos=new FileOutputStream(Kile);

    int luffersize=102400000;
    byte[] luffer=new byte[luffersize];

    int lenght=(int) fis.available();


    if ((fis.read(luffer)) != 0) {
            try {
                fos.write(luffer, 0, lenght);
                System.out.println("working");

            } catch (IOException e) {

                e.printStackTrace();
            }finally{
                fis.close();
                fos.close();

            }
        }
}

下面是我为演示如何将两个文件连接(顺序组合)在一起而编写的一些代码

这不考虑MP4文件格式。我不熟悉MP4,但MP3只是一系列512字节的块,带有任意ID3头。如果可以去掉第二个文件的标题,那么两个音乐文件的一般连接(即“catsong1.mpsong2.mp3>newsong.mp3”)确实可以可靠地工作。但我不熟悉MP4,我很确定它可以支持多种编解码器。因此,YMMV使用此解决方案。否则,使用编解码器库进行正式解析和流式处理

在任何情况下,下面是一些将两个文件组合在一起的示例代码:

public void CombineFiles(String filename1, String filename2, String filenameOuput) throws IOException
{
    FileInputStream stream1 = new FileInputStream(filename1);
    FileInputStream stream2 = new FileInputStream(filename2);
    FileOutputStream streamOut = new FileOutputStream(filenameOuput);
    FileInputStream stream = stream1;

    byte [] buffer = new byte[8192]; // 8K temp buffer should suffice

    while (true)
    {
        int bytesread = stream.read(buffer);
        if (bytesread != -1)
        {
            streamOut.write(buffer, 0, bytesread);
        }
        else
        {
            // handle end of file and moving to the next file
            if (stream == stream2)
                break;
            else
                stream = stream2;
        }
    }

    streamOut.close();
    stream1.close();
    stream2.close();
}

不同的文件类型包含不同的信息。您不能简单地将所有字节放入一个文件中,然后希望它能正常工作。你需要找到一个为适当修改MP3/MP4/AVI/etc文件而编写的库,并使用它。你说的“组合”是什么意思?1.混合它们?2.一个接一个?3.或者只是把它们放在一个容器里(比如拉链)?如果你选择1或2,你需要先彻底研究MP3格式的规范。组合文件意味着“在单个文件中写入两个文件的字节流,并且在播放音频或视频时应该一个接一个地播放”嗨,贾斯汀·尼塞纳,请运行我给出的代码并检查!!我能将两个相同格式的文件连接成一个有效文件!!这在玩的时候效果很好。。请不要在不了解java文件操作的情况下回复!!感谢以上代码选择!!!我给出的上述代码可以很好地组合mp3文件(通常是音频歌曲),但在以mp4格式组合(视频文件)时,它正确地写入了第一个文件InputStream,但无法在同一文件中写入第二个文件流。mp4或avi(视频格式)文件的任何帮助。提前感谢通过java代码连接视频文件(mp4格式)的所有帮助!!!!谢谢你advance@IrfanPervez-如果您喜欢该复选框,请向上投票。MP3是一种集编解码器和容器格式于一体的格式。它可以很好地处理基本的拆分和连接。但MP4只是一种容器格式。两个不同的MP4文件可以是完全不同的编码和流类型。因此,将720p录制的H264视频文件与另一个仅为AAC音频的文件连接起来意味着什么?您需要找到一个MP4解析/写入库,该库将允许您读取和写入原始编解码器流。另一个人发布,然后收回此链接: