Pull to refresh

Модуль для получения скриншотов из видео — nginx-video-thumbextractor-module

Reading time 2 min
Views 3.8K

Получаем скриншоты из видео через NGINX средствами ImageMagick и ffmpeg


Совсем недавно появился новый модуль nginx-video-thumbextractor-module
Хотел опубликовать как ссылку но как видно топиков-ссылок больше нет. да и как перевод уже не подходит ибо добавил отсебятины.
В любом случае считаю что стоит поделиться этим замечательным модулем с Хабровчанами.
В статусе указано что он готов для продакшена, что очень радует.

Зависимости:


  • avformat – обычно распространяется с FFmpeg(но мне на Ubuntu пришлось поставить libavformat-dev)
  • avcodec – обычно распространяется с FFmpeg
  • swscale – обычно распространяется с FFmpeg(но мне на Ubuntu пришлось поставить libswscale-dev)
  • jpeg – libjpeg
  • MagickWand – обычно распространяется с ImageMagick


Добавляем модуль при конфигурировании/компиляции::


./configure --add-module=../nginx-video-thumbextractor-module --with-cc-opt='-I /usr/include/ImageMagick'


Рекомендация:


По умолчанию ImageMagick использует OpenMP для поточной обработки изображений.
Автор рекомендует конфигурировать/компилить ImageMagick с опцией "—disable-openmp", так как это не очень хорошая идея использовать потоковую обработку внутри рабочих процессов.

Конфигурация:


location ~ /thumbs(.*) {
        video_thumbextractor;
        video_thumbextractor_video_filename    $1;
        video_thumbextractor_video_second      $arg_second;
        video_thumbextractor_image_width       $arg_width;
        video_thumbextractor_image_height      $arg_height;
    }


Примеры использования вышеприведенной конфигурации:


# получаем картинку с 10-й секунды оригинального размера.
localhost/thumbs/video.mp4?second=10

# получаем картинку с 20-й секунды и высотой 50px и длиной соблюдая пропорции видео.
localhost/thumbs/video.mp4?second=10&height=50

# получаем картинку с 30-й секунды с высотой 50px и дилной 100px, картинка будет кропнута соблюдая пропорции видео.
localhost/thumbs/video.mp4?second=20&height=50&width=100

Забираем, смотрим директивы на страничке модуля.

Мне кажется это отличное решение для тех кто публикует HTML видео, чтобы добавлять poster:
<video controls="controls" poster="http://localhost/thumbs/movie.mp4?second=10">
  <source src="movie.mp4" type="video/mp4" />
  Your browser does not support the video tag.
</video>


А так-же при комментировании ссылаться на какое-то время и получать картинку типа как на Youtube ссылка на определенное время.
Tags:
Hubs:
+26
Comments 19
Comments Comments 19

Articles