
pythonを使って、コマンドラインで簡単に、フォルダ内の動画ファイル(mp4)を、音声ファイル(mp3)に一括変換できるプログラムを作りました
の続きなので、上記で必要なプラグインなどをインストールした後に行ってください
実行するコマンド
$ # フォルダ内一括置換の場合
$ python convert.py mp3 {変換元ファイルのディレクトリ} {出力先ディレクトリ}
$ # 1ファイルのみの変換の場合
$ python convert.py mp3 {変換元ファイルパス} {出力先ディレクトリ}
用意するプログラムファイル(convert.py)
import os
import sys
import subprocess as sp
import glob
output_extension = sys.argv[1]
path = sys.argv[2].replace('\\', '/')
output_dir = sys.argv[3].replace('\\', '/')
# 末尾のスラッシュ「/」を削除する
if (output_dir[-1] == '/'):
output_dir = output_dir[:-1]
if (path[-1] == '/'):
path = path[:-1]
def convert(input_file, output_extension, output_dir):
# ディレクトリ作成
os.makedirs(output_dir, exist_ok=True)
file_name = os.path.splitext(os.path.basename(input_file))[0]
output_file_path = output_dir + '/' +file_name + '.'+output_extension
cmd_list = ['ffmpeg', '-i', input_file, output_file_path]
cmd = ' '.join(cmd_list)
print(cmd)
sp.call(cmd, shell=True)
if os.path.isdir(path):
# ディレクトリの場合
files = glob.glob(path+'/*')
for file in files:
tmp = file.replace('\\', '/').split('/')
input_file = path + '/' + file.replace('\\', '/').split('/')[len(tmp) - 1]
convert(input_file, output_extension, output_dir)
else:
# ファイルの場合
input_file = path
convert(input_file, output_extension, output_dir)