如何从视频中删除多个片段同时保留音频?

如何从视频中删除多个片段同时保留音频?

我已经尝试过这个答案。它运行良好,只是缺少音频。有人能建议如何将视频和音频都放入输出中吗?

例子:

我在假期拍摄了一段时长 2 分钟的袋鼠视频。视频中有两部分(每部分约 6 秒长),我想将其(包括音频)提取成一段简短的视频,只包含这两段可爱的片段。

我知道我可以提取两个单独的位,然后将它们连接起来,但上面提到的文章允许我做我想要做的事情,但是当你按照那个方法时没有音频。我想使用类似的 FFmpeg 单次调用。

答案1

这里我假设您的原始文件在mp4容器中,但该方法也适用于其他容器。

一步法-(稍微复杂一些)另请参阅 ptQa 在引用线程。但这里是添加了音频的相同内容:

ffmpeg -i inputfile.mp4 \
       -filter_complex "[0:v]trim=start=10:end=16,setpts=PTS-STARTPTS[a];
                        [0:v]trim=start=20:end=26,setpts=PTS-STARTPTS[b];
                        [0:a]atrim=start=10:end=16,asetpts=PTS-STARTPTS[c];
                        [0:a]atrim=start=20:end=26,asetpts=PTS-STARTPTS[d];
                        [a][c][b][d]concat=n=2:v=1:a=1[e][f]" \
       -map '[e]' -map '[f]' -strict -2 outputfile.mp4    

这将添加音频流和获取音频所需的垫片。

为完整性起见,提供:

简单的方法:您可以使用您已经知道的两步流程:

第一的从完整视频中剪切并提取您想要的 2 个片段。
第二将这两部分连接在一起。

这应该是一条简单的出路。

比如说,剪切从第三秒到第九秒的片段:

ffmpeg -i input.mp4 -ss 00:00:03 -to 00:00:09 -c:v copy -c:a copy part1.mp4    

您可以对第二部分重复此过程。如果是从第 10 秒到第 16 秒:

ffmpeg -i input.mp4 -ss 00:00:10 -to 00:00:16 -c:v copy -c:a copy part2.mp4

另请参阅线程以了解更多详细信息。

现在您有 2 个文件可以合并。您可以用至少 3 种不同的方式“连接”。无需重新编码即可通过解复用器选项完成此操作。创建一个名为 joinlist.txt 的文本文件,内容如下:

file 'part1.mp4'
file 'part2.mp4'

要合并这两个文件,请将两部电影和文本(joinlist.txt)放在同一个文件夹中,然后使用此命令:

ffmpeg -f concat -i joinlist.txt -c copy joinedfile.mp4

相关内容