I’m trying to call FFMPEG with a complex filter from Ports, but despite the command working in my shell, I somehow miss the understanding to get it working in Elixir with ports when combined with a complex filter.
This works in my shell,
ffmpeg -i input.mp4 -filter_complex " [0:a] volume=1 [final_audio]" -map ‘[final_audio]’ output.mp4
but the following in Elixir does not work. It seems to get stuck before the transformation.
ffmpeg = System.find_executable(“ffmpeg”)
ffmpeg_args = [“-i”, “input.mp4”, “-filter_complex”, “[0:a] volume=1 [final_audio]”, “-map”, “[final_audio]”, “-c:v”, “libx264”, “output.mp4”]
Port.open({:spawn_executable, ffmpeg}, [{:args, ffmpeg_args}, :binary, :exit_status, :hide, :use_stdio])
also the following gets stuck:
ffmpeg_args = [“-i”, “input.mp4”, “-filter_complex”, “[0:a]”, “volume=1”, “[final_audio]”, “-map”, “[final_audio]”, “-c:v”, “libx264”, “output.mp4”]
On the other hand, the following works:
ffmpeg = System.find_executable(“ffmpeg”)
ffmpeg_args = [“-i”, “video.mp4”, final_output]
Port.open({:spawn_executable, ffmpeg}, [{:args, ffmpeg_args}, :binary, :exit_status, :hide, :use_stdio])