FFmpex/rambo "invalid command 'nil'" only in one environment

I’m using FFmpex to convert files uploaded through a form. Everything works as expected in my local environment but when deploying to my (Ubuntu Amazon ECS) dev server my execute(command) fails with invalid command 'nil'

    ** (ArgumentError) invalid command 'nil'
        (rambo 0.3.4) lib/rambo.ex:180: Rambo.run/3
        (ffmpex 0.10.0) lib/ffmpex.ex:147: FFmpex.execute/1
        (futurebits 0.1.0) lib/myapp/conversion.ex:67: Myapp.Conversion.convert_video/2

I’m new to this stack and not sure of where to start looking into this. Any suggestions? Thank you!

Hi Naja,
Could you post the command and code you use to obtain the error?

Yes, sorry. Here.

  def convert_video(file, conversions \\ 1) do
    output_path = "12345.mp4"
    command = FFmpex.new_command
      |> add_global_option(option_y())
      |> add_input_file(get_full_path(file))
      |> add_output_file(output_path)
      |> add_stream_specifier(stream_type: :video)
      |> add_stream_option(option_vcodec(Conf.converted_video_vcodec))
      |> add_stream_option(option_acodec(Conf.converted_video_acodec))
      |> add_stream_option(option_b(Conf.converted_video_vbitrate))
      |> add_file_option(option_bufsize(Conf.converted_video_buffer_size))
      |> add_file_option(option_max_muxing_queue_size(9999))
    :ok = execute(command)

Conf being a bunch of user-configurable strings. When I POST to this through automated testing on my local I can see the actual converted file, so it’s successful here. And when I try to prepare the command instead of execute it I get:

{"/usr/bin/ffmpeg", ["-y", "-i", "test/fixtures/large_test.mp4", "-max_muxing_queue_size", "9999", "-bufsize", "64K", "-b:v", "6K", "-acodec:v", "aac", "-vcodec:v", "libx264", "123456.mp4"]}

Thank you!

Have you tested what prepare returns on your server?

How does your Conf module work? The classic pitfall is using compile time configuration and trying to change it at runtime.