2012-04-24 4 views
2

ffmpeg를 사용하여 비디오를 조각으로 분할하고 싶습니다. 나는 두 절대적인 "위치"와 가 아니며 시작 시간과 지속 시간이입니다. 그래서 나는 그런 식으로 사용할 수 없습니다 : 방법의는 FFmpeg은이 작업을 수행 할 수절대 종료 위치로 ffmpeg로 비디오 자르기

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

(다시, 기간없는 -t 후 시간) 전 위치로 사이의 기간을 계산하거나 수행이있다 나를 위해서?

+0

http://stackoverflow.com/questions/8488238/how-to-do-timecode-calculation은 추가 계산이 필요한 멋진 솔루션입니다. – nonsenz

답변

2

보다 큰 libx264 코어 이러한 옵션을 권장의 -to 옵션은 종료 시간을 지정하는 대신에 -t 대신 사용할 수 있습니다 기간.

0

-ss는 시작을 표시하고 -t는 최종 기간입니다. -t 옵션은 두 절대 위치 사이의 차이를 나타냅니다. 계산해야합니다.

1

사용이 파이썬 스크립트

#!/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" 

읽고 난 -ss-t

에 대한 몇 가지 가능 형식을 보았다을 FFmpeg에 사람이 당신이 중복으로 슬라이스 수 있습니다. 또한 밀리 초 정밀도로 분리 할 수 ​​있습니다.

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

당신은 기본 설정으로 acodec 및 vcodec을 편집 할 수 있습니다.

내가 버전 (2013 월 출시)는 FFmpeg 1.2 (100)

관련 문제