georgy7 / catframes Goto Github PK
View Code? Open in Web Editor NEWCatframes is a script that concatenates frames with different aspect ratios. It uses FFmpeg and Pillow.
License: zlib License
Catframes is a script that concatenates frames with different aspect ratios. It uses FFmpeg and Pillow.
License: zlib License
ffmpeg -encoders
.Platforms (at least):
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
Чтобы делать видео, где очень быстро что-то происходит.
И по-умолчанию сделать, скажем, 4 fps.
Это легко можно понять по разнице в контурах на уменьшенном разрешении.
Now you must specify output video file even if you just want to get resolution statistics. It shouldn't be like this.
The new resolution choosing algorithm craches if there is at least one frame with at least one side of an odd size.
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.
TODO
Something like -p 1234:5678
This is a new use case. This will make the program useful for a new category of users.
Сейчас если не установлен imagemagick, может происходить переименование файлов, т.к. они воспринимаются как поврежденные.
Также можно проверять, что доступен шрифт DejaVu Sans.
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.
Непонятно, на какой стадии процесс.
--trim-start
and --trim-end
Reason: they are not related to the purpose of the script.
For "home users", just CLI options as widgets.
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, нужно искать способ сохранить как можно больше деталей (т.к. это для камер видеонаблюдения), наплевав на отступы, но стараясь сильно не раздувать размер файла.
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.
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.
Иногда у камеры не показывается время.
А периодичность записи варьируется.
Так что нужно добавить опции, чтобы помечать, чем является текущий кадр.
Можно добавить опции для указания позиции этой надписи еще.
Подобно тому, как в софте часто есть уровни логгирования ERROR, WARN, INFO, DEBUG, TRACE где каждый следующий уровень включает все сообщения предыдущего, подразумевается, что область SECWARN на экране может использоваться вместо WARN и включает все ее сообщения, но в добавок к ним сигнализирует о подозрительной активности для случаев использования в видеонаблюдении.
В фильмах есть популярный сюжетный троп, связанный с видеонаблюдением — злоумышленник зацикливает фрагмент видео, и все остаются в неведении, что что-то происходило в этот фрагмент времени.
Мне один человек напомнил об этом, и ведь в catframes уже есть инструмент, который может отлавливать такие простые повторения: при запуске расчитываются хэши всех кадров, так что мы можем довольно легко проверять совпадение хэшей и размеров файлов, вот только при использовании, несвязанном с видеонаблюдением, это не нужно, поэтому добавляется более информативный нестандартный уровень предупреждений SECWARN.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.