見出し画像

【動画処理】動画からオーディオ抽出ツール サンプルコード

・業務効率化には何すればいいのかな?
・Pythonで自動化ツールを作成できると聞くけど、具体的に何が作れるの?
・自動化のアイデアが出てこない

こんな悩みを抱えている人に向けて、Pythonで作れる自動化ツールを解説しています。

動画処理のツールについて、こちらの記事で紹介しています。
 ⇒【画像・音声・動画】Pythonで作れる自動化ツールの具体例アイデア13選【業務効率化】

本記事では、動画からオーディオ抽出ツールのサンプルコードを公開しています。

サンプルコードは、自分で作成するのが難しい方や、ツール作成の手間を減らしたい方にお勧めです。ぜひご活用ください。

【関連記事】
【業務効率化】Pythonで作れる自動化ツール具体例・アイデア53選!
【Pythonで業務効率化】自動化ツールを自作する方法を5STEPで解説!



アイデア「動画からオーディオ抽出ツール」

概要

動画ファイルからオーディオトラックを抽出し、音声ファイルとして保存します。

導入メリット

動画の音声を簡単に別ファイルとして保存し、音声のみを利用したい場合の手間を省きます。

ツール機能

指定された動画ファイルから音声データを抽出し、mp3やwavといったオーディオフォーマットで保存します。

必要技術

moviepy:動画ファイルの読み込みとオーディオトラックの抽出・保存を行う

処理フロー

  1. オーディオを抽出したい動画ファイルをユーザーが選択

  2. 抽出するオーディオのフォーマット(例:mp3, wav)を指定

  3. moviepyを使用して動画からオーディオトラックを抽出

  4. 指定されたオーディオフォーマットでファイルを保存

  5. 処理の完了後、保存されたオーディオファイルの場所をユーザーに通知


注意事項

著作権について

本ソースコードの著作権は、販売者に帰属します。
修正や改変は自由に行えますが、無断での複製、配布は法律で禁止されています。

ライセンスについて

本ソースコードは、個人利用及び商用利用が可能です。ただし、再販売や、本ソースコードを基にした派生作品の販売は禁止します。

返金について

デジタルコンテンツの性質上、購入後の返品や返金は原則として受け付けておりません。

使用上の免責事項

本ソースコードは予告なく変更や修正を行う場合があります。
本ソースコードの動作を保証するものではありません。
本ソースコードの使用から生じたいかなる直接的または間接的な損害に対しても、販売者は責任を負いません。
動作の不具合については、購入者自身の責任で対処してください。

サポートについて

本ソースコードに関するサポートは行っておりません。バグ報告や質問への対応は致しかねます。


事前準備

音声を抽出する動画ファイルをフォルダに保存します。
複数のファイルを保存してもOKです。

動画ファイルを保存したフォルダのパスを確認してください。


ソースコード

from moviepy.editor import VideoFileClip
import os

def extract_audio_from_folder(folder_path, audio_format='mp3'):
    """
    指定されたフォルダ内の全動画ファイルからオーディオを抽出し、指定されたフォーマットで保存する。

    :param folder_path: 動画ファイルが含まれるフォルダのパス
    :param audio_format: 保存するオーディオのフォーマット('mp3'または'wav')
    """
    if audio_format not in ['mp3', 'wav']:
        raise ValueError("サポートされていないオーディオフォーマットです。'mp3'または'wav'を指定してください。")
    
    # フォルダ内の全ファイルを列挙
    files = [f for f in os.listdir(folder_path) if os.path.isfile(os.path.join(folder_path, f))]
    video_files = [f for f in files if f.lower().endswith(('.mp4', '.mov', '.avi', '.mkv'))]
    
    # エラーがあったファイルを記録する
    error_files = []

    for video_file in video_files:
        video_path = os.path.join(folder_path, video_file)
        try:
            # 動画ファイルを読み込む
            clip = VideoFileClip(video_path)
            # オーディオ部分を抽出
            audio = clip.audio
            # オーディオファイルを指定のフォーマットで保存
            audio_file_path = os.path.splitext(video_path)[0] + '.' + audio_format
            audio.write_audiofile(audio_file_path)
            print(f"オーディオファイルが保存されました: {audio_file_path}")
            # リソースの解放
            audio.close()
            clip.close()
        except Exception as e:
            print(f"エラーが発生しました: {e} - ファイル: {video_path}")
            error_files.append(video_path)

    # エラーがあったファイルのリストを表示
    if error_files:
        print("以下のファイルでエラーが発生しました:")
        for ef in error_files:
            print(ef)

def main():
    folder = input("オーディオを抽出する動画が含まれるフォルダのパスを入力してください: ")
    audio_format = input("保存するオーディオのフォーマットを指定してください (mp3, wav): ")
    extract_audio_from_folder(folder, audio_format)

if __name__ == "__main__":
    main()

最後まで読んでいただき、ありがとうございました!
参考のなったと思っていただけたら、
♡スキを押していただけると嬉しいです。

今後もサンプルコードを紹介する予定なので、
関心のある方は是非アカウントのフォローをお願いします!

この記事が気に入ったらサポートをしてみませんか?