这个问题已经在这里有了答案:
- 使用ffmpeg剪切视频 7个答案
我有30分钟的视频文件,但我想从00:09:23到00:25:33提取视频。
我可以使用定义起点-ss
,但找不到终点位置。有什么帮助吗?
这个问题已经在这里有了答案:
我有30分钟的视频文件,但我想从00:09:23到00:25:33提取视频。
我可以使用定义起点-ss
,但找不到终点位置。有什么帮助吗?
Answers:
确保您下载了最新版本的ffmpeg
,并且不要使用发行版随附的版本(例如Ubuntu)。各种发行版中的打包版本通常已过时,并且无法按预期运行。
或自己编译。
使用它从视频剪切[start]
为[duration]
:
ffmpeg -ss [start] -i in.mp4 -t [duration] -c copy out.mp4
在这里,这些选项的含义如下:
-ss
指定开始时间,例如00:01:23.000
或83
(以秒为单位)-t
指定剪辑的持续时间(相同格式)。 ffmpeg
也有一个标志来提供结束时间-to
。-c copy
将第一个视频,音频和字幕比特流从输入复制到输出文件,而无需重新编码。这不会损害质量并使命令在几秒钟内运行。如果您不-c copy
选择此选项,ffmpeg
则会根据您选择的格式自动对输出的视频和音频重新编码。要获得高质量的视频和音频,请分别阅读《x264编码指南》和《AAC编码指南》。
例如:
ffmpeg -ss [start] -i in.mp4 -t [duration] -c:v libx264 -c:a aac -strict experimental -b:a 128k out.mp4
我认为您现在可以使用以下命令。
ffmpeg -i inputFile -vcodec copy -acodec copy -ss 00:09:23 -to 00:25:33 outputFile
也可以看看ffmpeg Doc或此Wiki页面。
ffmpeg -i inputFile -c copy -ss 00:09:23 -to 00:25:33 outputFile
更简单的版本
ffmpeg -ss 00:01:00 -i video.mp4 -to 00:02:00 -c copy -copyts cut.mp4
(带有-copyts
)版本,否则它剪切不正确(开头带有黑屏)。谢谢第二个链接。
奇怪的是没有人建议使用trim
过滤器。
删除除输入的第二分钟外的所有内容:
ffmpeg -i INPUT -vf trim=60:120
仅保留第一秒钟:
ffmpeg -i INPUT -vf trim=duration=1
将所有内容从秒13删除到秒58:
ffmpeg -i INPUT -vf trim=13:58 OUTPUT
trim
和atrim
。我通常在过滤时使用这些,但用户应注意过滤需要重新编码。
您可以使用适用于Windows和Linux的这两种方法。
有两种方法通过ffmpeg分割视频文件。第一个本身就不错,而且还不错-速度更快,但有时会创建带有某些缺陷的输出文件。因此,在这种情况下,还有第二种分割视频文件的方法:它速度相当慢,输出文件更大,但是看来它们始终与输入文件具有相同的质量级别。
方法1:
ffmpeg -ss <start> -i in1.avi -t <duration> -c copy out1.avi
方式2:
ffmpeg -ss <start> -i in1.avi -t <duration> out1.avi
<start>
–视频ffmpeg的开始部分是剪切。格式:00:00:00.0000
,表示小时:分钟:秒:毫秒。
<duration>
–视频ffmpeg部分的持续时间将被删除。与上述格式相同。例子:
ffmpeg -ss 01:19:00 -i in1.avi -t 00:05:00 -c copy out1.avi ffmpeg -ss 01:19:00 -i in1.avi -t 00:05:00 out1.avi
ffmpeg从1小时19分0秒开始切出视频文件的一部分。视频片段的持续时间为5分钟0秒。
你可以用这个
ffmpeg -sameq -ss clip_start -t duration -i original.ogg clip.ogg
在这里,您必须提供视频时长。即。00:25:33-00:09:23
我使用以下语法用ffmpef剪切视频:
ffmpeg -sameq -ss [start_seconds] -t [duration_seconds] -i [input_file] [outputfile]
-t用于设置持续时间(以秒为单位)-您无法指定结束时间,但这应该适合您。
-sameq
根本不意味着“相同的质量”。