如何在不降低质量的情况下合并两个 mp4 文件?

Pao*_*ino 56 video mp4 merge

我有两个高质量的 mp4 文件,它们是同一个节目的两个部分。

我想将它们合并到一个文件中,我通常使用 VirtualDub 来合并我的文件......但它似乎不支持 mp4。

有哪些替代方案(尤其是不需要重新编码的替代方案)?

bob*_*nce 48

我通常使用 VirtualDub 来合并我的文件,但它似乎不支持 mp4。那么有哪些替代方案呢?

Avidemux。它就像 VirtualDub 一样,只是支持更多的格式和内置的编解码器和过滤器。我总是优先使用它;它加入 AVC+AAC.MP4 文件(无需重新编码)对我来说很好。

在 AviDemux 中加入他们:

  1. 文件 -> 打开 -> 选择文件
  2. 文件 -> 附加 -> 选择文件
  3. 全部设为复制
  4. 文件 -> 保存 -> 文件名
  5. 等待..

根据 AViDemux 论坛,这个加入过程是无损的(http://www.avidemux.org/smf/index.php?topic=9467.0

  • 如果您使用 AviDemux 连接两个 Mp4 文件,请不要忘记选择左下角的 Mp4 Demux 选项。否则它可能会尝试将其转换为 avi! (4认同)

evi*_*oup 30

你可以用 ffmpeg 做到这一点:

mkfifo temp0 temp1
ffmpeg -i input0.mp4 -c copy -bsf:v h264_mp4toannexb -f mpegts -y temp0 2> /dev/null & \
ffmpeg -i input1.mp4 -c copy -bsf:v h264_mp4toannexb -f mpegts -y temp1 2> /dev/null & \
ffmpeg -f mpegts -i "concat:temp0|temp1" -c copy -absf aac_adtstoasc output.mp4
Run Code Online (Sandbox Code Playgroud)

这不会重新编码任何内容,而是将它们放在一个新的传输流容器中,这使它们更容易连接,然后将它们连接回 MP4。如果 output.mp4 已经存在,该命令将失败。上面的版本使用命名管道,如果您使用的系统不支持那些您必须使用中间文件(如 Windows)的系统:

ffmpeg -i input0.mp4 -c copy -bsf:v h264_mp4toannexb temp0.ts
ffmpeg -i input1.mp4 -c copy -bsf:v h264_mp4toannexb temp1.ts
ffmpeg -i "concat:temp0.ts|temp1.ts" -c copy -bsf:a aac_adtstoasc output.mp4
Run Code Online (Sandbox Code Playgroud)

  • +1 仅供将来参考,您可以在上述命令中将 `avconv` 替换为 `ffmpeg`,它会起作用。 (2认同)

eri*_*rik 17

连接分离器

concat demuxer 已添加到 ffmpeg 1.1。如果您的 ffmpeg 版本 旧,请从这里获取最新的静态二进制文件:http : //www.ffmpeg.org/download.html

指示

创建一个文件,mylist.txt其中包含您要以以下形式连接的所有文件(以破折号开头的行将被忽略):

# this is a comment
file '/path/to/file1'
file '/path/to/file2'
file '/path/to/file3'
Run Code Online (Sandbox Code Playgroud)

请注意,这些可以是相对或绝对路径。然后,您可以使用以下方法对文件进行编码:

ffmpeg -f concat -i mylist.txt -c copy output
Run Code Online (Sandbox Code Playgroud)

可以使用 bash for 循环或使用 printf 生成此列表文件。以下任一方法都会生成一个包含工作目录中每个 *.wav 的列表文件:

for f in ./*.wav; do echo "file '$f'" >> mylist.txt; done
printf "file '%s'\n" ./*.wav > mylist.txt
Run Code Online (Sandbox Code Playgroud)

资料来源:ffmpeg 维基


Era*_*ran 8

YAMBMP4BOX是一个不错的选择。
下载并解压(无需安装,总共约 5MB),在 YAMB 中选择 Settings 并设置 MP4box 的文件夹路径。
要加入 mp4 文件,请选择编辑 > 单击以加入支持...


Bre*_*ugh 7

尝试使用 Matroska 视频容器。

首先,您需要mkvtoolnix。下载并安装它,那么你需要火起来了mkvmerge GUI(除非你喜欢命令行工具,这是我很好-虽然你可能想要看文件链接部分的了mkvmerge文档)。

单击“添加”添加您的第一个文件。然后,单击“附加”,并打开您的第二个文件。设置输出文件,点击底部的“Start muxing”,然后就可以了!

在此处输入图片说明

如果容器不适合您的需求,您可以重新编码,或尝试将其转换为其他格式...虽然 MKV 是一个非常可爱的容器!


小智 6

SUPER ©(简化的通用播放器编码器和渲染器)提供以下额外的输出过程:

可以处理任何支持的输入多媒体文件:

      o Join Format-Identical Files.
      o Mux Video & Audio Streams.
      o DeMux Extract Streams. 
Run Code Online (Sandbox Code Playgroud)

当然,MP4 是支持的格式。

SUPER © 是免费软件。

  • 它的用户界面是我一生中见过的最可怕的。我不是在开玩笑,这只是太可怕了。我再次强调:*我无法说出更糟糕的界面,我很认真,我从未见过低于“超级阈值”的任何东西。* (5认同)