是否可以使用 ffmpeg 从未指定长度的视频开头剪掉 X 秒?

是否可以使用 ffmpeg 从未指定长度的视频开头剪掉 X 秒?

我需要从一系列长度不定、未指定长度的 FLV 录制中剪掉前 1 秒或 2 秒。我发现了很多资源可以从视频中提取指定时长的内容(例如 30 秒的剪辑),但没有一个资源可以继续到视频的结尾。

这两种尝试都只是产生了视频的复制版本,没有进行所需的修剪:

ffmpeg -ss 2 -vcodec copy -acodec copy -i input.flv output.flv

ffmpeg -ss 2 -t 120 -vcodec copy -acodec copy -i input.flv output.flv

第二个想法是:如果我指定的长度超出可能的范围,它可能会直接到达终点。没戏。

我知道这不是编解码器的问题,也不是使用秒而不是时间码的问题,因为下面的方法很有效:

ffmpeg -ss 2 -t 5 -vcodec copy -acodec copy -i input.flv output.flv

还有其他想法吗?我愿意使用其他(基于 Windows)的命令行工具,但我强烈支持 ffmpeg,因为我已经在使用它来创建缩略图并且对它很熟悉。

如果有帮助的话,我的视频长度都会在 2 分钟以内。

更新:

我已经改用 Mencoder (http://www.mplayerhq.hu/) 因为看起来 ffmpeg 如果不进行一些额外的黑客攻击就无法实现这一点。

完成我所设定的任务的 Mencoder 语法是:

mencoder.exe -ss 2 -oac copy -ovc copy input.flv -o output.flv

答案1

尝试:

ffmpeg -i input.flv -ss 2 -vcodec copy -acodec copy output.flv

我认为输入参数应该是第一个。

答案2

事实证明这个命令将要正如预期的那样,从 2 秒开始剪辑视频:

ffmpeg -i input.flv -ss 2 -vcodec copy -acodec copy output.flv

问题出在 input.flv 中的关键帧间隔。它被设置为 5 秒,这导致视频开头出现 3 秒的黑帧(5 - 2 = 3)。此后,我将关键帧间隔改为 1 秒,不过 2 秒可能也能产生我所需的结果。

更新:根据 Dave 的回答更新了顺序-i-ss参数,我已接受并认可。

答案3

在 -i 之前使用 -ss 和 -to 如下所示:

ffmpeg -ss 00:01:10 -to 00:02:10 -i input -c copy output

答案4

使用-vcodec copy还导致我在修剪时视频功能不佳。

ffmpeg -i nick.mp4 -ss 52 -vcodec libx264 0 -acodec copy nick4.mp4

我能用它制作出一个正常工作的视频,并根据需要进行修剪。(感谢 Karl Wilbur 在评论中对答案的提示)

相关内容