概要
- 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>