lib/exstream.ex

defmodule Exstream do
  import Plug.Conn

  defstruct [:conn, :path, :start, :end]

  @type t :: %__MODULE__{conn: %Plug.Conn{}, path: String.t(), start: String.t(), end: String.t()}

  def stream(%Exstream{conn: %Plug.Conn{} = conn, path: path, start: start, end: finish}) do
    Exile.stream!(
      ~w(ffmpeg -copyts  -ss #{start} -i #{path} -c copy -to #{finish} -f mpegts pipe:1)
    )
    |> Enum.into(
      conn
      |> send_chunked(200)
    )
  end
end