Hi!
I’ll keep saying this again and again – Membrane Team, kudos to you for all the good work you have been doing!
This post is pretty much a replica of an issue on Github but I figured out Elixir Forum may have a little more visibility.
This snippet is from an Endpoint for a Membrane WebRTC Engine
alias Membrane.RTC.Engine.Endpoint.WebRTC.TrackReceiver
alias Membrane.FFmpeg.SWResample.Converter
def handle_pad_added({_, _, track_id} = pad, ctx, state) do
structure = [
bin_input(pad)
|> child(:track_receiver, %TrackReceiver{
track: state.track,
initial_target_variant: :high
})
|> child(:depayloader, get_depayloader(state.track))
|> child(:opus_decoder, %Membrane.Opus.Decoder{
sample_rate: 16_000
})
|> child(:resample, %Converter{
output_stream_format: %RawAudio{channels: 1, sample_format: :f32le, sample_rate: 16_000}
})
|> child({:wav_serializer, track_id}, Membrane.WAV.Serializer)
|> child({:sink, track_id}, %Membrane.File.Sink{
location: Path.join(state.output_dir_path, "out.wav")
})
]
end
Whenever I’m resampling to s16le
or s24le
or s32le
the resulting out.wav
is perfectly fine. But resampling to f32le
produces a screeching and squeaking mess. ffmpeg
sees nothing wrong with the resulting file and I’m not savvy enough with audio processing to figure out the cause.
Do you have any ideas about why this might be happening?