Можете ли вы заставить fluent-ffmpeg использовать копию ffmpeg, работающую внутри контейнера Docker?

#docker #ffmpeg #docker-volume #fluent-ffmpeg

#docker #ffmpeg #docker-volume #fluent-ffmpeg

Вопрос:

У меня есть некоторый код nodejs в папке на хост-компьютере, в которой есть модуль npm, для которого требуется установить переменную среды, чтобы использовать исполняемый файл с именем FFmpeg. У меня есть контейнерный FFmpeg вместе с его зависимостями для целей разработки, и теперь мне интересно, как я могу указать путь к исполняемому файлу FFmpeg с хост-компьютера, чтобы этот модуль npm функционировал правильно.

У меня есть идея использовать том docker, который предоставляет исполняемый файл из контейнера на хост, а затем установить переменную среды, используя этот путь, но я не уверен, что это сработает.

Некоторые примечания из документации модуля.

Если установлена переменная среды FFMPEG_PATH, fluent-ffmpeg будет использовать ее в качестве полного пути к исполняемому файлу ffmpeg. В противном случае он попытается вызвать ffmpeg напрямую (поэтому он должен быть на вашем пути). У вас также должен быть установлен ffprobe (он поставляется с ffmpeg в большинстве дистрибутивов). Аналогично, fluent-ffmpeg будет использовать переменную среды FFPROBE_PATH, если она установлена, в противном случае он попытается вызвать ее в пути.

Комментарии:

1. Возможно ли создать путь к файловой системе хоста, ссылающийся на исполняемый файл из контейнера, зависит от того, на какую именно серверную часть файловой системы настроена ваша установка Docker для использования; ни в одной из доступных серверных частей, работающих на уровне блоков, содержимое файловой системы вообще не смонтировано внутри хоста. Кроме того, если исполняемый файл не связан статически, вам нужно будет беспокоиться о наличии пути к библиотеке, который указывает на библиотеки из файловой системы того же контейнера.

2. Было бы намного лучше, если бы ваша переменная среды указывала на прокладку, которая использует Docker для запуска контейнера и запуска ffmpeg внутри него.

3. Нет, не версия, а конфигурация; у docker есть множество разных бэкэндов, для использования которых его можно настроить. Если вы не выбрали его, ваш дистрибутив Linux или иным образом люди, которые создали пакет docker, который вы используете, вероятно, выбрали его для вас.

4. … что касается «как» прокладки, показ вашего файла Dockerfile был бы началом записи. позволяя кому-то протестировать его. Тем не менее, в общем , это, вероятно, будет делать что-то вроде docker run с аргументами, переданными через "$@" , возможно, с каталогами ввода и вывода, переданными в качестве тома — нужно будет знать подробности о том, как fluent вызывает ffmpeg, чтобы точно знать, что создавать.

5. …итак, для этих деталей: почему бы не написать свой собственный скрипт, который записывает свой рабочий каталог и аргументы командной строки в файл, и предоставить это в качестве исполняемого файла ffmpeg для fluent? Таким образом, вы будете знать, как будет вызываться ваш скрипт, что является отправной точкой для выяснения того, как заставить скрипт вызывать ffmpeg-in-Docker таким образом, чтобы он выполнял то, что необходимо.