ffmpeg去除视频前后各20秒,去除片头片尾

复制代码
#!/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()
复制代码

 

posted @   无恙大势  阅读(1190)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 25岁的心里话
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示