2012-04-24 15 views
2

ffmpegを使用してビデオをパートにスライスしたいと思っています。私は2つの絶対的な「ポジション」を持ち、ではなく、の開始と期間を持っています。だから私はそのようにそれを使用することはできません。絶対終了位置でffmpegでビデオをカットする

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

(再び、-tの後に時間が期間ではありません)私は位置に間の期間を計算するために持っているか、ffmpegのは、これを行うことができます方法はあります私のために?

+0

http://stackoverflow.com/questions/8488238/how-to-do-timecode-calculationは余分な計算を伴う素晴らしいソリューションです – nonsenz

答えて

2

より大きいlibx264コアでこれらのオプションをお勧めします、-toオプションは、終了時間を指定する代わりにする-tの代わりに使用することができます期間。

0

-ssを指定すると、開始時刻がマークされ、最後の時刻が-tになります。 -tオプションは、2つの絶対的な位置の間の差異を示します。計算する必要があります。

1

使用このPythonスクリプトを

をffmpegの 男を読む
#!/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" 

私は、これはあなたが重複してスライスしてみましょう

-t -SS のためにいくつかの受け入れフォーマットを見ました。また、ミリ秒の精度で分割することもできます。

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

は、あなたの好みに acodecとvcodecを編集する必要があります。

私は(2013年3月リリース)版のFFmpeg 1.2のよう100