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