aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark Felder <feld@FreeBSD.org>2020-08-27 12:47:29 -0500
committerMark Felder <feld@FreeBSD.org>2020-08-27 12:47:29 -0500
commitf1218a2b4e16178c8c1285157f7cd995dc950e3e (patch)
tree90c0cfad681356543a43893858afc7907953ac5e
parentef9d12fcc500d7429bee0d6ccffe3596434aee52 (diff)
downloadpleroma-f1218a2b4e16178c8c1285157f7cd995dc950e3e.tar.gz
ffmpeg needs input from fifo path, not stdin
-rw-r--r--lib/pleroma/helpers/media_helper.ex17
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)