乐闻世界logo
搜索文章和话题

Ffmpeg 如何在不重新编码的情况下合并两个视频

4 个月前提问
3 个月前修改
浏览次数65

1个答案

1

当需要合并两个视频而又不希望重新编码时,可以使用 FFmpeg 的 concat 协议。这种方法适用于格式完全相同的视频文件,比如帧率、分辨率以及编码格式等都需要相同。

步骤如下:

  1. 准备视频文件
    首先确保两个视频文件格式完全一致。可以使用 ffprobe 命令查看视频信息。

  2. 创建文件列表
    在一个文本文件中列出所有要合并的视频文件的路径,每个路径占一行,并以 file 关键字开头。例如,创建一个名为 filelist.txt 的文件,内容如下:

    shell
    file 'video1.mp4' file 'video2.mp4'
  3. 使用 FFmpeg 进行合并
    执行下面的命令来合并视频:

    bash
    ffmpeg -f concat -safe 0 -i filelist.txt -c copy output.mp4

    这里 -f concat 指定使用 concat 协议,-safe 0 允许使用绝对路径或非常规字符,-i filelist.txt 指定输入文件列表,-c copy 用于指示 FFmpeg 在合并过程中复制原始数据流而不进行重新编码。

示例:

假设您有两个视频 clips,clip1.mp4clip2.mp4,都是相同的 H.264 编码,720p 分辨率。你可以按照以下步骤进行:

  1. 检查格式
    ffprobe clip1.mp4ffprobe clip2.mp4

  2. 创建文件列表
    编辑 filelist.txt,加入:

    shell
    file 'clip1.mp4' file 'clip2.mp4'
  3. 执行 FFmpeg 命令
    在命令行中输入:

    bash
    ffmpeg -f concat -safe 0 -i filelist.txt -c copy merged_video.mp4

这样,merged_video.mp4 将是合并后的视频,且不涉及重新编码,保持了原有视频质量。这种方法的优点是处理速度快,不会降低视频质量。但缺点是所有视频文件必须在编码、容器格式、帧率等方面完全匹配。如果存在不匹配,可能需要先转换为相同格式。

2024年6月29日 12:07 回复

你的答案