フリーの音源変換ソフトが色々と鬱陶しい
ので、エンコーダを集めた、俺流:音源変換ターミナルアプリを試作しようと考えました。
とりあえずLAMEによるwav→mp3変換
最初からターミナルっぽいものなんて作れないので、とりあえずLAME使ってwav→mp3変換を行います。
もちろんコンソールアプリで。
手順は以下の通り。
下記URLからLAMEのバイナリファイルを入手
http://www.rarewares.org/mp3-lame-dshow-acm.phpバイナリファイルを下記ディレクトリにコピー
・C:\Windows\System32
・C:\Windows
(2つとも必要なのかはよくわかっていない)下記コード(Spiral.cpp)をビルド&実行
Spiral.cpp
//---------------------------------
// Spiral.cpp
// WAV→MP3変換を行うアプリ
//
// 作成日:2016/10/15
// 更新日:2016/10/20
// 作成者:西森無理
//---------------------------------
#include <string>
#include <iostream>
#include <stdlib.h>
#include "stdafx.h"
using namespace std;
// 拡張子の場所を探す関数
//
// 入力:fullPath=ファイル名(パス付)
// 出力:ファイル名のみ
string extractFileName(string &fullPath)
{
string::size_type slPos;
if ((slPos = fullPath.find_last_of("\\")) == string::npos)
{
slPos = 0;
}
string::size_type idPos;
if ((idPos = fullPath.find_last_of(".")) == string::npos)
{
cerr << "ファイルに拡張子がついていません。" << endl;
return { EXIT_FAILURE };
}
return fullPath.substr(slPos + 1, idPos - slPos - 1);
}
// 拡張子の場所を探す関数
//
// 入力:fullPath=ファイル名(パス付)
// 出力:拡張子のみ
string extractIdentifier(string &fullPath) {
string::size_type idPos;
if ((idPos = fullPath.find_last_of(".")) == string::npos) {
cerr << "ファイルに拡張子がついていません。" << endl;
return{ EXIT_FAILURE };
}
return fullPath.substr(idPos + 1, fullPath.length() - idPos + 1);
}
// LAMEエンコーダを用いてwav→mp3変換を行う関数
//
// 入力:argc=コマンドライン引数の数
// 出力:argv[1]=入力ファイル名
// :argv[2]=ビットレート
int main(int argc, char** argv)
{
if (argc != 3)
{
cerr << "コマンドライン引数が間違っています。";
cerr << "使用方法:Spiral.exe 変換ファイル名 ビットレート\n";
return{ EXIT_FAILURE };
}
string codec = "lame";
string inFileName = argv[1];
string outFileName;
string outFileDir = "C:\\Users\\Yuuki\\Desktop";
string bitrate = argv[2];
string quality = "0";
string cmdLine;
if (extractIdentifier(inFileName) == "wav") {
outFileName = outFileDir + "\\" + extractFileName(inFileName) + ".mp3";
cmdLine = codec + " " + " -b " + bitrate + " -q " + quality + " --silent " + inFileName + " " + outFileName;
} else {
cout << "wav → mp3以外対応していません。" << endl;
}
system((const char*)cmdLine.c_str());
return EXIT_SUCCESS;
}
また、下記バッチファイルを作成。
Spiral.bat
@echo off
echo --------------
echo Spiral Ver0.1
echo --------------
set /P bitrate="bitrate : "
for %%a in (%*) do (
echo %%a
Spiral.exe %%a %bitrate%
)
これでSpiral.batにドラッグアンドドロップでwavファイルを放り込んでやれば、mp3ファイルが
作成されます。
※10/20追記
複数エンコーダを使用しようと思いましたが、自分のニーズを考えた結果これで終了とします。
バッチファイルの作成方法も少しわかったしよかったよかった。