Pipeline in livebook - dashboard example
Logger.configure(level: :info)
Mix.install([
  :kino_membrane,
  :membrane_hackney_plugin,
  :membrane_portaudio_plugin,
  :membrane_ffmpeg_swresample_plugin,
  :membrane_mp3_mad_plugin
])Prerequisities
Make sure you have the following libraries installed on your OS:
clang-format, portaudio19-dev, FFmpeg 4.*, libavutil-dev, libswresample-dev, libmad0-devOn Mac OS, you can install them via Homebrew:
brew install clang-format portaudio ffmpeg libmad pkg-configand on Debian via apt:
apt install clang-format portaudio19-dev ffmpeg libavutil-dev libswresample-dev libmad0-devDashboard
import Membrane.ChildrenSpec
alias Membrane.RCPipeline
pipeline = RCPipeline.start_link!()
RCPipeline.exec_actions(pipeline,
  spec:
    child(:hackney, %Membrane.Hackney.Source{
      location:
        "https://raw.githubusercontent.com/membraneframework/membrane_demo/master/simple_pipeline/sample.mp3",
      hackney_opts: [follow_redirect: true]
    })
    |> via_in(:input, auto_demand_size: 10)
    |> child(:decoder, Membrane.MP3.MAD.Decoder)
    |> child(:converter, %Membrane.FFmpeg.SWResample.Converter{
      output_stream_format: %Membrane.RawAudio{
        sample_format: :s16le,
        sample_rate: 48000,
        channels: 2
      }
    })
    |> child(:portaudio, Membrane.PortAudio.Sink),
  playback: :playing
)KinoMembrane.pipeline_dashboard(pipeline)Membrane.Pipeline.terminate(pipeline)