我需要从一系列长度不定、未指定长度的 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 在评论中对答案的提示)