Video compression with Elixir - pointers?

Hello every one. I’m working on a project about Video Compression in the cloud for my master degree graduation and one of my friend introduce me to Elixir, so i came here asking for some hints to accomplish my task.
Looking forward to hear from you and thanks for you time and efforts.

Check FFmpex github project.

1 Like

Offload it. You do not want to do video compression in the EVM, and there probably aren’t libraries for it written in Elixir or Erlang anyway.

There are basically three ways to offload stuff:

  • NFI (native function interface): Since video compression runs can be any length, and NFI should not run for extended periods of time, you’d have to chop it up, making the interface complicated. Also, a badly-behaved video compression routine can crash the entire EVM. I don’t recommend this.

  • network: Have your Erlang side speak some protocol with a separate server written in another language. That server does the compression.

  • spawn: Have your Erlang side open a run-to-completion app that does the decoding. This is probably the simplest way: your Erlang side can just fork off an instance of the ffmpeg CLI to do it.

If you want an especially cloud-y way to do it, you could do a hybrid of the network and spawn approaches, and have your Elixir service spawn a Docker container which does the encoding. Using Docker allows each encoding job to be hard-isolated in a similar way to how EVM processes are.

Thanks I appreciate it.

Thanks, I’m new with Elixir and EVM so it will take me a little time to understand it and try your solution.

Take a look at this:

1 Like