我有一個類似的問題(也使用recorder.js),並設法使用emscripen使用極好的videoconverter.js項目,其中包括一個ffmpeg到JavaScript的端口到Javascript。這方面的缺點是ffmpeg.js文件大約是25Mb。
我修改了recorderWorker中現有的exportWAV
函數。JS返回兩者WAV(用於HTML5 <audio>
播放)和含有一個編碼MP2文件的Blob:
function encodeWAV(samples) {
var buffer = new ArrayBuffer(44 + samples.length * 2);
var view = new DataView(buffer);
/* ... various writing methods */
return { wavdata: new Blob([buffer], { type: "audio/wav" }), mp2data: ffmpeg_convert(buffer) };
}
function ffmpeg_convert(buffer) {
console.log("starting mp2 conversion");
var args = "-i input -f mp2 output.mp2";
var results = ffmpeg_run({
arguments: args.split(" "),
files: [
{
data: new Uint8Array(buffer),
"name": "input"
}
]
});
if (results) {
var file = results[0];
console.log("File recieved", file.name, file.data);
return new Blob([file.data], { type: "audio/mpeg" });
}
return null;
}
此方法可用於編碼WAV到任何編解碼器通過FFmpeg的libavcodec
我有一個類似的帖子在http://stackoverflow.com/questions/17507799/convert-wav-to-ogg-on-app-engine-or-in- javascript - 我基本上有同樣的問題,我真的希望有人回答你的問題。 – Adrian
我昨天看到你的問題。對我而言,文件大小太大,因此將其上傳到服務器並轉換它並不是一個可行的選項。對於你的情況,如果你想上傳然後轉換,使用虛擬機是最好的選擇。 –