copilot python movファイルをmp4へ変換

ツールをサブスクで買おうかと一瞬思いましたが、Copilotに書かせました。

GUIによるファイルのIO、フォルダ内の選択したファイルはすべて実施。作成日付もソートが容易なように元ファイルの値を引用する。以下の3段の質問で、出力しました。修正なしで正しく動作しました。

copilotへの3段の質問

・python で 動画のmov file をmp4へ変換して保存するコードを教えてください

・先ほどのコードで、python で guiから複数ファイルを選択して、1つ1つのファイルに対して順番に処理をしたいときのコードは?

・先ほどのコードで、作成したMP4のファイルが、元のMOVファイルの作成日時と同じ作成日時にして作成するコード

 

出力

import tkinter as tk
from tkinter import filedialog
import cv2
import os
import shutil

def convert_mov_to_mp4(input_file, output_file):
    # 動画キャプチャを作成
    cap = cv2.VideoCapture(input_file)

    # 動画のプロパティを取得
    fps = cap.get(cv2.CAP_PROP_FPS)
    width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))
    height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))
    fourcc = cv2.VideoWriter_fourcc(*'mp4v')

    # 動画ライターを作成
    out = cv2.VideoWriter(output_file, fourcc, fps, (width, height))

    while cap.isOpened():
        ret, frame = cap.read()
        if not ret:
            break
        # フレームを書き込む
        out.write(frame)

    # キャプチャとライターを解放
    cap.release()
    out.release()

    # 元のファイルのタイムスタンプを取得
    st = os.stat(input_file)
    # 新しいファイルにタイムスタンプを設定
    os.utime(output_file, (st.st_atime, st.st_mtime))

    print(f"{input_file} を {output_file} に変換し、元の作成日時と変更日時を設定しました!")

def process_files(file_paths):
    for file_path in file_paths:
        # 出力ファイル名を生成
        output_file = file_path.rsplit('.', 1)[0] + '.mp4'
        # MOVファイルをMP4ファイルに変換
        convert_mov_to_mp4(file_path, output_file)

def select_files():
    root = tk.Tk()
    root.withdraw()  # メインウィンドウを非表示にする
    file_paths = filedialog.askopenfilenames(title="Select MOV files", filetypes=[("MOV files", "*.mov")])
    process_files(file_paths)

if __name__ == "__main__":
    select_files()

これくらいのことは余裕でできるのですね。

コメント

タイトルとURLをコピーしました