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
 
хм, а он неблокирующий должно быть? интересно - он процесс форкает, или как ...
 
он линкуется с ffmpeg-овскими либами и их использует для чтения видео, так что форков там нет.
 
а как тогда - запускать в отдельном процессе и проксировать на него?
 
Насколько я понял из доки, он их генерит на лету, поэтому ты его просто в желаемый локейшн вписываешь. Но видимо, кеширования уже готовых тумб нет.
 
хм, а он неблокирующий должно быть? интересно - он процесс форкает, или как ...
Он никак. Тупо все блочит.

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

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

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

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