#!/usr/bin/env python
# -*- encoding: utf-8 -*-
# here put the import lib
import os
import subprocess
import random
import string
def rename_mp4_files(folder_path):
files = [f for f in os.listdir(folder_path) if f.endswith(".mp4")]
for file in files:
old_file_path = os.path.join(folder_path, file)
new_file_name = ''.join(
random.choices(string.ascii_letters + string.digits, k=6)) + ".mp4"
new_file_path = os.path.join(folder_path, new_file_name)
os.rename(old_file_path, new_file_path)
def get_video_duration(filename):
result = subprocess.run(["ffmpeg", "-i", filename],
stdout=subprocess.PIPE,
stderr=subprocess.PIPE)
output = result.stderr.decode()
lines = output.splitlines()
for line in lines:
if "Duration" in line:
parts = line.split(",")
for part in parts:
if "Duration" in part:
duration = part.split()[1].split(".")[0]
hours, minutes, seconds = duration.split(":")
total_seconds = int(hours) * 3600 + int(
minutes) * 60 + int(seconds)
return total_seconds
return None
def convert_seconds(seconds):
hours = seconds // 3600
minutes = (seconds % 3600) // 60
remaining_seconds = seconds % 60
return "{:02d}:{:02d}:{:02d}".format(hours, minutes, remaining_seconds)
def ffmpeg_1():
input_folder = 'input'
output_folder = 'output'
# 获取 input 文件夹下所有的 MP4 文件
files = [f for f in os.listdir(input_folder) if f.endswith('.mp4')]
for file in files:
input_path = os.path.join(input_folder, file)
output_path = os.path.join(output_folder, file)
start_time = '00:00:20'
end_time = convert_seconds(get_video_duration(input_path) - 20)
# print(input_path, end_time)
# 去除视频的前 10 秒和后 10 秒,并去除上下左右各 10% 的像素
cmd = (
f'ffmpeg -i {input_path} -ss {start_time } -t {end_time} -vf "crop=iw*0.8:ih*0.8:iw*0.1:ih*0.1" '
f'-s 1280x720 {output_path} -y')
subprocess.run(cmd, shell=True)
rename_mp4_files('input')
ffmpeg_1()