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