動画ファイルから音声データを一括で引き抜く 【Python & ffmpeg】

programming Python

動画ファイルから音声データを一括で引き抜く Python のスクリプトについてまとめておきます。
フォルダに動画(mp4)を複数入れておくと、一括で音声データ(mp3)を引き抜きます。

以下の環境で動作確認をしています。
環境:
・ Windows パソコン+仮想環境 Anaconda のインストール済み
・ ffmpeg を仮想環境(Anaconda Prompt 上)に設定済み
※ なお、ffmpeg というソフトウエアを使用しますので、Windows のコマンドプロンプト(または、Anaconda Prompt)で ffmpeg を設定しておく必要があります。設定方法は、下記の関連リンクを参照してください。

背景

先日、mp3 ファイルの指定箇所を繰り返し再生する Python のスクリプトをまとめました(下記の関連リンク参照)。
語学のリスニング練習などで、mp3 ファイルの好きな箇所だけを繰り返し再生できます。

一方、音声データのみならず、動画ファイル mp4 も多数、持っています。
具体的には、パソコン上で録画したファイルや、デジタルカメラで撮影した動画、ダウンロードした動画などです。
こうした動画ファイルから音声データ(mp3 ファイル)を引き抜くことができれば、音声に関してさらに便利になります。音声データを好きなように再生、編集できますし、他のデバイスでもよく聴く音楽や語学用のデータを簡単に活用できるようになります。

たまたま、私のパソコン環境(Windows + Anaconda)では、ffmpeg というソフトウェアを設定しています。また、Python でのプログラミングも自由にできる環境になっています。

そこで、mp4 形式の動画ファイルを mp3 形式に一括変換する Python のスクリプトをまとめておくことにします。ffmpeg の仕様によりますが、スクリプトを書き換えることで、mp4、mp3 以外のファイルにも対応できると思います。

なお、下記の Python のスクリプトは、もともと、Windows のコマンドプロンプト (Anaconda Prompt) 上で実行する ffmpeg のコマンドを、Python 側から繰り返し実行するといった程度の簡単な内容です。

設定方法

① Windows パソコンに、動画を変換するためのフォルダ(例: “mp4_to_mp3_converter”)を作成してください。
例: “c:\user\mp4_to_mp3_converter”
② ①のフォルダ内に “mp4_to_mp3_converter.py” 等の名前でテキストファイルを作成し、以下のサンプルスクリプトをコピー&ペーストして保存してください。
③ ①のフォルダ内に、さらに、”audio1″ というフォルダを作成してください。
動画 “mp4” を入れておくと、このフォルダ内に “mp3” を出力します。

使い方

④ ③のフォルダ “audio1” に動画ファイル(*.mp4)を入れてください。
⑤ コマンドプロンプト(または、Anaconda Prompt)を起動し、②のスクリプトを実行してください。
例: python c:\user\mp4_to_mp3_converter\mp4_to_mp3_converter.py

→ ③のフォルダ “audio1” 内に、mp3 ファイルが生成されたら成功です!

スクリプトの説明

・ スクリプトの内容は、下記の関連リンク「音声データの音量レベルを一括で変換する」とほぼ同じです。実行するコマンドを差し替えています。
・ 実行するコマンドは、mp4 から mp3 に変換するコマンドとしています。このコマンドを Python 側から実行しています。
・ スクリプトで mp4 となっている部分を他の拡張子に変更すると、別の動画フォーマットに対応できると思います。
・ また、mp3 となっている拡張子の部分を wav などに変更すると(ffmpeg が対応している範囲内で)、変更後のファイルフォーマットを指定できると思います。

まとめ

mp4 ファイルから mp3 を抽出する Python のスクリプトについてまとめました。
これで、動画ファイルから音声ファイルを引き抜くことが可能です。
他にも、音声や動画を扱うスクリプトなどについてまとめています。もし関心のある方は、以下の関連リンクなども参照してみてください。

関連リンク
・ 指定範囲を繰り返し再生するプレーヤー【Python】
・ ffmpeg のインストール手順 【Windows】
・ 動画のダウンロードに関するまとめ
・ 音声データの音量レベルを一括で変換する
・ ファイル名を一括変換する 【Python】
・ ファイルを一括で移動する 【Python】

サンプルスクリプト


import os 
import glob 

path1 = os.path.dirname(__file__) + "\\audio1\\"    
list1 = glob.glob( path1 + "*.mp4" ) 

for file1 in list1: 
    file2 = path1 + os.path.split( file1 )[1] 
    file3 = path1 + os.path.split( file1 )[1].split( "." )[0] + ".mp3" 
    cmd1 = "ffmpeg -i " + '"' + file2 + '" "' + file3 + '"'
    print( cmd1 ) 
    os.system( cmd1 ) 
タイトルとURLをコピーしました