Вчера в одном чате айти чате обнаружил видеостикер, который на первый взгляд не представляет из себя ничего интересного, но длится целых 8 секунд, при этом находится в паке и корректно отображается на всех клиентах, хотя согласно официальным гайдлайнам телеги на все стикеры действует ограничение в 3 секунды.
Начали выяснять в чём дело, и оказалось, что формат видеостикеров .webm, который является подмножеством мультимедиа формата Matroska, хранит свою длину в заголовке с метаданными, достоверность которых полностью держится на честности кодировщика, и может быть подменена в уже готовом файле.
Я этой же ночью написал скрипт буквально в 8 строк кода на питоне, и он сработал - добавил несколько примеров в мой старый пак, среди них в том числе собака в полную длину.
Начали выяснять в чём дело, и оказалось, что формат видеостикеров .webm, который является подмножеством мультимедиа формата Matroska, хранит свою длину в заголовке с метаданными, достоверность которых полностью держится на честности кодировщика, и может быть подменена в уже готовом файле.
Я этой же ночью написал скрипт буквально в 8 строк кода на питоне, и он сработал - добавил несколько примеров в мой старый пак, среди них в том числе собака в полную длину.
👍42👎5🎉1
Ну и конечно самое главное - я в коллаборации с моим знакомым сделал пак с полным фильмом Шрек (2001), спасибо Сандалю за перекодировку. К сожалению ограничение на размер в 256 килобайт убрать нельзя, поэтому пришлось разрезать всё на 45 стикеров, приятного просмотра.
Telegram
SKлад жалоб
Канал понадюзабельного ошалевшего от дизайна телеги сандалекарася
🔥14👍4👎2
Какими-то абсолютно лютыми флагами ффмпега, урезанием разрешения и фпс, установкой лимита битрейта в полкилобайта и прочими фокусами я таки запихнул полные три с половиной минуты Bad apple в стикер.
👍5👎2
Пока я наигрывал очередные 100 часов в римке и писал svg-шку новогодней аватарки, мои упражнения в написании скриптов попали на два канала, которые читаю я (раз и два), и на канал, которые читает Сандаль, который кодировал шрека (три). В результате всего этого количество подписчиков этого канала за неделю выросло почти в два с половиной раза. Уф.
🔥4🎉2👎1
В связи с резко появившимся спросом я решил оформить скрипт в нормальный проект, и вот наконец закончил оформлять все идеи фич:
github.com/sliva0/tgradish
Из зависимостей только python >= 3.10 и ffmpeg, если вы будете перегонять гифки и прочие видео в видеостикеры используя сам скрипт. Я заморочился и впихнул большой набор флагов специально под видеостикеры, и алгоритм бинарного поиска по оптимальному битрейту в добавок. Так же, из-за того, что я заморочился слегка больше, чем стоило бы, все флаги определены через довольно простой .toml конфиг, так что в случае нехватки настроек их всегда можно добавить самому.
Если же вы кодируете стикеры своим любимым видеоредактором, в скрипте есть опция просто подменять данные о длине видео - spoof, ffmpeg для этого не требуется. Я переписал мой скрипт с подменой этой информации дважды, последний раз полностью следуя официальному стандарту, так что теперь должно стабильно работать со всеми не битыми файлами и генерировать такие же не битые файлы.
Устанавливается скрипт из pip-a:
github.com/sliva0/tgradish
Из зависимостей только python >= 3.10 и ffmpeg, если вы будете перегонять гифки и прочие видео в видеостикеры используя сам скрипт. Я заморочился и впихнул большой набор флагов специально под видеостикеры, и алгоритм бинарного поиска по оптимальному битрейту в добавок. Так же, из-за того, что я заморочился слегка больше, чем стоило бы, все флаги определены через довольно простой .toml конфиг, так что в случае нехватки настроек их всегда можно добавить самому.
Если же вы кодируете стикеры своим любимым видеоредактором, в скрипте есть опция просто подменять данные о длине видео - spoof, ffmpeg для этого не требуется. Я переписал мой скрипт с подменой этой информации дважды, последний раз полностью следуя официальному стандарту, так что теперь должно стабильно работать со всеми не битыми файлами и генерировать такие же не битые файлы.
Устанавливается скрипт из pip-a:
pip install tgradish, после этого должно работать просто по команде tgradish.GitHub
GitHub - sliva0/tgradish: Simple video converting cli utility specializing in Telegram videostickers with the ability to bypass…
Simple video converting cli utility specializing in Telegram videostickers with the ability to bypass the 3 second limit. - sliva0/tgradish
🔥7👍3👎1
Forwarded from логово отжора ресурсов
свершилось
https://t.iss.one/tginfo/3564
https://t.iss.one/tginfo/3564
Telegram
Telegram Info
Изменение названия набора эмодзи и стикеров
В официальном боте для создания наборов эмодзи и стикеров появилась возможность изменить название уже созданных наборов.
Для этого действия нужно перейти в диалог с @Stickers и отправить команду /renamepack.…
В официальном боте для создания наборов эмодзи и стикеров появилась возможность изменить название уже созданных наборов.
Для этого действия нужно перейти в диалог с @Stickers и отправить команду /renamepack.…
👎1🔥1
После написания узкоспециализированной утилиты для подмены одного значения в вебме я решил исследовать формат поглубже - создал специальный скрипт для разбора .webm в более-менее читаемый .json и сборки обратно в видео (и ещё 7 вспомогательных скриптов), раскопал старый стикер, который крашил все клиенты телеграма, нагуглил максимально высококачественный bigrat.jpg, расширил свой swap файл до 128 гигабайт, перенасобирал штук 20 стикеров крысюков и по итогу пришёл к выводу, что чтобы добиться аналогичного эффекта вылета на всех платформах надо лезть глубже, в кодек VP9.
Ну, казалось бы, webm оказалось парсить довольно просто, EBML очень хороший продуманный и простой универсальный формат хранения данных, вряд ли VP9 вызовет трудности. Гуглю документацию, нахожу, и это оказался самый потрясающий технический документ, который я читал.
Ну, казалось бы, webm оказалось парсить довольно просто, EBML очень хороший продуманный и простой универсальный формат хранения данных, вряд ли VP9 вызовет трудности. Гуглю документацию, нахожу, и это оказался самый потрясающий технический документ, который я читал.
🔥6👎1
Краткий пересказ содержания
- 3 страницы определения терминов. - 2 страницы объявления численных констант. - 2 страницы объявления операторов вроде сложения и базовых функций по типу модуля. - Ещё пару страниц формального объяснения последующих нотаций. - 15 страниц объяснения словами общих подходов по сжатию информации с прекрасными иллюстрациями (1-ая картинка). - 35 страниц C-подобного псевдокода в виде таблицы с двумя столбцами, описывающий процесс чтения файла, пример на 2-ой и 3-ей картинках. - 49 страниц текста описания того, что весь вышеописанный псевдокод должен был прочитать из файла и как это дешифровать, конечно же с вставками псевдокода. - 16 страниц о том, как именно парсить данные в файле в зависимости от пометок во втором столбце таблицы-псевдокода, с псевдокодом. - 35 страниц дополнительных таблиц (константных массивов для программы), включающие в себя: -- Просчитанное распределение Парето и логарифм по основанию 2 -- Просчитанные вероятности дефолта (или вероятности по умолчанию, не уверен), среди которых одна из таблиц является массивом размерностью 4x2x2x6x6x3 с объявлением на 17 страниц с комментариями по ходу -- Таблица, вид которой заставил меня засмеяться (картинка 5).🔥4👎1