Commit Graph

35 Commits

Author SHA1 Message Date
Mark Felder 0ac010ba3f Replace custom fifo implementation with Exile
This is for streaming media to ffmpeg thumbnailer. The existing implementation relies on undocumented behavior.

Erlang open_port/2 does not officially support passing a string of a file path for opening. The specs clearly state you are to provide one of the following for open_port/2:

    {spawn, Command :: string() | binary()} |
    {spawn_driver, Command :: string() | binary()} |
    {spawn_executable, FileName :: file:name_all()} |
    {fd, In :: integer() >= 0, Out :: integer() >= 0}

Our method technically works but is strongly discouraged as it can block the scheduler and dialyzer throws errors as it recognizes we're breaking the contract and some of the functions we wrote may never return.

This is indirectly covered by the Erlang FAQ section "9.12 Why can't I open devices (e.g. a serial port) like normal files?"
https://www.erlang.org/faq/problems#idm1127
2024-01-22 10:13:17 -05:00
Mark Felder 13baba90f6 Replace ImageMagick with Vips for Media Preview Proxy 2023-11-13 15:41:39 -05:00
lain e853cfe7c3 Revert "Merge branch 'copyright-bump' into 'develop'"
This reverts merge request !3825
2023-01-02 20:38:50 +00:00
marcin mikołajczak 10886eeaa2 Bump copyright year
Signed-off-by: marcin mikołajczak <git@mkljczk.pl>
2023-01-01 12:13:06 +01:00
Sean King 17aa3644be
Copyright bump for 2022 2022-02-25 23:11:42 -07:00
Haelwenn (lanodan) Monnier c4439c630f
Bump Copyright to 2021
grep -rl '# Copyright © .* Pleroma' * | xargs sed -i 's;Copyright © .* Pleroma .*;Copyright © 2017-2021 Pleroma Authors <https://pleroma.social/>;'
2021-01-13 07:49:50 +01:00
Ivan Tashkinov 4e4f771082 Adjusted MediaProxyControllerTest to gracefully fail on missing dependencies. Installation docs update.
Added ffmpeg/imagemagick checks to launch checks (if media preview proxy is enabled). Added documentation on installing optional media / graphics packages (imagemagick, ffmpeg, exiftool).
2020-09-26 19:32:16 +03:00
Ivan Tashkinov 7cdbd91d83 [#2497] Configurability of :min_content_length (preview proxy). Refactoring, documentation, tests. 2020-09-17 17:13:40 +03:00
Ivan Tashkinov a781f41f96 [#2497] Media preview proxy: misc. improvements (`static` param support, dynamic fifo pipe path), refactoring. 2020-09-16 22:30:42 +03:00
Ivan Tashkinov 68a74d6659 [#2497] Added missing alias, removed legacy `:adapter` option specification for HTTP.get/_. 2020-09-09 19:30:42 +03:00
Ivan Tashkinov f170d47130 [#2497] Adjusted media proxy preview invalidation. Allowed client-side caching for media preview. Adjusted prewarmer to fetch only proxiable URIs.
Removed :preview pool in favor of existing :media one. Misc. refactoring.
2020-09-05 20:19:09 +03:00
Ivan Tashkinov c3b02341bf [#2497] Made media preview proxy fall back to media proxy instead of to source url. Adjusted tests. Refactoring. 2020-09-05 16:16:35 +03:00
Mark Felder f25b0e87f3 URL passed to helper is already MediaProxy
Set :preview pool on the request
2020-09-03 15:28:57 -05:00
Mark Felder 4ef210a587 Credo 2020-08-30 09:32:22 -05:00
Mark Felder 2d2af75777 Support PNG previews to preserve alpha channels 2020-08-30 09:17:24 -05:00
href dfceb03cf4 Rewrite MP4/MOV binaries to be faststart
In some cases, MP4/MOV files can have the data _before_ the meta-data.

Thus, ffmpeg (and all similar tools) cannot really process the input if
it's given over stdin/streaming/pipes.

BUT I REALLY DON'T WANT TO MAKE TEMPORARY FILES

so here we go, an implementation of qtfaststart in elixir.
2020-08-28 21:14:28 +02:00
Mark Felder 3a5231ec8f Keep args construction within video/image scopes instead of mangling down in fifo town 2020-08-27 16:33:37 -05:00
Mark Felder dd1de994d5 Try to trick ffmpeg into working with this named pipe 2020-08-27 13:10:40 -05:00
Mark Felder f1218a2b4e ffmpeg needs input from fifo path, not stdin 2020-08-27 12:47:29 -05:00
Mark Felder ef9d12fcc5 Attempt at supporting video thumbnails via ffmpeg 2020-08-27 12:31:55 -05:00
Mark Felder 697bea0473 Move arg for images to the list so we can reuse these fifo functions for videos 2020-08-26 17:43:25 -05:00
Mark Felder 9567b96c79 Rename to make it obvious this is for images not videos 2020-08-26 16:40:13 -05:00
Mark Felder 2c95533ead Change method of convert using stdout, make progressive jpegs 2020-08-26 15:37:45 +00:00
Mark Felder d4d1192341 Remove auto-orient; don't use it on previews, only originals 2020-08-26 14:28:25 +00:00
href bc94f0c6da Use mkfifo to feed ImageMagick 2020-08-26 16:12:34 +02:00
Mark Felder a136e7e9b5 Try specifying fd0, force jpg out 2020-08-25 18:10:27 -05:00
Mark Felder afa03ca8e2 Allow both stdin and stdout 2020-08-25 17:36:53 -05:00
Mark Felder 899ea2da3e Switch to imagemagick, only support videos 2020-08-25 17:18:22 -05:00
href edde0d9b54 Remove newline for linter 2020-08-21 17:40:49 +00:00
href 967afa064b Fix truncated images 2020-08-21 17:02:57 +00:00
Ivan Tashkinov aa0a5ffb48 [#2497] Media preview proxy: added `quality` config setting, adjusted width/height defaults. 2020-08-21 08:59:08 +03:00
Ivan Tashkinov da116d81fb [#2497] Added video preview proxy. Switched from exexec to Port. 2020-08-18 18:23:27 +03:00
Ivan Tashkinov 3a1e810aaa [#2497] Customized `exexec` launch to support root operation (currently required by Gitlab CI). 2020-05-21 21:47:32 +03:00
Ivan Tashkinov 610343edb3 [#2497] Image preview proxy: image resize & background color fix with ffmpeg -filter_complex. 2020-05-21 17:35:42 +03:00
Ivan Tashkinov 1871a5ddb4 [#2497] Image preview proxy: implemented ffmpeg-based resizing, removed eimp & mogrify-based resizing. 2020-05-20 20:26:43 +03:00