前回の記事:
前回、ubuntu環境で、Pythonからffmpegを使用して、mp4からmp3やwavファイルを作成してみましたが、今回は、Windowsでやってみます。
テスト用の動画ファイルのサンプル素材は、以下からお借りしています。
フリー動画素材1~10 海や7月の稲など - カフィネット
ダウンロードしたファイル
free-video1-sea-cafinet.mp4
#コード
ubuntu用に作成した物をPATHだけ変更
# -*- coding: utf-8 -*-
import sys, re, glob, ffmpeg
TYPE:str = "mp3"
FILE_PATH:str = ".\*.[Mm][Pp]4"
# mp4 -> [mp3][wav]
def mp4_to_mp3(path,type):
ffmpeg.run(
ffmpeg.output(
ffmpeg.input(path) ,
re.sub("\.(mp4|MP4)$","."+type,path)
))
if ( __name__ == "__main__" ):
[mp4_to_mp3(path,TYPE) for path in glob.glob(FILE_PATH)]
ffmpegをインストール
#モジュールインストール
#実行
mp4_to_mp3.py があるフォルダに「ffmpeg.exe」と「free-video1-sea-cafinet.mp4」を配置
コマンド
$ python mp4_to_mp3.py
実行後、「free-video1-sea-cafinet.mp3」が作成されれば成功
#EXE化
$ pyinstaller mp4_to_mp3.py --onefile
distフォルダ内に、exeファイルが作成されます。
EXEファイル実行
$ .\dist\mp4_to_mp3.exe
EXEファイルから、mp3が無事作成されました
#その他
指定フォルダ内のmp4を一括でmp3に変換するように作ってますが、ドラッグアンドドロップ機能を実装すると、もっと使いやすくなると思います。
#ドラッグアンドドロップを実装
調べると、簡単にできるようなのでやってみました。
# -*- coding: utf-8 -*-
import sys, re, glob, ffmpeg
TYPE:str = "mp3"
FILE_PATH:str = ".\*.[Mm][Pp]4"
# mp4 -> [mp3][wav]
def mp4_to_mp3(path,type):
ffmpeg.run(
ffmpeg.output(
ffmpeg.input(path) ,
re.sub("\.(mp4|MP4)$","."+type,path)
))
if ( __name__ == "__main__" ):
[mp4_to_mp3(path,TYPE) for path in sys.argv[1:]]
変更したのは一番下のこの行のみです。
[mp4_to_mp3(path,TYPE) for path in sys.argv[1:]]
スライスを利用して、sys.argv[1:]で、2番目以降の引数を取得しています。
このやり方だと、ドラッグアンドドロップ以外に、コマンドラインからの引数指定も可能。
無事作成されました。
#EXE化
$ pyinstaller mp4_to_mp3.py --onefile
#ERROR:ffmpeg._run.Error: ffmpeg error (see stderr output for detail)
distフォルダ内のexeファイルを、1つ上のディレクトリに移動
改めて実行
今回は、無事作成されました。