Code Monkey home page Code Monkey logo

catframes's People

Contributors

georgy7 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

catframes's Issues

Hardware acceleration

  1. Parsing of ffmpeg -encoders.
  2. The script should attempt to use different accelerated encoders. If nothing worked, to fall back to default encoders.

Platforms (at least):

  • Intel (Windows, Linux)
  • Raspberry Pi

Add QOI image file format support

This seems pretty simple since Pillow got its support in version 9.5.0. This will allow you to make/buy Really simple cameras.

Extension: .qoi

API Improvements

  • Hiding FFmpeg output
  • Hiding web-server command-line output
  • Printing the port number to the console
  • New URLs for reading the processing status
  • WARN becomes optional

High Quality with no subsampling (4:4:4)

Almost lossless, with high chroma resolution, for post-production, etc.

Also, I am considering changing color subsampling from 4:2:0 to 4:2:2 in MEDIUM quality.

Падать, если не установлены ffmpeg и imagemagick

Сейчас если не установлен imagemagick, может происходить переименование файлов, т.к. они воспринимаются как поврежденные.

Также можно проверять, что доступен шрифт DejaVu Sans.

CLI option to ignore non-existent directories

At the moment, if one of the input directories does not exist at the time of launch, the script terminates with a non-zero status. When the script is running without human supervision, this behavior is likely to be undesirable.

Альтернативные способы подбора разрешения видео

Use case такой:

catframes_most_common_image_resolution_in_the_folder -s

1280x720 => 3
800x800 => 4
1280x710 => 1
1280x725 => 1
-------------
Completed in 0.11436295509338379 seconds.

Если решать текущим методом, получится, что все фреймы будут приведены к разрешению 800x800. Но если похожие разрешения смогут сливаться в кластеры, то будет выбран кластер 1280x720 и самое частое разрешение из этого кластера.

Главная задача: минимизировать потери качества (мегапикселей) при ресайзах.
Второстепенная задача: минимизировать изменения соотношений сторон.
Но более четкие критерии предстоит еще придумать.


Более правдоподобный пример. Разрешение камеры несколько раз меняли за день.

Допустим, 10 часов оно было 360p, 9 часов - 720p и 5 часов - 1080p. Если бы человек, которому важно сохранить высокое качество, выбирал разрешение видео, он бы скорее всего выбрал выбрал либо 720p как компромис между качеством и размером файла, либо 1080p, либо вообще какое-нибудь промежуточное между ними разрешение. Если же ориентироваться на самое частое разрешение, будет 360p, но большую часть времени разрешение было значительно выше чем 360p. Причем, в этом случае у всех разрешений одно и то же соотношение сторон.

Сложнее с выбором определиться, если есть еще разные соотношения сторон. Тут нужно определиться, что нам всё-таки важнее: отсутствие отступов на максимальном количестве кадров или сохранение качества на максимальном количестве кадров. Если последнее, то почему бы просто не брать максимальное разрешение как основное? Это грозит тем, что может неоправданно вырасти размер файла из-за маленького фрагмента.

В общем, к чему я веду. Если следовать изначальному духу программы catframes, нужно искать способ сохранить как можно больше деталей (т.к. это для камер видеонаблюдения), наплевав на отступы, но стараясь сильно не раздувать размер файла.

Publish version 2023.09 on PyPI

This breaks backward compatibility: the command line arguments do not match those of version 1.0.4.

The installation methods should be reflected in the README file. Installation using pip should go last in the list.

AV1 support

Proposed CLI changes

The new parameter:

--format

Video coding format

Options: h264, vp9, av1

Default: h264 for mp4, vp9 for webm

Why haven't I done it yet

AV1 encoders are pretty slow right now, which probably makes it unsuitable to use in this way. SVT-AV1 has flexible options for adjusting the compression speed. However, at the moment I could not find the settings that would allow me to get a video of a quality comparable to VP9 with an acceptable bitrate in an acceptable time.

Оверлей - имя файла

Иногда у камеры не показывается время.
А периодичность записи варьируется.
Так что нужно добавить опции, чтобы помечать, чем является текущий кадр.
Можно добавить опции для указания позиции этой надписи еще.

SECWARN (security warnings)

Подобно тому, как в софте часто есть уровни логгирования ERROR, WARN, INFO, DEBUG, TRACE где каждый следующий уровень включает все сообщения предыдущего, подразумевается, что область SECWARN на экране может использоваться вместо WARN и включает все ее сообщения, но в добавок к ним сигнализирует о подозрительной активности для случаев использования в видеонаблюдении.

В фильмах есть популярный сюжетный троп, связанный с видеонаблюдением — злоумышленник зацикливает фрагмент видео, и все остаются в неведении, что что-то происходило в этот фрагмент времени.

Мне один человек напомнил об этом, и ведь в catframes уже есть инструмент, который может отлавливать такие простые повторения: при запуске расчитываются хэши всех кадров, так что мы можем довольно легко проверять совпадение хэшей и размеров файлов, вот только при использовании, несвязанном с видеонаблюдением, это не нужно, поэтому добавляется более информативный нестандартный уровень предупреждений SECWARN.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.