Skip to content

A node audio processing library using FFMPEG. It can convert audio files, concatenate, mix and more soon!

License

Notifications You must be signed in to change notification settings

DavidRobertAnsart/ffmpeg-audio-mixer

Repository files navigation

Ffmpeg audio mixer

A node audio processing library using FFmpeg. It can convert audio files and mix them.

Install

npm install ffmpeg-audio-mixer

or

yarn add ffmpeg-audio-mixer

Example

Converting an audio file:

import { mixAudio } from 'ffmpeg-audio-mixer';

await mixAudio('my-input.wav').toFile('my-output.mp3');

Mix audio files:

import { mixAudio } from 'ffmpeg-audio-mixer';

await mixAudio([
    'input1.mp3',
    {
        inputFile: 'input2.mp3',
        weight: 0.5, // volume of this input is halved
    },
    {
        inputFile: 'input3.mp3',
        delay: 4000, // this input is delayed by 4 seconds
    },
])
    .setVolume(1.4) // Can increase/decrease the volume of the mixed audio
    .setFrames(1000) // Limit the number of frames to process
    .setCodec('libmp3lame') // Set the output codec
    .setSampleFormat('s16') // Set the output sample format
    .toBuffer('mp3'); // Can output to a file, stream or buffer.

Documentation

Constructor:

new AudioMixer(inputs: AudioInput | AudioInput[], options?: OutputOptions) -> AudioMixer
// or
mixAudio(inputs: AudioInput | AudioInput[], options?: OutputOptions) -> AudioMixer

Creates an instance of AudioMixer, to which further methods are chained.

  • inputs: Inputs to process.
  • options: Output options: volume, frames, codec and sampleFormat.

AddInput:

addInput(input: AudioInput) -> AudioMixer
  • input: Additional input to process.

setOptions:

setOptions(options: OutputOptions) -> AudioMixer
  • options: Output options: volume, frames, codec and sampleFormat.

setFrames

setFrames(frames: number) -> AudioMixer
  • frames: Set the number of audio frames to output.

setCodec

setCodec(codec: string) -> AudioMixer
  • codec: Set the audio codec.

setSampleFormat

setSampleFormat(sampleFormat: string) -> AudioMixer
  • sampleFormat: Set the audio sample format.

setVolume

setVolume(volume: number) -> AudioMixer
  • sampleFormat: Set the audio output volume. Default is 1.

toFile

toFile(outputFileName: string) -> Promise<void>

toStream

toStream(fileFormat: string) -> NodeJS.ReadableStream
  • fileFormat: Format of the output. Ex: 'mp3', 'wav', ...

toBuffer

toBuffer(fileFormat: string) -> Promise<Buffer>
  • fileFormat: Format of the output. Ex: 'mp3', 'wav', ...

Contributing

Contributions, issues and feature requests are welcome!

License

Copyrigth 2022 David Robert-Ansart This project is MIT licensed.

About

A node audio processing library using FFMPEG. It can convert audio files, concatenate, mix and more soon!

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published