Problem converting mp4 to hls

Im trying to create a project with membrane to convert an mp4-file to an hsl. I get this error message:
[error] Mp4ToHls/:parser_audio Error occured in Membrane Element:
** (MatchError) no match of right hand side value: <<64, 20, 0, 24, 0, 0, 1, 244, 0, 0, 1, 244, 0, 5, 128, 128, 128, 2, 17, 144>>

defmodule Mp4ToHls do
  use Membrane.Pipeline
  require Logger

  @input_file "/Users/samy/Desktop/voorstelling.mp4"
  @output_dir "output"

  def start_link(opts \\ []) do
    Membrane.Pipeline.start_link(__MODULE__, opts, name: __MODULE__)
  end

  @impl true
  def handle_init(_ctx, _opts) do
    File.rm_rf!(@output_dir)
    File.mkdir!(@output_dir)

    spec = [
      child(:source, %Membrane.File.Source{
        location: @input_file
      })
      |> child(:demuxer, Membrane.MP4.Demuxer.ISOM),
      get_child(:demuxer)
      |> via_out(:output, options: [kind: :video])
      |> child(:parser_video, %Membrane.H264.Parser{output_stream_structure: :annexb})
      |> via_in(Pad.ref(:input, :video),
        options: [encoding: :H264, segment_duration: Membrane.Time.seconds(4)]
      )
      |> get_child(:hls),
      get_child(:demuxer)
      |> via_out(:output, options: [kind: :audio])
      |> child(:parser_audio, %Membrane.AAC.Parser{})
      |> via_in(Pad.ref(:input, :audio),
        options: [encoding: :AAC, segment_duration: Membrane.Time.seconds(4)]
      )
      |> get_child(:hls),
      child(:hls, %Membrane.HTTPAdaptiveStream.SinkBin{
        manifest_module: Membrane.HTTPAdaptiveStream.HLS,
        target_window_duration: Membrane.Time.seconds(15),
        storage: %Membrane.HTTPAdaptiveStream.Storages.FileStorage{directory: @output_dir}
      })
    ]

    {[spec: spec], %{}}
  end

  @impl true
  def handle_child_notification({:track_playable, _track_info}, :hls, _context, state) do
    Logger.info("HLS playlist is ready.")
    send(:script, :playlist_ready)
    {[], state}
  end

  @impl true
  def handle_child_notification(notification, _element, _ctx, state) do
    Logger.debug("Notification received: #{inspect(notification)}")
    {[], state}
  end
end

Hmm, it works fine for me, so I suppose it’s related to the file you’re trying to convert. Can you share it too? Or at least output from ffprobe /Users/samy/Desktop/voorstelling.mp4

I now know that the problem was with the file, but I find it weird because the file has the right properties, ffmpeg -i "/Users/samy/Desktop/voorstelling.mp4"

ffmpeg version 7.1 Copyright (c) 2000-2024 the FFmpeg developers
  built with Apple clang version 16.0.0 (clang-1600.0.26.6)
  configuration: --prefix=/Users/samy/.local/share/mise/installs/ffmpeg/7.1
  libavutil      59. 39.100 / 59. 39.100
  libavcodec     61. 19.100 / 61. 19.100
  libavformat    61.  7.100 / 61.  7.100
  libavdevice    61.  3.100 / 61.  3.100
  libavfilter    10.  4.100 / 10.  4.100
  libswscale      8.  3.100 /  8.  3.100
  libswresample   5.  3.100 /  5.  3.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '/Users/samy/Desktop/voorstelling.mp4':
  Metadata:
    major_brand     : mp42
    minor_version   : 1
    compatible_brands: isommp41mp42
    creation_time   : 2024-05-06T12:16:01.000000Z
  Duration: 00:00:16.42, start: 0.000000, bitrate: 10882 kb/s
  Stream #0:0[0x1](nld): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 125 kb/s (default)
      Metadata:
        creation_time   : 2024-05-06T12:16:01.000000Z
        handler_name    : Core Media Audio
        vendor_id       : [0][0][0][0]
  Stream #0:1[0x2](und): Video: h264 (High) (avc1 / 0x31637661), yuv420p(tv, bt709, progressive), 1280x720 [SAR 1:1 DAR 16:9], 10672 kb/s, 29.97 fps, 29.97 tbr, 30k tbn (default)
      Metadata:
        creation_time   : 2024-05-06T12:16:01.000000Z
        handler_name    : Core Media Video
        vendor_id       : [0][0][0][0]`

Yeah it looks correct, so it may be a bug in the demuxer or parser. Can you provide a full stacktrace?