我想使用ffmpeg将视频切片成部分。我有两个绝对的“位置”,不一个开始和一个持续时间。所以我不能那样用它:
ffmpeg -ss 00:00:12.12 -t 00:00:14.13 -i foo.mov...
(再次,-t不是持续时间之后的时间)我是否必须计算到位置之间的持续时间,或者ffmpeg是否有办法为我做这个?
答案 0 :(得分:2)
自FFmpeg 1.2(2013年3月发布)起,-to
选项可用于代替-t
来指定结束时间而非持续时间。
答案 1 :(得分: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"
您必须根据自己的偏好修改 acodec 和 vcodec 。
我推荐这些选项的 libx264核心大于100版。
答案 2 :(得分:0)
使用-ss标记您的开始并使用-t最终持续时间。 -t选项表示两个绝对位置之间的差异,您必须计算。