diff options
author | Mark Felder <feld@FreeBSD.org> | 2020-08-27 12:31:55 -0500 |
---|---|---|
committer | Mark Felder <feld@FreeBSD.org> | 2020-08-27 12:31:55 -0500 |
commit | ef9d12fcc500d7429bee0d6ccffe3596434aee52 (patch) | |
tree | f7506e51a39a8848cbb4b28f06e0f6ff32aa8cb6 /lib/pleroma/helpers/media_helper.ex | |
parent | 157ecf402230c0b786f5765dd8b709d45c45974a (diff) | |
download | pleroma-ef9d12fcc500d7429bee0d6ccffe3596434aee52.tar.gz |
Attempt at supporting video thumbnails via ffmpeg
Diffstat (limited to 'lib/pleroma/helpers/media_helper.ex')
-rw-r--r-- | lib/pleroma/helpers/media_helper.ex | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/lib/pleroma/helpers/media_helper.ex b/lib/pleroma/helpers/media_helper.ex index 0299b16ae..7e1af8bac 100644 --- a/lib/pleroma/helpers/media_helper.ex +++ b/lib/pleroma/helpers/media_helper.ex @@ -37,6 +37,25 @@ defmodule Pleroma.Helpers.MediaHelper do defp prepare_image_resize_args(_), do: {:error, :missing_options} + def video_framegrab(url) do + with executable when is_binary(executable) <- System.find_executable("ffmpeg"), + args = [ + "-i", "-", + "-vframes", "1", + "-f", "mjpeg", + "-loglevel", "error", + "-" + ], + url = Pleroma.Web.MediaProxy.url(url), + {:ok, env} <- Pleroma.HTTP.get(url), + {:ok, fifo_path} <- mkfifo() do + run_fifo(fifo_path, env, executable, args) + else + nil -> {:error, {:ffmpeg, :command_not_found}} + {:error, _} = error -> error + end + end + defp run_fifo(fifo_path, env, executable, args) do args = List.flatten([fifo_path, args]) pid = Port.open({:spawn_executable, executable}, [:use_stdio, :stream, :exit_status, :binary, args: args]) |