Nginx Video Thumb Extractor Module (генерим скриншоты nginx)

confguru

ExAdmin
Команда форума
Video Thumb Extractor is a module to extract an image from a video frame from a specific second resizing/cropping it to a given size.
The smallest generated image is 16x16 pixels.

This module is not distributed with the Nginx source. See the installation instructions.

Requirements
This module depends from some libraries (headers and shared objects) which has to be installed before it:

avformat >= 53.4.0 (tested versions: 53.4.0, 53.5.0) – commonly distributed with FFmpeg
avcodec >= 53.7.0 (tested versions: 53.7.0, 53.8.0) – commonly distributed with FFmpeg
avutil >= 51.9.1 (tested versions: 51.9.1, 51.30.0) – commonly distributed with FFmpeg
swscale >= 2.0.0 (tested versions: 2.0.0) – commonly distributed with FFmpeg
jpeg – libjpeg
MagickWand – commonly distributed with ImageMagick
To install FFmpeg from source with the specified versions follow the steps bellow:
PHP:
  git clone git://git.videolan.org/ffmpeg
  cd ffmpeg
  git checkout n0.8.7 -b tag_n0.8.7
  ./configure --prefix=/usr --disable-ffserver --disable-ffplay --enable-shared
  make clean && make
  make install
Available on github at nginx-video-thumbextractor-module
https://github.com/wandenberg/nginx-video-thumbextractor-module
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
хм, а он неблокирующий должно быть? интересно - он процесс форкает, или как ...
 

tony2001

TeaM PHPClub
он линкуется с ffmpeg-овскими либами и их использует для чтения видео, так что форков там нет.
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
а как тогда - запускать в отдельном процессе и проксировать на него?
 

флоппик

promotor fidei
Команда форума
Партнер клуба
Насколько я понял из доки, он их генерит на лету, поэтому ты его просто в желаемый локейшн вписываешь. Но видимо, кеширования уже готовых тумб нет.
 

Absinthe

жожо
хм, а он неблокирующий должно быть? интересно - он процесс форкает, или как ...
Он никак. Тупо все блочит.

а как тогда - запускать в отдельном процессе и проксировать на него?
Либо доделывать.

Насколько я понял из доки, он их генерит на лету, поэтому ты его просто в желаемый локейшн вписываешь. Но видимо, кеширования уже готовых тумб нет.
Проблема в том, что пока он их генерит, сервак висит.
 

tony2001

TeaM PHPClub
>Либо доделывать.

доделывать тут не очень получится - он же сам вызывает библиотечные функции, а не ждёт какой-то апстрим, который это сделает за него.
на самом деле, это, наверное, более грамотно сделать (вы не поверите) через генерацию тамбнэйлов в PHP - для этого был ffmpeg экстеншен.
да и этот же код из thumbextractor-module портируется в экстеншен на раз-два-три.
 

Absinthe

жожо
доделывать тут не очень получится - он же сам вызывает библиотечные функции, а не ждёт какой-то апстрим, который это сделает за него.
Кстати. А так прокатит? Cоздаем в функции процесс, получаем stdout процесса, кладем его в евентлуп. Когда процесс доработает - он пишет в дескриптор результат, функция что-то доделывает.

Правда меня только на хелловорлд-модуль хватило.
 

fixxxer

К.О.
Партнер клуба
По крайней мере тяжелым cpu bound операциям там явно делать нечего :)
 
Сверху