見出し画像

VLCを使ってmp3変換をバッチ処理

概要

VLCはプレイヤーとしてだけでも便利ですが、変換機能も便利ですよね。動画から音声だけを抜き出すのに使ってます。
1ファイルだけでもちょっと操作が面倒なのですが、ファイルが沢山あるとさらに面倒なので、windowsのバッチファイルにして引数で指定できるようにしました。

ソースコード(windows バッチファイル)

@echo off

set VLC="C:\Program Files (x86)\VideoLAN\VLC\vlc.exe"
set INPUT_FILENAME="%1"
REM 拡張子3文字固定
set OUTPUT_FILENAME=%INPUT_FILENAME:~0,-5%.mp3"

%VLC% --no-repeat --play-and-exit -I dummy -vvv %INPUT_FILENAME% --sout "#transcode{vcodec=none,acodec=mp3}:file{dst=%OUTPUT_FILENAME%}" vlc://quit
if exist %OUTPUT_FILENAME% (
	echo Done.
) else (
	echo Error.
)

呼び出し

上記スクリプトをconv.batとして保存して

$> conv.bat hoge.mp4

ポイント

普通にコマンドラインで呼ぶと、ずっと処理が返らないことがあります。これには2つ原因があります。

1つは、処理が終わった時にVLCを終了する指定。
今回は--play-and-exit, vlc://quit の両方をつけておきましたが、どちらか1つだけでも大丈夫でした。汎用的には後者のほうが良さそうです。

もう1つはループ。デフォルトなのか保存された設定なのかわかりませんが、全曲リピート指定されていると、処理がずっとループしてしまいます。--no-repeat でリピートしない指定にしています。

補足

・面倒なので拡張子は3文字固定で、それをmp3に変えるようにしました。
・サンプリングレート、チャンネル数なども指定できますが今回は省略。
・出力ファイルが出来たかどうかは出力するようにしておきました。

参考リンク

VLC公式
VLC command-line help - VideoLAN Wiki
Windowsバッチまとめ - Qiita
The Strange Storage: VLCを使ってWMAファイルをMP3へ変換する方法

おわりに

もしよければクリエイターサポートお願いします!

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