无法将2个视频流合并到一个文件中

时间:2019-08-12 08:23:17

标签: java inputstream bufferedinputstream

有人可以告诉我下面的代码有什么问题,我正在尝试将两个不同的视频URL合并到同一文件中(两个视频的大小均相同,为1024x720)

String url1 = "https://test.com/vid1";
String url2 = "https://test.com/vid2";

FileOutputStream out = new FileOutputStream(new File("test.mp4"));
writeToFile(url1, out);
writeToFile(url2, out);
out.close();

//Even tried the below way of first saving one file and then opening the same file to append the stream data
/*
FileOutputStream out = new FileOutputStream(new File("test.mp4"));
writeToFile(url1, out);
out.close();

out = new FileOutputStream(new File("test.mp4"), true);
writeToFile(url2, out);
out.close();
*/

void writeToFile(String url, FileOutputStream out) {
    HttpsURLConnection con = (HttpsURLConnection) new URL(url).openConnection();
    con.setRequestMethod("GET");

    BufferedInputStream bis = new BufferedInputStream(con.getInputStream());

    int count;
    byte buf[] = new byte[20480];

    while((count = bis.read(buf, 0, 20480)) != -1)
        out.write(buf, 0, count);

    bis.close();
    con.disconnect();
}

我尝试使用上述两种方法保存文件,但都只创建一个视频文件,即未附加第二个视频(如果使用不同的名称,我可以保存两个文件)

2 个答案:

答案 0 :(得分:0)

问题是替换文件的内容而不是替换。 函数 FileOutputStream(文件文件,布尔值追加)为此使用第二个参数。对第二个参数使用 true 值使用此方法

答案 1 :(得分:0)

要连接两个视频,您需要特殊的软件。 ffmpeg是一个:

ffmpeg -i vid-1.mp4 -i vid-2.mp4 -filter_complex“ [0:v:0] [0:a:0] [1:v:0] [1:a:0] concat = n = 2:v = 1:a = 1 [v] [a]“ -map” [v]“ -map” [a]“ all.mp4

如果要播放组合的视频。如果您只需要存储信息,则可以使用通常的方法。