我有30分钟的视频文件,但我想从00:09:23到00:25:33提取视频。
我可以使用
-ss
定义起点,但找不到终点位置。请帮忙吗?#1 楼
安装ffmpeg确保下载了最新版本的
ffmpeg
,并且不要使用发行版随附的版本(例如Ubuntu)。来自各种发行版的打包版本通常已过时,无法正常运行。或者自己编译。
如何剪辑视频,而无需重新编码
用它从
[start]
切出[duration]
的视频:ffmpeg -ss [start] -i in.mp4 -t [duration] -c copy out.mp4
这里的选项表示以下内容: >
-ss
指定开始时间,例如00:01:23.000
或83
(以秒为单位)-t
指定剪辑的持续时间(相同格式)。 代替
-t
,您还可以提供-to
的结束时间。-c copy
将输入的第一个视频,音频和字幕比特流复制到输出文件,而无需重新编码。这不会损害质量并使命令在几秒钟内运行。请注意,如果您使用了
-ss
,则必须从-to
时间戳中减去它。例如,如果使用-ss 3 -i in.mp4 -to 5
剪切,则输出将为5秒长。有关更多信息,请参见https://trac.ffmpeg.org/wiki/Seeking
如何通过重新编码来剪切视频
如果不使用
-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
#2 楼
我想您可以立即使用以下命令。ffmpeg -i inputFile -vcodec copy -acodec copy -ss 00:09:23 -to 00:25:33 outputFile
也请看ffmpeg Doc或此Wiki页面。
评论
ffmpeg -i inputFile -c复制-ss 00:09:23 -to 00:25:33 outputFile更简单的版本
– nwgat
16年11月20日在16:37
我必须使用ffmpeg -ss 00:01:00 -i video.mp4-至00:02:00 -c复制-copys cut.mp4版本(带有-copyts),否则它剪切不正确(开头是黑屏) )。谢谢第二个链接。
– Necronomicron
18年1月12日在15:51
太好了,我最后想要做的就是计算端点的持续时间。
– Tomasz Gandor
18年5月11日在9:50
-to选项回答实际提出的问题。其余的答案是无礼的或过时的。
–詹姆斯·鲍里(James Bowery)
18年5月15日在15:35
@Necronomicron,但时间戳可能不适用于该变体。
– jarno
20-4-2在23:33
#3 楼
奇怪的是没有人建议使用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
评论
是的,值得一提的是修剪和装饰。我通常在过滤时使用这些,但用户应注意,过滤需要重新编码。
– llogan
15年4月7日在17:28
你是我的英雄。我非常需要执行此操作的过滤器。
– fahadash
16 Dec 24'在5:55
#4 楼
您可以使用在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
评论
好的,谢谢。将签出文档,明天再试。
–juGGaKNot
13-10-3在19:18
-sameq并不意味着“质量相同”,已从ffmpeg中删除。请改用-codec copy。另外,不要忘记-to选项。
– llogan
13-10-3在20:47
我已经更正了您引用中的命令,因为它们已经过时了。请不要在未正确引用的情况下复制粘贴信息。
–slhck
13-10-4在10:08
#5 楼
您可以使用此ffmpeg -sameq -ss clip_start -t duration -i original.ogg clip.ogg
在这里,您必须提供视频时长。即。 00:25:33-00:09:23
评论
正如我在另一个答案中提到的那样:使用命令,您将重新编码文件,这绝对不是必需的,并且会导致质量降低和处理时间增加。
–slhck
2012年1月11日在21:18
#6 楼
我使用以下语法用ffmpeg剪切视频:ffmpeg -sameq -ss [start_seconds] -t [duration_seconds] -i [input_file] [outputfile]
-t用于设置持续时间(以秒为单位)-您无法指定结束时间,但这应该为您服务。
评论
为什么要设置FFmpeg重新编码文件?请注意,-sameq根本不表示“相同的质量”。
–slhck
2012年1月11日在21:18
评论
在Ubuntu 12:10上,-c:v和-c:a无效。我不得不使用“ -acodec复制和-vcodec复制”。
–塞缪尔·兰帕(Samuel Lampa)
13年4月2日在14:21
@Samuel然后,您正在使用一个过时的版本,它甚至不是真正的FFmpeg,而是Libav分支。请参阅:stackoverflow.com/a/9477756/1109017
–slhck
13年4月2日在14:45
谢谢你!如果您未指定持续时间,它将结束吗?
–杰夫
2014年3月31日在17:03
@Jeff是的! (最少字符)
–slhck
2014年4月1日下午5:34
@Prateek复制视频比特流(而不是重新编码)时,只能剪切关键帧。如果在第1、2和3秒有关键帧,但您想在1.5秒处剪切,则ffmpeg将等到第二秒后才能开始剪切。这使其不准确。
–slhck
2015年7月3日,12:36