删除视频最后几帧 剪切视频
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 = 25remove_last_frame(input_file, output_file, frame_rate)