34

ライブラリが提供する唯一のオプションであるため、Recorder.jsgetUserMedia({audio:true});を使用してブラウザーからオーディオを録音し、WAV ファイルとしてエクスポートしています。

1 分 20 秒のファイルは 14.1 MB の大きさです。オーディオをサーバーにアップロードする必要があり、それを迅速に行う必要があります。WAV オーディオを他の圧縮形式に変換してファイル サイズを小さくするにはどうすればよいですか?

次のように変換してもかまいません:

  • MP3
  • オーパス
  • WebM
  • オグ
  • フラック
  • あなたが知っている他のフォーマット

現時点でこれらの形式に変換する方法がない場合、クライアントで WAV ファイルを圧縮するにはどうすればよいですか?

PS: JS で WAV を変換するものを見つけるために多くの検索を行いましたが、何も見つかりませんでした。libmp3lame.jsが Chrome で動作しません。

ありがとう!

4

5 に答える 5

32

RecorderJS と libmp3lame.js を組み合わせて、ブラウザーから直接 mp3 に録音するオーディオ レコーダーを作成しました。

ここで gitHub プロジェクトを見つけることができます: https://github.com/nusofthq/Recordmp3js

実装のより詳細な説明: http://nusofthq.com/blog/recording-mp3-using-only-html5-and-javascript-recordmp3-js/

于 2014-03-27T09:19:55.420 に答える
3

私は同じ問題に直面していて、非常に迅速で汚い解決策を思いつきました:

  • wav ファイルを zip.js で圧縮します (Chrome、Firefox、Safari 6、Internet Explorer 10 で動作します)。

詳細については、 Documentation zip.jsを参照してください。

少なくともこれにより、サイズが大幅に縮小されます。ファイルは約 75% 以上小さいため、1:4 圧縮

更新: 多分これを見てください: https://webrtc.github.io/samples/

Google が開発した Chrome および Firefox 用のチャット アプリケーションです。CC ライセンスのようなものを想定しています。

于 2013-11-21T01:50:00.180 に答える
2

同様の問題があり(recorder.jsも使用)、emscripenを使用してffmpegからJavascriptへのポートを含む優れたvideoconverter.jsプロジェクトを使用して解決できました。これの欠点は、ffmpeg.js ファイルが約 25Mb であることです。

WAV (HTML5再生用) と、エンコードされた MP2 ファイルを含む Blob のexportWAV両方を返すように、recorderWorker.jsの既存の関数を変更しました。<audio>

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 によってサポートされている任意のコーデックに WAV をエンコードするために使用できます。libavcodec

于 2014-01-10T14:02:14.933 に答える
1

opus.jsを使用して圧縮を実現できました、

ここで私の実装を見つけることができます: recordOpus、しかしキャッチがあります.私のものはサーバー側と結合されており、私はnode.jsサーバーを使用しています....

于 2014-09-26T03:42:39.217 に答える