连接两个相同格式的视频

连接两个相同格式的视频

我正在尝试连接两个格式非常相似的视频:

Stream #0:0[0x1](und): Video: hevc (Main 10) (hev1 / 0x31766568), yuv420p10le(tv, bt709, progressive), 1920x1080 [SAR 1:1 DAR 16:9], 1037 kb/s, 23.98 fps, 23.98 tbr, 24k tbn (default)
    Metadata:
      handler_name    : VideoHandler
      vendor_id       : [0][0][0][0]
      encoder         : Lavc60.6.101 libx265
  Stream #0:1[0x2](eng): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, 5.1, fltp, 298 kb/s (default)
    Metadata:
      handler_name    : Surround
      vendor_id       : [0][0][0][0]

 Stream #0:0[0x1](und): Video: hevc (Main 10) (hev1 / 0x31766568), yuv420p10le(tv), 1920x1080 [SAR 1:1 DAR 16:9], 312 kb/s, 23.98 fps, 23.98 tbr, 24k tbn (default)
    Metadata:
      handler_name    : VideoHandler
      vendor_id       : [0][0][0][0]
  Stream #0:1[0x2](eng): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, 5.1, fltp, 224 kb/s (default)
    Metadata:
      handler_name    : SoundHandler
      vendor_id       : [0][0][0][0]

但最终拼接的视频在第一部分(第一个视频播放的地方)就卡住了。音频工作正常,但视频要么显示冻结帧,要么显示一堆损坏的帧。不确定哪里出了问题,因为视频编解码器、像素格式、视频编解码器……似乎都匹配。

我正在使用ffmpeg -f concat -i conc.txt -c copy output.mp4包含以下内容的 conc.txt 文件:

1.mp4
2.mp4

当我尝试使用此行连接从同一个基础视频中剪切出的两个视频时,它工作正常,所以我猜我的问题与不完全匹配的视频属性有关,但我无法弄清楚是哪一个。

为了澄清我的用例:2.mp4 是没有简介的节目剪辑的一集。1.mp4 是节目的替代简介。我想将简介重新添加到剧集中。我不想在连接每集时重新编码它们,所以我想保留这个-c copy参数。我可以单独重新编码替代简介 1.mp4,因为我只需要做一次。但我似乎无法重新编码简介以匹配剧集属性,从而使连接工作。

答案1

首先将介绍视频转换为与主视频匹配的视频:

ffmpeg -i 1.mp4 -c:v libx265 -vtag hvc1 -c:a copy 1_.mp4

然后更改 conc.txt 列表以匹配 1_.mp4 或删除 1.mp4 并将 1_.mp4 重命名为 1.mp4....

下一个:

ffmpeg -fflags +genpts -f concat -i conc.txt -c copy out.mp4

出.mp4

相关内容