Краткое содержание предшествующих сообщений: человѣчество тридцать лѣтъ живёт как с возможностью иллюстрировать web-страницы картинками, так и с широким распространением видеозаписей в цифровой форме, однако оформлять цитаты из видео в качестве зацикленных бесшовных анимаций люди научились сравнительно поздно, а средства автоматизации поиска подходящих кадров можно пересчитать по пальцам одной руки, и бóльшая часть их предназначена для macOS. Для единственного немакосёвого средства (animeloop), с 2018 года мнѣ извѣстнаго, настали непростые времена: автор утратил интерес к проекту (если вообще пережил накатывающиеся вóлны ковида), сайт закрыт, домéнное имя animeloop.org выставлено на продажу.
Но от него осталось нѣкоторое наслѣдіе.
Во-первых, осталось разъяснение метода: автор подробно повѣдалъ, как animeloop руководится итогами тройного хэширования миниатюр кадров, силою которого автоматический поиск рѣдко сбивался и часто получал неплохие результаты, подходящие для зацикливания.
Во-вторых, остался исходный код на Гитхабе. Если почитать приложенные инструкции, то становится ясно, что поставить его на Windows (особенно на семёрку) можно только со скрежетом зубов и томлением духа, поэтому я вздохнул и отвернулся.
(А было это в январе.)
Но на прошлой недѣлѣ удалось получить добрый совѣтъ о том, как можно было продолжить поиск в этом направлении. Оказывается, я пропустил вот чего: в репозитории animeloop на Гитхабе есть подраздѣлъ благодарностей («Special Thanks»), содержащий изъявление благодарности единственному другому разработчику (@ccloli) за помощь, оказанную въ непростомъ дѣлѣ сборки animeloop под Windows — иными словами, въ рѣшеніи как раз той задачи, перед которой я остановился в позапрошлом мѣсяцѣ, не желая тратить время и нервы. У этого-то помощника на Гитхабе донынѣ сохраняются форки исходного кода, и в каждом из форков — по одному-единственному готовому релизу animeloop для Windows: первая сборка совершалася посредством Visual Studio 2015, вторая — посредством mingw-w64-x86_64-gcc 8.3.0-2.
Без малѣйшаго промедления я скачал первую из этих сборок и убедился в полной работоспособности ея.
Для запуска достаточно скопировать файл аниме в пустую папку и подать вот какую команду под Windows, указав в командной строке желаемую степень многопоточности работы (смотря по количеству свободных ядер процессора) и желаемую длительность (в секундах) искомых видеоцитат, подходящих для зацикливания:
\путь\к\animeloop-cli.exe --thread 6 --max-duration 12.5 --min-duration 0.4 --output . --input аниме.mkv
Завершив работу, animeloop оставляет созданными двѣ подпапки (для цитат и для кэша), причём в имени файла каждой видеоцитаты (сохраняемой в MP4) указывается начальный и конечный номер кадра, которыми можно воспользоваться, когда захочется экспортировать найденные видеокадры в формате PNG без внесения потерь:
ffmpeg -hide_banner -i аниме.mkv -vf "trim=start_frame=начальныйНомер:end_frame=конечныйНомер,setpts=PTS-STARTPTS" frames\%6d.png
Есть двѣ причины, по которым такое может захотѣться:
① В качестве AVC-кодировщика (при сохранении видеоцитат в файлы MP4) animeloop использует OpenH264. Это избавило автора animeloop от обязанности платить лицензионные отчисления правообладателям видеоформата AVC, однако не лучшим образом сказалося на качестве сохраняемых кадров. Пересохранив видеокадры в формате PNG без внесения потерь, можно затѣмъ изготовить бесшовно зацикленную анимацию в другом видеоформате, не требующем лицензионных отчислений правообладателям (напримѣръ, в VP9 или в AV1), или ограничиться анимированным графическим форматом файла (создать анимированный GIF, анимированный PNG, анимированный WebP, анимированный AVIF, анимированный JPEG XL, etc.).
② Когда зацикливанию подвергается не особенно динамичная сцена аниме, тогда каждые два-три кадра подряд бывают одинаковыми, а найденные animeloop границы сцены могут потребовать коррекции в бóльшую или меньшую сторону, чтобы достигалася не только визуальная, но и временнáя бесшовность (не только наличие одинаковых кадров в начале и в конце сцены, но и нужное количество их).
Но от него осталось нѣкоторое наслѣдіе.
Во-первых, осталось разъяснение метода: автор подробно повѣдалъ, как animeloop руководится итогами тройного хэширования миниатюр кадров, силою которого автоматический поиск рѣдко сбивался и часто получал неплохие результаты, подходящие для зацикливания.
Во-вторых, остался исходный код на Гитхабе. Если почитать приложенные инструкции, то становится ясно, что поставить его на Windows (особенно на семёрку) можно только со скрежетом зубов и томлением духа, поэтому я вздохнул и отвернулся.
(А было это в январе.)
Но на прошлой недѣлѣ удалось получить добрый совѣтъ о том, как можно было продолжить поиск в этом направлении. Оказывается, я пропустил вот чего: в репозитории animeloop на Гитхабе есть подраздѣлъ благодарностей («Special Thanks»), содержащий изъявление благодарности единственному другому разработчику (@ccloli) за помощь, оказанную въ непростомъ дѣлѣ сборки animeloop под Windows — иными словами, въ рѣшеніи как раз той задачи, перед которой я остановился в позапрошлом мѣсяцѣ, не желая тратить время и нервы. У этого-то помощника на Гитхабе донынѣ сохраняются форки исходного кода, и в каждом из форков — по одному-единственному готовому релизу animeloop для Windows: первая сборка совершалася посредством Visual Studio 2015, вторая — посредством mingw-w64-x86_64-gcc 8.3.0-2.
Без малѣйшаго промедления я скачал первую из этих сборок и убедился в полной работоспособности ея.
Для запуска достаточно скопировать файл аниме в пустую папку и подать вот какую команду под Windows, указав в командной строке желаемую степень многопоточности работы (смотря по количеству свободных ядер процессора) и желаемую длительность (в секундах) искомых видеоцитат, подходящих для зацикливания:
\путь\к\animeloop-cli.exe --thread 6 --max-duration 12.5 --min-duration 0.4 --output . --input аниме.mkv
Завершив работу, animeloop оставляет созданными двѣ подпапки (для цитат и для кэша), причём в имени файла каждой видеоцитаты (сохраняемой в MP4) указывается начальный и конечный номер кадра, которыми можно воспользоваться, когда захочется экспортировать найденные видеокадры в формате PNG без внесения потерь:
ffmpeg -hide_banner -i аниме.mkv -vf "trim=start_frame=начальныйНомер:end_frame=конечныйНомер,setpts=PTS-STARTPTS" frames\%6d.png
Есть двѣ причины, по которым такое может захотѣться:
① В качестве AVC-кодировщика (при сохранении видеоцитат в файлы MP4) animeloop использует OpenH264. Это избавило автора animeloop от обязанности платить лицензионные отчисления правообладателям видеоформата AVC, однако не лучшим образом сказалося на качестве сохраняемых кадров. Пересохранив видеокадры в формате PNG без внесения потерь, можно затѣмъ изготовить бесшовно зацикленную анимацию в другом видеоформате, не требующем лицензионных отчислений правообладателям (напримѣръ, в VP9 или в AV1), или ограничиться анимированным графическим форматом файла (создать анимированный GIF, анимированный PNG, анимированный WebP, анимированный AVIF, анимированный JPEG XL, etc.).
② Когда зацикливанию подвергается не особенно динамичная сцена аниме, тогда каждые два-три кадра подряд бывают одинаковыми, а найденные animeloop границы сцены могут потребовать коррекции в бóльшую или меньшую сторону, чтобы достигалася не только визуальная, но и временнáя бесшовность (не только наличие одинаковых кадров в начале и в конце сцены, но и нужное количество их).