diff options
author | Mark Felder <feld@FreeBSD.org> | 2020-08-27 12:47:29 -0500 |
---|---|---|
committer | Mark Felder <feld@FreeBSD.org> | 2020-08-27 12:47:29 -0500 |
commit | f1218a2b4e16178c8c1285157f7cd995dc950e3e (patch) | |
tree | 90c0cfad681356543a43893858afc7907953ac5e | |
parent | ef9d12fcc500d7429bee0d6ccffe3596434aee52 (diff) | |
download | pleroma-f1218a2b4e16178c8c1285157f7cd995dc950e3e.tar.gz |
ffmpeg needs input from fifo path, not stdin
-rw-r--r-- | lib/pleroma/helpers/media_helper.ex | 17 |
1 files changed, 11 insertions, 6 deletions
diff --git a/lib/pleroma/helpers/media_helper.ex b/lib/pleroma/helpers/media_helper.ex index 7e1af8bac..7c2bfbc53 100644 --- a/lib/pleroma/helpers/media_helper.ex +++ b/lib/pleroma/helpers/media_helper.ex @@ -39,16 +39,16 @@ defmodule Pleroma.Helpers.MediaHelper do def video_framegrab(url) do with executable when is_binary(executable) <- System.find_executable("ffmpeg"), + url = Pleroma.Web.MediaProxy.url(url), + {:ok, env} <- Pleroma.HTTP.get(url), + {:ok, fifo_path} <- mkfifo(), args = [ - "-i", "-", + "-i", fifo_path, "-vframes", "1", "-f", "mjpeg", "-loglevel", "error", "-" - ], - url = Pleroma.Web.MediaProxy.url(url), - {:ok, env} <- Pleroma.HTTP.get(url), - {:ok, fifo_path} <- mkfifo() do + ] do run_fifo(fifo_path, env, executable, args) else nil -> {:error, {:ffmpeg, :command_not_found}} @@ -57,7 +57,12 @@ defmodule Pleroma.Helpers.MediaHelper do end defp run_fifo(fifo_path, env, executable, args) do - args = List.flatten([fifo_path, args]) + args = + if _executable = System.find_executable("convert") do + List.flatten([fifo_path, args]) + else + args + end pid = Port.open({:spawn_executable, executable}, [:use_stdio, :stream, :exit_status, :binary, args: args]) fifo = Port.open(to_charlist(fifo_path), [:eof, :binary, :stream, :out]) true = Port.command(fifo, env.body) |