2

我想使用 ffmpeg 将视频分成几部分。我有两个绝对的“位置”,而不是开始和持续时间。所以我不能这样使用它:

ffmpeg -ss 00:00:12.12 -t 00:00:14.13 -i foo.mov...

(再次,-t 之后的时间不是持续时间)我是否必须计算 to 位置之间的持续时间,还是 ffmpeg 可以为我做到这一点?

4

3 回答 3

2

从 FFmpeg 1.2(2013 年 3 月发布)开始,该-to选项可用于-t指定结束时间而不是持续时间。

于 2015-02-04T17:50:44.467 回答
1

使用这个 python 脚本

#!/bin/python
from sys  import argv
from os   import system

ffm = 'ffmpeg -i "' # input file
aud = '" -acodec libfaac -aq  64 -ac 2 -ar 44100'
vid =  ' -vcodec libx264 -crf 25 -r 25 -subq 9'
c=0
def encode(video,option=''):
   global c;   c+=1
   out = ' "'+ video + str(c) + '.mp4"'
   cmd = ffm + video + aud + vid + option + out
   print cmd;  system(cmd)

def seconds(time):
   t = [float(x)  for x in time.split(':')]
   if len(t)==1:  return t[0]
   if len(t)==2:  return t[1]+t[0]*60
   if len(t)==3:  return t[2]+t[1]*60+t[0]*3600

def split(time):
   (start,end) = [seconds(x) for x in time.split()]
   return ' -ss %s -t %s' % (start,end-start)

for slice in argv[2].split(','):
  encode(argv[1],split(slice))
#  $ python split.py "video.mpg" "1:50 9:10,7:30 15:30,13:30 20:10"

阅读man ffmpeg我看到了几种公认的-ss-t格式

这使您可以重叠切片。并且可以以毫秒精度分割。

$ python split.py "video.mpg" "55:30.356 1:01:10.895"

您必须根据自己的喜好编辑acodecvcodec

我推荐使用高于版本 100的libx264 内核的这些选项。

于 2013-06-03T14:38:37.280 回答
0

使用 -ss 标记您的开始,使用 -t 标记最终持续时间。-t 选项表示两个绝对位置之间的差异,您必须计算。

于 2012-04-25T06:38:47.460 回答