【发布时间】:2020-12-18 18:01:41
【问题描述】:
使用以下代码,我可以按时间修剪视频:
ffmpeg -i input.mp4 -filter_complex \
"[0:v]trim=60:65,setpts=PTS-STARTPTS[v0]; \
[0:a]atrim=60:65,asetpts=PTS-STARTPTS[a0]; \
[0:v]trim=120:125,setpts=PTS-STARTPTS[v1];
[0:a]atrim=120:125,asetpts=PTS-STARTPTS[a1]; \
[v0][a0][v1][a1]concat=n=2:v=1:a=1[out]" \
-map "[out]" output.mp4
以上代码修剪 60-65 秒和 120-125 秒的视频,然后连接到 output.mp4 文件中。
需要知道如何使用frame number 和连接来修剪视频。
是否可以使用Frame Number 和fps 来获取时间?
frame_1_start = 100 #Frame Number
frame_1_end = 200 #Frame Number
frame_2_start = 450 #Frame Number
frame_3_end = 700 #Frame Number
fps = 20 # Frame per second
time_x_1 = frame_1_start/fps
time_x_2 = frame_1_end/fps
time_y_1 = frame_2_start/fps
time_y_2 = frame_2_end/fps
ffmpeg -i input.mp4 -filter_complex \
"[0:v]trim=#{time_x_1}:#{time_x_2},setpts=PTS-STARTPTS[v0]; \
[0:a]atrim=#{time_x_1}:#{time_x_2},asetpts=PTS-STARTPTS[a0]; \
[0:v]trim=#{time_y_1}:#{time_y_2},setpts=PTS-STARTPTS[v1];
[0:a]atrim=#{time_y_1}:#{time_y_2},asetpts=PTS-STARTPTS[a1]; \
[v0][a0][v1][a1]concat=n=2:v=1:a=1[out]" \
-map "[out]" output.mp4
【问题讨论】: