Recorder.js を使用してブラウザーでgetUserMedia({audio:true});
からオーディオを録音し、それをWAVファイルとしてエクスポートします。これは、ライブラリが提供する唯一のオプションだからです。
1分20秒のファイルのサイズは14.1 MBです。音声をサーバーにアップロードする必要があり、それを高速に行う必要があります。 WAVオーディオを他の圧縮形式に変換してファイルサイズを小さくするにはどうすればよいですか?
次のように変換してもかまいません。
現在、これらの形式に変換する方法がない場合、クライアントでWAVファイルを圧縮するにはどうすればよいですか?
PS:私はJSでWAVを変換するものを見つけるために多くの検索を行いましたが、何も見つかりませんでした。 libmp3lame.js はChromeでは機能しません。
ありがとう!
RecorderJSとlibmp3lame.jsを組み合わせたブラウザーから直接mp3に録音するオーディオレコーダーを作成しました
ここでgitHubプロジェクトを見つけることができます: https://github.com/nusofthq/Recordmp3js
実装の詳細な説明: http://nusofthq.com/blog/recording-mp3-using-only-html5-and-javascript-recordmp3-js/
あなたが本当に望んでいるのは、現在取り組んでいるmediaStream "Recording API"です。それが利用可能になるまで、C/C++ソースでemscriptemを使用することをお勧めします。UIや他のタブをブロックしないように、webworkerで実行することを検討してください。
私は同じ問題に直面していて、非常に迅速で汚い解決策を思い付きました:
さらに詳しい情報は Documentation Zip.js を参照してください
少なくともこれによりサイズが大幅に削減され、ファイルは約75%小さくなります1:4圧縮
更新:多分これを見てください: https://webrtc.github.io/samples/
これは、ChromeおよびFirefoxがgoogleによって開発されたチャットアプリケーションです。一種のCC-Licenseと想定しています。
私も同様の問題があり(recorder.jsも使用)、emscripenを使用してJavascriptへのffmpegのポートを含むすばらしい videoconverter.js プロジェクトを使用して解決できました。これの欠点は、ffmpeg.jsファイルが約25Mbであることです。
RecorderWorker.jsの既存のexportWAV
関数を変更して、両方のWAVを返すようにしました(HTML5の場合<audio>
playing)とエンコードされた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;
}
このメソッドは、ffmpegのlibavcodec
がサポートする任意のコーデックにWAVをエンコードするために使用できます。
opus.js を使用して圧縮を実現できました
ここに私の実装を見つけることができます: recordOpus ですが、問題があり、サーバーサイドと結合されており、node.js
サーバー..。