Plugin providing elements handling audio in WAV file format.
It is part of Membrane Multimedia Framework.
The package can be installed by adding membrane_wav_plugin
to your list of dependencies in mix.exs
:
def deps do
[
{:membrane_wav_plugin, "~> 0.10.1"}
]
end
The Parser requires a WAV file on the input and provides a raw audio in uncompressed, PCM format on the output.
Parsing steps:
- Reading WAV header
- Extracting audio metadata and sending it through a pad to the next element
- Sending only audio samples to the next elements
It can parse only uncompressed audio.
The Serializer adds WAV header to the raw audio in uncompressed, PCM format.
The Serializer creates header with invalid blocks which depend on the file size. You can bypass this
using Membrane.File.Sink
to save the file or fixing the header afterwards with Membrane.WAV.Postprocessing
if you need to use any other sink.
defmodule Mixing.Pipeline do
use Membrane.Pipeline
@impl true
def handle_init(_ctx, _opts) do
spec = child(:file_src, %Membrane.File.Source{location: "/tmp/input.wav"})
|> child(:parser, Membrane.WAV.Parser)
|> child(:converter, %Membrane.FFmpeg.SWResample.Converter{
input_stream_format: %Membrane.RawAudio{channels: 1, sample_rate: 16_000, sample_format: :s16le},
output_stream_format: %Membrane.RawAudio{channels: 2, sample_rate: 48_000, sample_format: :s16le}
})
|> child(:serializer, Membrane.WAV.Serializer)
|> child(:file_sink, %Membrane.File.Sink{location: "/tmp/output.wav"})
{[spec: spec], %{}}
end
end
Copyright 2021, Software Mansion
Licensed under the Apache License, Version 2.0