The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Google опубликовал утилиту для преобразования GIF в анимированную ASCII-графику

14.06.2018 22:53

Разработчики из Google приурочили к 31-летию графического формата GIF публикацию утилиты gif-for-cli, которая позволяет преобразовывать анимированные GIF-файлы в форму анимированной ASCII-графики. Например, при помощи данной утилиты можно организовать отображение в терминале видеозаставки в виде ASCII-графики, добавив вызов gif-for-cli в .bashrc или .profile. Код утилиты написан на языке Python и опубликован под лицензией Apache 2.0.

После запуска утилиты, она преобразует GIF-файл при помощи ffmpeg в набор JPG-кадров, которые затем преобразуются в ASCII-графику и кэшируются в каталоге ~/.cache/gif-for-cli, после чего сменяя друг друга выводятся на терминал. Утилита автоматически определяет возможности текущего терминала и число поддерживаемых цветов, формируя оптимальное ACSII-изображение.



  1. Главная ссылка к новости (https://opensource.googleblog....)
  2. OpenNews:
  3. OpenNews: Формат GIF теперь полностью свободен
  4. OpenNews: В OpenSSH добавлена опция, управляющая механизмом визуальной проверки валидности хоста
  5. OpenNews: X-сервер работающий в ASCII представлении
  6. OpenNews: Выпуск asciinema 2.0, программы для записи текстовых скринкастов
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/48779-gif
Ключевые слова: gif, ascii
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (61) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.3, Аноним (-), 22:56, 14/06/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +29 +/
    В ffmpeg и так есть фильтр ASCII. Что они изобрели?
     
     
  • 2.22, Аноним (-), 00:57, 15/06/2018 [^] [^^] [^^^] [ответить]  
  • +6 +/
    > Что они изобрели?

    Машину времени, очевидно же!

     
  • 2.33, iPony (?), 08:19, 15/06/2018 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Как с ffmpeg в итоге ASCII видео вывести в терминал?
     
     
  • 3.43, Khariton (ok), 09:17, 15/06/2018 [^] [^^] [^^^] [ответить]  
  • +5 +/
    уже лет десять как можно:
    mplayer -vo caca movie.mpeg
     
     
  • 4.51, iPony (?), 10:54, 15/06/2018 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Оно и понятно, что разными способами можно.
    Это не ffmpeg.
     
     
  • 5.58, Аноним (-), 15:04, 15/06/2018 [^] [^^] [^^^] [ответить]  
  • +3 +/
    А внутри не ffmpeg?
     
     
  • 6.67, Anonimous (?), 19:15, 16/06/2018 [^] [^^] [^^^] [ответить]  
  • +1 +/
    а я думал что внутри libavcodec
     
  • 2.36, Очередной аноним (?), 08:32, 15/06/2018 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > В ffmpeg и так есть фильтр ASCII. Что они изобрели?

    Я, конечно, ни в зуб ногой в этом, но может быть "Утилита автоматически определяет возможности текущего терминала и число поддерживаемых цветов, формируя оптимальное ACSII-изображение.", а фильтр в ffmpeg этим не занимается? (Конечно, могу и ошибаться). Может, упомянутому Вами фильтру надо точные параметры указывать, чем и занимается эта утилита, прикинув нос к х...ситуации?

     
     
  • 3.37, iPony (?), 08:37, 15/06/2018 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Кэп, заявляет что на просто занимается работой по связке:

    получения gif-ок c tenor https://tenor.com/search/unicorn-gifs
    выводе отдельных кадров в терминал в разных режимах с определенным фреймрейтом

    Да, ничего революционного тут нет. Ну так и написано чисто ради прикола.
    И не может это сам по себе ffmpeg сделать

     

  • 1.4, Аноним (-), 23:00, 14/06/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +12 +/
    внатуре, преобразует gif в jpeg. ffmpeg'ом. Это все что вам нужно знать о квалификации, уме и таланте индусов. работающих в гугле.

    Ради "31летия" можно и не стараться.

    (интересно, сколько займет написать с нуля парсер анимированного гифа в битовый формат, если никуда кроме спека не подглядывать? За пол-дня можно управиться?)

     
     
  • 2.28, IRASoldier (?), 06:38, 15/06/2018 [^] [^^] [^^^] [ответить]  
  • +5 +/
    А нафига бы велосипед изобретать?
     
  • 2.30, Blind Vic (ok), 07:14, 15/06/2018 [^] [^^] [^^^] [ответить]  
  • +1 +/
    То, что вы смогли прочитать код и найти в нем автора кода, много говорит о вашей квалификации, уме и таланте.

    > author='Seán Hayes',

     
     
  • 3.44, Аноним (-), 09:23, 15/06/2018 [^] [^^] [^^^] [ответить]  
  • +8 +/
    Индус в IT - это не только национальность, это еще и склад ума.
     

  • 1.7, Аноним (-), 23:13, 14/06/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Прсмотрел, вполне годный код для простой поделки. Если писали индусы, то многие наши в пролёте. Правда, у нас в шараге за отсутствие каментов надбавок бы лишили. И печенек тоже.
     
     
  • 2.20, Аноним (-), 00:14, 15/06/2018 [^] [^^] [^^^] [ответить]  
  • –2 +/
    > Правда, у нас в шараге за отсутствие каментов надбавок бы лишили. И печенек тоже.

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

     
     
  • 3.21, Аноним (-), 00:36, 15/06/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Формальный язык это индусы?
     
     
  • 4.76, Аноним (-), 09:53, 18/06/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Санскрит!
     
  • 3.40, KonstantinB (ok), 09:10, 15/06/2018 [^] [^^] [^^^] [ответить]  
  • +2 +/
    На тему комментариев мне вспоминается код где-то 12-летней давности, который в той компании, где он был написан ее сотнудником, стал каноничным примером "как не надо делать". Выглядело это так:

    $db->beginTransaction(); // начинаем транзакцию

    ...далее следует простыня кода строк на 200 со стремящейся к бесконечности цикломатической сложностью без единого комментария...

    $db->commit(); // завершаем транзакцию

    А вообще, да, у меня правило - если хочется написать комментарий, то надо переписать код так, чтобы он был не нужен. И только в редких случаях (например, оптимизация), когда переписать без потерь нельзя, пишу комментарии. (Кстати, в случае оптимизации полезно рядом оставить окруженный if (0) неоптимизированный читабельный вариант алгоритма).

     
     
  • 4.46, Аноним (-), 09:33, 15/06/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Во-во Еще, к примеру, код, который ты правишь прямо сейчас, может упоминаться в... большой текст свёрнут, показать
     
     
  • 5.48, KonstantinB (ok), 10:30, 15/06/2018 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Вообще, подобные проблемы по большей части решаются на code review.

    Я, даже если делаю проект один, пользуюсь git flow и мержу только через пулл-реквесты. Даже после небольшого перерыва на чашечку кофе смотришь на собственный код, показанный в виде наборов изменений, несколько более свежим взглядом.

     
  • 4.49, NuclearWar (?), 10:41, 15/06/2018 [^] [^^] [^^^] [ответить]  
  • +/
    > А вообще, да, у меня правило - если хочется написать комментарий, то надо переписать код так, чтобы он был не нужен. И только в редких случаях (например, оптимизация), когда переписать без потерь нельзя, пишу комментарии.

    COBOL переизобретаешь?

     
  • 4.66, anonimm (?), 17:10, 16/06/2018 [^] [^^] [^^^] [ответить]  
  • +/
    > А вообще, да, у меня правило - если хочется написать комментарий,
    > то надо переписать код так, чтобы он был не нужен.
    > И только в редких случаях...

    Только для софта уровня студенческой лабораторной работы.

    > $db->beginTransaction();
    > $db->commit();

    php... Тогда всё понятно.

     
     
  • 5.69, НяшМяш (ok), 23:31, 16/06/2018 [^] [^^] [^^^] [ответить]  
  • +/
    >> $db->beginTransaction();
    >> $db->commit();
    >
    >php... Тогда всё понятно.

    Ну, тут уже личинка программиста просматривается - оно про транзакции знает.

     

  • 1.11, Oleg (??), 23:26, 14/06/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Этож ДЕДПУЛ ВТОРОЙ
     
     
  • 2.60, Аноним (-), 16:29, 15/06/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Это не Дэдпул. Это Питер. Просто Питер.
     

  • 1.17, Аноним (-), 23:49, 14/06/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Так я что-то не понял, они преобразовывают gif в набор jpeg-картинок или таки в ascii графику?
     
     
  • 2.24, Андрей (??), 02:28, 15/06/2018 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Они просто чутка освоили ffmpeg, с радостью про это сообщив как о своей победе.
     
     
  • 3.32, iPony (?), 08:10, 15/06/2018 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > Они просто чутка освоили ffmpeg, с радостью про это сообщив как о своей победе.

    Как на Opennet любят выдумывать...

    Это сделал один человек, связанный с проектом Tenor - online GIF search engine and database (что недавно купила Google).

    Явно написано

    > This is not an officially supported Google product.

    Чисто ради прикола было сделано. Так что к чему выдумки про "они", "как о своей победе"...

     
     
  • 4.38, Аноним (-), 09:09, 15/06/2018 [^] [^^] [^^^] [ответить]  
  • +/
    т.е. (c) 2018 google не в счет
     
     
  • 5.50, Аноним (-), 10:43, 15/06/2018 [^] [^^] [^^^] [ответить]  
  • +1 +/
    А это всего лишь требования работодателя.

    У меня приятель музыку пишет и издаёт на зарубежном лейбле, так там по условиям контракта он чуть ли не татуировку должен сделать со словами "правами на мои записи обладает Имя Рекордс". Тут примерно то же самое.

     

  • 1.19, Аноним (-), 23:53, 14/06/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    ffmpeg написан точно не google.
     
  • 1.25, Андрей (??), 02:30, 15/06/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    blogenffmpeg?
     
  • 1.26, srvinme (ok), 04:05, 15/06/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Python всему голова.
     
     
  • 2.29, Аноним (-), 06:41, 15/06/2018 [^] [^^] [^^^] [ответить]  
  • +/
    если бы мне потребовалось написать простейший скриптик для запуска ffmpeg с правильными параметрами, я бы тоже выбрал питон. Собственно, питон для того и предназначен, чтобы писать одноразовые скрипты, и Google в данном случае выбрал верный язык (альтернативой ему здесь мог бы быть разве что bash).
     
  • 2.61, Аноним (-), 17:41, 15/06/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Заметьте, и рыба тоже гниёт с головы....
     

  • 1.27, Аноним (-), 04:37, 15/06/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    > кэшируются в каталоге ~/.cache/gif-for-cli

    Пусть Гоперов это GC и многопоточность без GIL!

     
  • 1.31, Аноним (-), 07:44, 15/06/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    А какова область применения?
     
     
  • 2.35, Очередной аноним (?), 08:29, 15/06/2018 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Одна из них там описана. Перечитайте новость еще раз, но внимательнее.
     

  • 1.34, Аноним (-), 08:21, 15/06/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Но... зачем?
     
     
  • 2.39, Пришлый (?), 09:09, 15/06/2018 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Наконец-то можно смотреть на сиськи в консоле.
     

  • 1.41, Аноним (-), 09:12, 15/06/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    libcaca
     
  • 1.42, Аноним (-), 09:16, 15/06/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Интересно, почему не на Go написали....
     
     
  • 2.45, x (?), 09:28, 15/06/2018 [^] [^^] [^^^] [ответить]  
  • +/
    очевидно уже есть... и даже вот такое
    https://github.com/tombh/texttop
     
     
  • 3.47, Аноним (-), 09:44, 15/06/2018 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Тогда совсем непонятно, что они хотели показать..... Отметить годовщину древнего графического формата программой на древнем языке программирования.... Ок..... Надо было на Коболе писать. Больше фана было бы....
     
     
  • 4.52, Аноним (-), 11:20, 15/06/2018 [^] [^^] [^^^] [ответить]  
  • –1 +/
    >на древнем языке программирования

    20 февраля 1991 - это древний?

     
     
  • 5.53, Аноним (-), 12:08, 15/06/2018 [^] [^^] [^^^] [ответить]  
  • +/
    > 20 февраля 1991 - это древний?

    После него уже 2 поколения языков выросло с исправлениями родовых ошибок....

    К тому же, и в прямом, и в переносном смысле, питон - прошлый век.

     
     
  • 6.71, Аноним (-), 01:29, 17/06/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Может вам и perl вместе с php не нужен?
     
     
  • 7.73, Аноним (-), 08:27, 17/06/2018 [^] [^^] [^^^] [ответить]  
  • +/
    perl уже точно не нужен. Php пока ещё можно поиспользовать. Впрочем, напоминаю, что Php - моложе питона и его ошибки не содержит
     

  • 1.54, Аноним (-), 13:12, 15/06/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    curl -s codemasters.pro
    Уже развлекались
     
     
  • 2.56, Аноним (-), 13:14, 15/06/2018 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Либа libcaca + ffmpeg, перевод экрана и никакой магии.
     

  • 1.55, saahriktu (ok), 13:12, 15/06/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    А тем временем для графических терминалов (включая xterm, mlterm, yaft,... и т.д.) уже есть libsixel - https://github.com/saitoha/libsixel -, которая умеет выводить в терминал в т.ч. и GIF, в т.ч. и анимированный, но именно графикой.

    Слакбилд здесь: https://github.com/saahriktu/saahriktu-slackbuilds/tree/master/libsixel

    И, да, в -current'е xterm уже из коробки с графикой.

     
     
  • 2.70, Аноним (-), 01:25, 17/06/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Спасибо!
     

  • 1.57, ПДК (?), 14:39, 15/06/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Похоже гуглерам совсем заняться нечем. От жира бесятся.
     
     
  • 2.59, нах (?), 15:05, 15/06/2018 [^] [^^] [^^^] [ответить]  
  • +/
    от жира было бы, если бы поделка не ffmpeg'ом gif в jpeg (дважды-неосиляторы) а оттуда в ascii (что и без них сто лет как умели, libaa 1998го года), а как следует - без использования здоровенных чужих кусков кода не по назначению. И можно на каком-нибудь забавном языке - awk, к примеру, неплохо бы смотрелся.
    А тут, увы, ненужное ненужно, и то сляпано на от..сь. На единственном языке, которым автор, видимо. умел пользоваться в достаточной степени, чтобы вызывать оттуда ffmpeg.

     

  • 1.62, Дуплик (ok), 18:17, 15/06/2018 [ответить] [﹢﹢﹢] [ · · · ]  
  • +3 +/
    >Код утилиты написан на языке Python
    >cmd = [
    >        'ffmpeg',
    >        '-i', input_source_file,

    А я вот давеча браузер написал на Bash'е:

    #!/bin/sh
    firefox &

     
     
  • 2.63, PereresusNeVlezaetBuggy (ok), 19:30, 15/06/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Я скачал, а он не работает, на все сайты говорит комманд нот фаунд. Что я делаю не так?
     
     
  • 3.65, 225 (?), 06:01, 16/06/2018 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Завтсимости не установил :)
     
  • 2.64, Аноним (-), 20:10, 15/06/2018 [^] [^^] [^^^] [ответить]  
  • +/
    Ладно тебе, Дуплик. Разве ж это браузер? Вот браузер на баше:

    #!/usr/bin/env bash
    google-chrome "$@"

     
     
  • 3.68, Какаянахренразница (ok), 21:10, 16/06/2018 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > firefox &

    [...]

    > google-chrome "$@"

    /etc/alternatives/x-www-browser

     
     
  • 4.72, Аноним (-), 01:31, 17/06/2018 [^] [^^] [^^^] [ответить]  
  • +/
    $ stat /etc/alternatives/x-www-browser
    stat: cannot stat '/etc/alternatives/x-www-browser': No such file or directory

    При этом установлены Firefox и Chrome через пакетный менеджер.

     
     
  • 5.75, Какаянахренразница (ok), 09:20, 18/06/2018 [^] [^^] [^^^] [ответить]  
  • +/
    > $ stat /etc/alternatives/x-www-browser
    > stat: cannot stat '/etc/alternatives/x-www-browser': No such file or directory
    > При этом установлены Firefox и Chrome через пакетный менеджер.

    Ну, тогда через xdg-open.

     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру