概要
- SH703i で再生できる AAC は、特にエンコードのパラメータにこだわなくても作れそう
再生できるビットレート、サンプルレートの確認
16?320kbps の範囲のビットレートと、8,000?48,000Hz の範囲のサンプルレートで AAC を作って、SH703i で再生できるか実験してみた。
実験の結果、全180通りの全てのファイルが再生できた。ただし、高ビットレートになると、まれに音飛びが起きた。
極端な値にしなければ、特に再生できないということになならないようだ。
ただし、ビットレートは56?256kbps、サンプルレートは8,000?22,050kHzの範囲から外れると、ファイルサイズがほとんど変化していないので、指定しても意味がないようだ。ソースファイルによるものか、FAAC の仕様よるものなのかわからないけど。
実験に使った AAC は次のスクリプトで作った。
var CWD = WScript.ScriptFullName.substr(0, WScript.ScriptFullName.lastIndexOf("\\")+1);
var INFILE = CWD + "072_C4KM56_S.wav";
var bitrates = [ null, 16, 20, 24, 32, 40, 48, 56, 64, 80, 96, 128, 160, 192, 224, 256, 288, 320 ];
var freqs = [ null, 8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000 ];
var n = 1;
// Logfile
var fso = WScript.CreateObject("Scripting.FileSystemObject");
var ts = fso.CreateTextFile(WScript.ScriptFullName + ".log", true);
var bitrate, freq, outfile, options, time, filesize, status;
for(var i=0;i<bitrates.length;i++) {
bitrate = bitrates[i];
for(var j=0;j<freqs.length;j++) {
freq = freqs[j];
outfile = "MMF" + ("000" + n).slice(-4) + ".mp4";
options = { bitrate: bitrate, freq: freq };
var tmp = new Date().getTime();
status = faac(INFILE, outfile, options);
time = new Date().getTime() - tmp;
// check if AAC file created
try {
filesize = fso.GetFile(outfile).Size;
} catch(ex) {
filesize = undefined;
}
// append record to Logfile
ts.WriteLine([outfile, filesize, time, status, options.bitrate, options.freq].join("\t"));
n++;
}
}
ts.Close();
WScript.Echo("all processed");
function faac(infile, outfile, options) {
var oExec;
var faac = "faac";
faac += options.quality ? " -q " + options.quality : "";
faac += options.bitrate ? " -b " + options.bitrate : "";
faac += options.freq ? " -c " + options.freq : "";
faac += " -w"; // Wrap AAC data in MP4
faac += outfile ? " -o " + outfile : "";
faac += " " + INFILE;
oExec = WScript.CreateObject("WScript.Shell").Exec(faac);
while(oExec.Status == 0) {
WScript.Sleep(100);
}
return oExec.Status;
}
参考文献
- WshShell オブジェクト <http://msdn.microsoft.com/ja-jp/library/cc364436(v=MSDN.10).aspx>