python從大小上裁切影片,批次對指定資料夾中的影片進行裁剪

大话人生發表於2024-04-21

程式碼

import subprocess
import os
def get_all_mp4_files(directory):
    """獲取指定資料夾下所有的MP4檔案"""
    mp4_files = []
    # 遍歷指定目錄及其子目錄中的檔案
    for root, dirs, files in os.walk(directory):
        for file in files:
            # 檢查副檔名是否為.mp4
            if file.lower().endswith('.mp4'):
                # 將檔案的完整路徑新增到列表中
                mp4_files.append(os.path.join(root, file))
    return mp4_files





def ffmpeg_crop(input_path, output_path, width, height, x, y):
    # 構建ffmpeg命令
    cmd = [
        'ffmpeg',
        '-i', input_path,
        '-filter:v', f'crop={width}:{height}:{x}:{y}',  # 注意這裡的引數順序
        '-c:a', 'copy',  # 確保-c:a後面緊跟的是copy,而不是output_path
        output_path
    ]

    # 執行ffmpeg命令
    subprocess.run(cmd, check=True)





# 要裁剪的影片檔案路徑
genmulu = r"F:\陳惟\blender\blender材質篇\yuan"
video_list = get_all_mp4_files(directory=genmulu)

for one in video_list:

    x1 = 240  # 裁剪區域左上角的x座標
    y1 = 0  # 裁剪區域左上角的y座標
    x2 = 1680  # 裁剪區域右下角的x座標
    y2 = 1080  # 裁剪區域右下角的y座標
    # 要裁剪的影片檔案路徑
    video_path = one
    # 裁剪後的影片檔案路徑
    output_path = r'%s.caiqiehou.mp4'% str(one)

    # 定義裁剪區域的寬度和高度
    crop_width = x2 - x1  # 裁剪區域的寬度
    crop_height = y2 - y1  # 裁剪區域的高度

    # 使用示例
    ffmpeg_crop(video_path, output_path, crop_width, crop_height, x1, y1)

相關文章