java - 如何在Java中连接/合并两个视频到一个新的视频文件中?

标签 java video merge concatenation

我正在使用 humble-video 创建视频的RecordAndEncodeVideo.java

我现在想要合并两个视频,第一个是录制的视频,第二个是我的系统上预先存储的具有相同帧速率和分辨率的视频。由于限制,我想通过在java中使用humble-video apis来做到这一点。如果有人用过请指导我如何做。

这是我尝试过的代码:

  public static void combineVideo() throws InterruptedException, IOException {
    final Demuxer demuxer = Demuxer.make();
    demuxer.open("a.mp4", null, false, true, null, null);
    final Muxer muxer = Muxer.make("b.mp4", null, null);
    final MuxerFormat format = muxer.getFormat();
    final MediaPacket packet = MediaPacket.make();
    muxer.open(null, null);
    while (demuxer.read(packet) >= 0) {
        muxer.write(packet, false);
    }
    muxer.close();
    demuxer.close();
}

更新

我想连接两个视频文件并另存为新的视频文件。我知道在之前的问题中已经问过这个问题例如-

  1. how-to-concat-or-merge-two-or-more-video-files-in-android
  2. merge-multiple-video-file-in-a-file

但大多数答案都链接到不可用的资源或库。谁能指导我一些资源。任何代码片段可能会有帮助。

最佳答案

大多数编解码器也不支持串联 - 它不会帮助您将比特流连接在一起。

但是,如果您确定编解码器具有相同的属性,则某些容器格式支持串联。 MPEG-TS 就是其中之一。您可以将视频复制到传输流中而无需重新编码,然后使用正常的文件操作连接传输流。

关于java - 如何在Java中连接/合并两个视频到一个新的视频文件中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38123693/

相关文章:

java - 需要在 git 中有两个不同的分支,忽略不同的文件,但可以轻松 merge

java - 删除字符串中的重复字符(用户输入的关键字)

android - 来自 Google Glass 的实时视频流的 H.264 硬件编码

video - 从 ffmpeg 获取视频尺寸/分辨率/宽度 x 高度

python - 编辑Quicktime文件头-音频轨道分配标志,时间码轨道

android - Gradle:Manifest 合并更改了 AndroidManifest 文件中 "theme"参数的值:

java - 与 jackson 一起将对象转储到字符串

java - 仅打包依赖项中必要的类

java - 为什么 Jetty 启动时会建立很多连接?

python - Pandas merge_asof 问题 : one-to-multiple merge