この記事では、Mac環境で動画を指定した時間範囲で切り抜くPythonプログラムを紹介します。プログラムの説明と共に、実際の使用例も紹介します。

1. 必要なインストール
このプログラムを動作させるために、以下のツールとライブラリをインストールする必要があります。
Pythonのインストール
まず、Pythonがインストールされていることを確認してください。ターミナルで以下のコマンドを実行して、Pythonのバージョンを確認します。
python3 --version
もしインストールされていなければ、Pythonの公式サイトからダウンロードしてインストールしてください。
FFmpegのインストール
FFmpegは動画処理に必要なコマンドラインツールです。以下のコマンドでHomebrewを使ってインストールできます。
brew install ffmpeg
必要なPythonライブラリのインストール
プログラムで使用するライブラリは標準ライブラリのみですが、pipを最新バージョンに更新しておくと良いでしょう。
pip install --upgrade pip
2. プログラムの説明
以下のプログラムでは、指定した開始時間と終了時間で動画を切り抜く機能を提供します。
時間形式の確認関数
import re
def is_valid_time_format(time_str):
pattern = r'^([0-9]{2}):([0-5][0-9]):([0-5][0-9])$'
return re.match(pattern, time_str) is not None
この関数は、入力された時間が「HH:MM:SS」の形式であるかをチェックします。
動画の切り抜き関数
import subprocess
def trim_video(input_path, start_time, end_time, output_path):
command = [
'ffmpeg',
'-ss', start_time,
'-i', input_path,
'-to', end_time,
'-c:v', 'libx264',
'-c:a', 'aac',
'-strict', 'experimental',
output_path
]
process = subprocess.Popen(command, stderr=subprocess.PIPE, universal_newlines=True)
for line in process.stderr:
if 'time=' in line:
print(f'\r進捗: {line.strip()}', end='')
process.wait()
print('\n処理が完了しました。')
この関数はFFmpegを使って、指定された時間範囲の動画を切り抜き、進捗状況を表示します。
メイン関数
import os
def main():
input_path = input("処理したい動画のパスを入力してください: ").strip().strip("'")
if not os.path.isfile(input_path):
print(f"ファイルが見つかりません: {input_path}")
return
while True:
start_time = input("開始時間を入力してください (HH:MM:SS): ")
if is_valid_time_format(start_time):
break
print("無効な時間形式です。HH:MM:SS の形式で入力してください。")
while True:
end_time = input("終了時間を入力してください (HH:MM:SS): ")
if is_valid_time_format(end_time):
break
print("無効な時間形式です。HH:MM:SS の形式で入力してください。")
output_name = input("出力ファイル名を入力してください(デフォルト: input_trimmed.mp4): ")
if not output_name:
output_name = os.path.splitext(os.path.basename(input_path))[0] + '_trimmed.mp4'
output_path = os.path.join(os.path.dirname(input_path), output_name)
try:
trim_video(input_path, start_time, end_time, output_path)
print(f"動画を切り抜きました: {output_path}")
except Exception as e:
print(f"エラーが発生しました: {str(e)}")
if __name__ == "__main__":
main()
このメイン関数は、ユーザーから入力を受け取り、動画を指定された時間範囲で切り抜きます。
3. プログラム全体
以下がプログラム全体です。
import os
import subprocess
import re
def is_valid_time_format(time_str):
pattern = r'^([0-9]{2}):([0-5][0-9]):([0-5][0-9])$'
return re.match(pattern, time_str) is not None
def trim_video(input_path, start_time, end_time, output_path):
command = [
'ffmpeg',
'-ss', start_time,
'-i', input_path,
'-to', end_time,
'-c:v', 'libx264',
'-c:a', 'aac',
'-strict', 'experimental',
output_path
]
process = subprocess.Popen(command, stderr=subprocess.PIPE, universal_newlines=True)
for line in process.stderr:
if 'time=' in line:
print(f'\r進捗: {line.strip()}', end='')
process.wait()
print('\n処理が完了しました。')
def main():
input_path = input("処理したい動画のパスを入力してください: ").strip().strip("'")
if not os.path.isfile(input_path):
print(f"ファイルが見つかりません: {input_path}")
return
while True:
start_time = input("開始時間を入力してください (HH:MM:SS): ")
if is_valid_time_format(start_time):
break
print("無効な時間形式です。HH:MM:SS の形式で入力してください。")
while True:
end_time = input("終了時間を入力してください (HH:MM:SS): ")
if is_valid_time_format(end_time):
break
print("無効な時間形式です。HH:MM:SS の形式で入力してください。")
output_name = input("出力ファイル名を入力してください(デフォルト: input_trimmed.mp4): ")
if not output_name:
output_name = os.path.splitext(os.path.basename(input_path))[0] + '_trimmed.mp4'
output_path = os.path.join(os.path.dirname(input_path), output_name)
try:
trim_video(input_path, start_time, end_time, output_path)
print(f"動画を切り抜きました: {output_path}")
except Exception as e:
print(f"エラーが発生しました: {str(e)}")
if __name__ == "__main__":
main()
4. 活用事例
このプログラムは、以下のようなシーンで活用できます。
- YouTube動画の一部を切り抜いて保存 長時間の動画から必要な部分だけを切り抜いて保存できます。
- 講義動画のハイライト作成 オンライン講義の重要部分だけを抽出し、ハイライト動画を作成できます。
- ホームビデオの編集 個人的なビデオから特定のシーンを切り抜き、編集に利用できます。
実際にプログラムを実行する際には、ターミナルで以下のコマンドを実行します。
python3 path/to/your_script.py
以上で、Mac環境で動画を指定した時間範囲で切り抜くPythonプログラムの紹介と、その活用方法について説明しました。このプログラムを使って、効率的に動画を編集し、必要な部分だけを抽出することができます。