删除视频最后几帧 剪切视频
remove_last.py
import subprocess
def remove_last_frame(input_file, output_file, frame_rate):
command_duration = [
'ffprobe',
'-v', 'error',
'-show_entries', 'format=duration',
'-of', 'default=noprint_wrappers=1:nokey=1',
input_file
]
try:
total_duration = float(subprocess.check_output(command_duration).strip())
# 减去最后一帧的时长
new_duration = total_duration - (5 / frame_rate)
# 调用 ffmpeg 剪切视频
command_ffmpeg = [
'ffmpeg',
'-i', input_file,
'-t', str(new_duration),
'-c', 'copy', # 不重新编码
'-y', # 强制覆盖输出文件
output_file
]
subprocess.run(command_ffmpeg, check=True)
print(f"Successfully removed the last frame from {input_file} and saved as {output_file}")
except subprocess.CalledProcessError as e:
print(f"Error occurred: {e}")
# 示例使用
input_file = r"E:\project\depth\buquan2\JpS7kM8\seg\mp4_all\blur\20201229_100633_861519_0_107_25.mp4"
output_file = input_file[:-4]+"_new.mp4"
frame_rate = 25
remove_last_frame(input_file, output_file, frame_rate)