java — рекомендую библиотеку и язык программирования для кодирования видео

Я хочу написать мыльный веб-сервис, как Coconut

Coconut::Job.create(
"api_key" => "k-api-key",
"vars" => {"cdn" => "s3://accesskey:secretkey@mybucket", "vid" => 1234},
"source" => "mysite.com/media/video.mp4",
"outputs" => {
"mp4" => "$cdn/videos/$vid/video.mp4",
"webm" => "$cdn/videos/$vid/video.webm",
"hls" => "$cdn/hls/$vid/video.m3u8",
"dash" => "$cdn/dash/$vid/video.mpd",
"jpg:300x" => "$cdn/previews/$vid/thumbs_%1d.jpg, number=3",
"gif:150x" => "$cdn/previews/$vid/animated.gif"}
)

Теперь я хочу написать что-то вроде этого, но у меня есть две мысли, чтобы выбрать Java или что-то вроде PHP, потому что мои оригинальные коды на PHP
Похоже, что наиболее используемая библиотека — это ffmpeg.
для php я нашел эту библиотеку https://github.com/PHP-FFMpeg/PHP-FFMpeg
для Java я нашел следующие библиотеки: JAVE, JMF, SMF.

Буду признателен, если кто-нибудь скажет мне, какой язык и какую библиотеку и почему эта библиотека (скорость или функции или …)

0

Решение

Исходя из вашего запроса, язык сервера практически не имеет значения в тех, которые вы упомянули. Бит, который делает хруст, это ffMpeg, и это самое главное. Поскольку у вас уже есть элемент управления / интерфейс в PHP, оставайтесь с ним.

Предложение помочь: не используйте библиотеку ffMPEG. Создайте свои собственные команды и используйте exec для запуска. Причины:
— Это проще (и все это делает библиотека в любом случае)
— ffMPEG имеет gazillion опций / шагов настройки, которые иногда невозможно встроить в библиотеку
— Однако вы должны убедиться, что ваша команда «безопасна»

Если вы смотрите на другие языки, вы можете сделать гораздо хуже, чем NodeJS; есть разумная библиотека для ffMPEG (хотя см. примечание о том, что передача параметров может быть невозможна для сверхсложных вещей), и преимущество в том, что NodeJS может передавать управление другим запросам, когда запущен ffMPEG (PHP, JAVA и др. сохранят запрос открыть и удерживать, когда ffMPEG работает).

Недостатком NodeJS является то, что если вы используете CTRL-C приложение, то вы не сможете изящно управлять ffMPEG с помощью SigTerm. Но это становится все более продвинутым, и простое решение не состоит в том, чтобы ctrl-C приложение 🙂

Также обратите внимание, что ffMPEG должен запускаться только по одному (на ядро ​​процессора), как общее правило. Держите задачи ffMPEG в очереди и обрабатывайте только по одной за раз. Это означает, что вы можете использовать PHP для обработки HTTP-запросов и помещения в очередь, а также другой язык для запуска ffMPEG (но, опять же, он может остаться с PHP, но NodeJS будет лучше выполнять это, но не как сервис).

Проверьте очереди REDIS и / или RabbitMQ для вариантов очереди, кросс-совместимых с NodeJS и PHP.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]