Java 将一个.flv视频文件附加到另一个.flv视频文件

Java 将一个.flv视频文件附加到另一个.flv视频文件,java,file,video,flv,bytestream,Java,File,Video,Flv,Bytestream,我尝试将两个.flv视频文件合并为一个,但即使输出文件的大小正好是我尝试合并的两个视频的总和-1,当我尝试播放新的视频文件时,它会播放第一个文件。我确信这与在第一个视频读入输出流后设置结束标志有关,但我不确定如何修复并删除它,以便视频一直播放。我确保这两个文件在编码方面完全相同,因为我刚刚从obs录制了一些全屏颜色的测试视频。不管怎样,我该怎么解决这个问题呢 package testing.space; import java.io.File; import java.io.FileInput

我尝试将两个.flv视频文件合并为一个,但即使输出文件的大小正好是我尝试合并的两个视频的总和-1,当我尝试播放新的视频文件时,它会播放第一个文件。我确信这与在第一个视频读入输出流后设置结束标志有关,但我不确定如何修复并删除它,以便视频一直播放。我确保这两个文件在编码方面完全相同,因为我刚刚从obs录制了一些全屏颜色的测试视频。不管怎样,我该怎么解决这个问题呢

package testing.space;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;

public class TestingSpace
{

    public static void main(String args[])
    {

        final int BUFFERSIZE = 8192;
        String introFilePath = "C:\\ExampleFile1Path\\vid1.flv";
        String vodFilePath = "C:\\ExampleFile2Path\\vid2.flv";
        String outputFilePath = "C:\\ExampleOutputPath\\output.flv";

        try (
                FileInputStream intro = new FileInputStream(new File(introFilePath));
                FileInputStream vod = new FileInputStream(new File(vodFilePath));
                FileOutputStream fout = new FileOutputStream(new File(outputFilePath));
            )
        {

            byte[] introBuffer = new byte[BUFFERSIZE];
            int introBytesRead;

            while ((introBytesRead = intro.read(introBuffer)) > 0)
            {
                fout.write(introBuffer, 0, introBytesRead);
            }

            byte[] vodBuffer = new byte[BUFFERSIZE];
            int vodBytesRead;

            while ((vodBytesRead = vod.read(vodBuffer)) > 0)
            {
                fout.write(vodBuffer, 0, vodBytesRead);
            }

        }
        catch (Exception e)
        {
            System.out.println("Something went wrong! Reason: " + e.getMessage());
        }
    }
}

为什么你这么确定,只需低级别附加两个视频文件就可以生成一个?你是如何“确保两个文件在编码方面完全相同”的?您是否删除了第二个文件中的flv头?是否删除了aac/avc序列头(假设使用avc/aac编解码器)。你重写时间戳了吗?你怎么确定有一个“结束标志”?我把这两个视频都录成了一个1920×1080全屏颜色的简单OBS输出。编码类型是通过OBS设置的,从第一个文件到第二个文件不会有任何更改。我没有对文件做任何特殊的处理,因为我对视频文件格式没有太多经验。基于输出文件是两个文件大小的总和-1,但只播放第一个剪辑,我假设它与表示文件结尾的某个字节有关