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へ変換する方法
おわりに
もしよければクリエイターサポートお願いします!
この記事が気に入ったらサポートをしてみませんか?