Have ideas to improve npm?Join in the discussion! »

    @etercast/mp3

    1.0.2 • Public • Published

    Etercast MP3 Encoder

    Etercast

    This repository contains part of the Etercast MP3 encoding library. It uses LAME and C/C++ -> WebAssembly compiler Emscripten.

    How to use it

    import instantiate from '@etercast/mp3'
     
    // instantiate() function fetches and instantiates the WASM module
    // and returns a Encoder class.
    // If you upload the mp3.wasm to a CDN you can specify the
    // WASM url by passing it to instantiate.
    // const Encoder = await instantiate('https://mycdn.com/mp3.wasm')
    const Encoder = await instantiate()
     
    // You can also use Encoder.create()
    const encoder = new Encoder({
      sampleRate: audioContext.sampleRate,
      samples: 2048,
      numChannels: 1
    })
     
    // leftChannelData must be a Float32Array with 2048 (the
    // specified in the encoder samples option) samples.
    // rightChannelData is optional (can be null or undefined).
    const encodedMP3Frames = encoder.encode(leftChannelData, rightChannelData)
     
    // Remaining MP3 encoded frames. It flushes available MP3
    // frames not returned in the previous call.
    const remainingEncodedMP3Frames = encoder.encode()
     
    const blob = new Blob([
      encodedMP3Frames,
      remainingEncodedMP3Frames
    ], {
      type: 'audio/mp3'
    })
    const url = URL.createObjectURL(blob)
    const a = document.createElement('a')
    a.href = url
    a.download = 'audio.mp3'
    a.dispatchEvent(new MouseEvent('click'))

    You need to copy mp3.wasm from node_modules/@etercast/mp3/dist/mp3.wasm into your dist or public folder.

    Parcel

    If you're using parcel you can achieve this by using the plugin parcel-plugin-static-files-copy and modifying your package.json to include this:

    "staticFiles": {
      "staticPath": [
        "node_modules/@etercast/mp3/dist"
      ],
      "excludeGlob": [
        "*.{js,mjs,cjs}"
      ]
    }

    Webpack

    TODO: Add webpack documentation

    How to build it

    If you have Emscripten installed locally then you can run:

    make

    Otherwise you can use the Docker image by trcezi to build the MP3 encoder by executing:

    npm run build:emscripten

    How to build documentation

    Calling npm run build will build this documentation but if you want to build documentation specifically you can run:

    npm run build:docs

    Demo

    If you want to see a live demo running, run:

    npm run serve:examples

    Made with ❤️ by ROJO 2

    Install

    npm i @etercast/mp3

    DownloadsWeekly Downloads

    19

    Version

    1.0.2

    License

    GPL-3.0

    Unpacked Size

    39.2 kB

    Total Files

    3

    Last publish

    Collaborators

    • avatar
    • avatar