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 /lib | |
| parent | ef9d12fcc500d7429bee0d6ccffe3596434aee52 (diff) | |
| download | pleroma-f1218a2b4e16178c8c1285157f7cd995dc950e3e.tar.gz pleroma-f1218a2b4e16178c8c1285157f7cd995dc950e3e.zip | |
ffmpeg needs input from fifo path, not stdin
Diffstat (limited to 'lib')
| -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) | 
