На windows есть очень удобная программа VirtualDub которая может вынуть все кадры из gif анимации и переименовать как 0001.jpg, 0002.jpg и т.д. Нужна программа с такой же возможностью на linux. *HELP*
Нужна альтернатива VirtualDub под linux
[console]convert -verbose -coalesce sample.gif result.png[/console]
В результате будут файлы result-0.png, result-1.png и т.д.
[console]$ ffmpeg -i input.gif out%d.jpg[/console]
C помощью ffmpeg так же можно собрать обратно.
В результате будут файлы result-0.png, result-1.png и т.д.
А как сделать так чтобы были имена 0001.png, 0002.png и т.д.?
А как сделать так чтобы были имена 0001.png, 0002.png и т.д.?
Для чего это нужно?
Я как бы уже сказал что есть ffmpeg или его аналог avconv, опции те же самые.
В png качество получается лучше, просто в выше приведенной команде изменить jpg на png.
Собрать обратно можно довольно просто:
[console]$ ffmpeg -framerate 10 -i out%d.png output.gif[/console]
Где -framerate 10 указывает сколько кадров в секунду должно проигрываться в gif. соответственно если 10 заменить на 1/2 кадр будет сменяться через две секунды.
А так файлы можно обработать скриптом file.sh:
#!/bin/bash
FIL=$1
ls $FIL[0-9].png 2> /dev/null|while read file
do
mv $file 000${file##$FIL}
done
ls $FIL[0-9][0-9].png 2> /dev/null|while read file
do
mv $file 00${file##$FIL}
done
ls $FIL[0-9][0-9][0-9].png 2> /dev/null|while read file
do
mv $file 0${file##$FIL}
done
ls $FIL[0-9][0-9][0-9][0-9].png 2> /dev/null|while read file
do
mv $file ${file##$FIL}
done
скрипт исполняется в каталоге с файлами:
[console]$ ./file.sh out[/console]
где первый параметр скрипта является частью названия файла до нумерации.
После этого файлы out1.png, out2.png примут вид 0001.png, 0002.png и т.д.
convert не очень то красиво делает раскадровку.
Для чего это нужно?
Мне для того чтобы делать boot анимации для андроид. Скрипт как раз то что нужно
Во просмотрел документацию по ffmpeg, можно без скрипта:
[console]$ ffmpeg -i VID_input.gif %4d.png[/console]
полученные файлы все будут формата 0001.png и т.д.
Обратно в gif:
[console]$ ffmpeg -framerate 10 -i %4d.png output.gif[/console]
где %4d означает четырехзначное число, этот параметр можно изменить.
ffmpeg -framerate 10 -i %4d.png output.gif
Только гифка с помехами после конвертации стала. И файл теперь занимает 45K вместо 22K у оригинала. А в остальном всё работает *ROFL*
Только гифка с помехами после конвертации стала. И файл теперь занимает 45K вместо 22K у оригинала. А в остальном всё работает
Ну тут уже смотреть подробнее параметры ffmpeg, может количество кадров в секунду другое, ну и еще что поменять, смотреть там довольно много параметров. Это уже гугл в помощь, может что получится улучшить.
Еще mplayer-ом можно конвертировать:
раскадровка:
[console]$ mplayer -vo png input.gif[/console]
Получение gif:
[console]$ mplayer mf://*.png -vo gif89a:fps=6:output=out.gif[/console]
mplayer mf://*.png -vo gif89a:fps=6 output=out.gif
Выскакивает оишбка
VIDEO: 100x100 25.000 fps 0.0 kbps ( 0.0 kB/s)
Could not find matching colorspace - retrying with -vf scale...
Opening video filter: [scale]
[swscaler @ 0x7f8df0798640]BICUBIC scaler, from rgb24 to yuv420p using MMXEXT
VO: [gif89a] 100x100 => 100x100 RGB 24-bit
V: 0.3 0/ 0 ??% ??% ??,?% 0 0
Playing output=out.gif.
Cannot open file 'output=out.gif': No such file or directory
Failed to open output=out.gif.
Exiting... (End of file)
Да и ffmpeg легче по синтаксису
Выскакивает оишбка
Подправил, там нужно было двоеточие, хотя у меня и так работало.
А так пересмотрел, все таки лучше использовать для этого convert :D
[console]$ identify file.gif[/console]
Показывает информацию о файлах(количество, размер, длительность и т.д.).
convert без параметров извлекает все файлы, тех размеров которые присутствуют в gif файле.
[console]$ convert input.gif output.png[/console]
Только для обратного конвертирования все таки придется обработать вывод скриптом что выше, так как иначе не поддается сортировке.
Обратно конвертировать:
[console]$ convert -delay 10 *.png file.gif[/console]
В параметре -delay выставляется задержка.
После можно еще применить оптимизацию и уменьшить размер файла:
[console]$ convert input.gif -fuzz 2% -layers Optimize out.gif[/console]
Тут решающую роль играет параметр -fuzz чем больше процент, тем хуже качество и меньше размер.
Можно еще уменьшить битность цвета выходного файла, тем уменьшив размер:
[console]$ gifsicle --colors=128 input.gif > out.gif[/console]
У данной программы есть еще параметры для оптимизации, но они немного портят выходной файл, по этому лучше просто цвет уменьшить.
Если планируется изменить размер всех файлов скриптом, то лучше извлекать командой что предлагал xxblx, так как выводит файлы одного размера, либо так:
[console]$ mplayer -vo png:outdir=dir/ input.gif[/console]
а потом уже обрабатывать скриптом все файлы, для файлового менеджера spacefm есть свой плагин image-tools, который позволяет конвертировать изображения в различные расширения и менять размер файлов, просто выделяешь файлы и выбираешь плагин, после этого запускается скрипт в меню которого выбираешь нужные действия. Но его надо уметь устанавливать, в принципе документация есть как это делать.
spacefm
identify file.gif
Гифка размером 100 на 100 но он почемуто разные размеры выдёт.
[console]identify 1251290045_0_edd3_c6676bb0_l.gif
1251290045_0_edd3_c6676bb0_l.gif[0] GIF 100x100 100x100+0+0 8-bit sRGB 256c 22.2KB 0.000u 0:00.000
1251290045_0_edd3_c6676bb0_l.gif[1] GIF 50x92 100x100+31+5 8-bit sRGB 256c 22.2KB 0.010u 0:00.039
1251290045_0_edd3_c6676bb0_l.gif[2] GIF 64x96 100x100+17+3 8-bit sRGB 256c 22.2KB 0.010u 0:00.039
1251290045_0_edd3_c6676bb0_l.gif[3] GIF 48x94 100x100+32+3 8-bit sRGB 256c 22.2KB 0.010u 0:00.039
1251290045_0_edd3_c6676bb0_l.gif[4] GIF 74x95 100x100+0+4 8-bit sRGB 256c 22.2KB 0.010u 0:00.039
1251290045_0_edd3_c6676bb0_l.gif[5] GIF 74x95 100x100+0+4 8-bit sRGB 256c 22.2KB 0.010u 0:00.039
1251290045_0_edd3_c6676bb0_l.gif[6] GIF 60x98 100x100+17+1 8-bit sRGB 256c 22.2KB 0.010u 0:00.039
1251290045_0_edd3_c6676bb0_l.gif[7] GIF 79x99 100x100+0+1 8-bit sRGB 256c 22.2KB 0.010u 0:00.039[/console]
convert -delay 10 *.png file.gif
Хотя этой коммандой запаковывает он без проблем и качество намного лучше чем через ffmpeg.
convert input.gif -fuzz 2% -layers Optimize out.gif
Сжимает всего на 1КБ
тем хуже качество и меньше размер.
Вот теперь сжимает намного сильнее.
gifsicle --colors=128 input.gif > out.gif
А этой программы у меня нет.
mplayer mf://*.png -vo gif89a:fps=6:output=out.gif
Вот теперь начались баги
MPlayer2 2.0-728-g2c378c7-4+b1 (C) 2000-2012 MPlayer Team
Cannot open file '/home/admin/.mplayer/input.conf': No such file or directory
Failed to open /home/admin/.mplayer/input.conf.
Cannot open file '/etc/mplayer/input.conf': No such file or directory
Failed to open /etc/mplayer/input.conf.
Playing mf://*.png.
Detected file format: MF
[mf] search expr: *.png
[mf] number of files: 8 (64)
[demux_mf] file type was not set! trying 'type=png'...
Opening video filter: [scale]
[ass] auto-open
Selected video codec: PNG (Portable Network Graphics) image [libavcodec]
Audio: no sound
Starting playback...
VIDEO: 100x100 25.000 fps 0.0 kbps ( 0.0 kB/s)
Could not find matching colorspace - retrying with -vf scale...
Opening video filter: [scale]
[swscaler @ 0x7fa4fe184640]BICUBIC scaler, from pal8 to yuv420p using MMXEXT
VO: [gif89a] 100x100 => 100x100 RGB 24-bit
V: 0.0 0/ 0 ??% ??% ??,?% 0 0
VIDEO: 50x92 25.000 fps 0.0 kbps ( 0.0 kB/s)
VO: [gif89a] 50x92 => 50x92 RGB 24-bit
V: 0.0 0/ 0 ??% ??% ??,?% 0 0
VIDEO: 64x96 25.000 fps 0.0 kbps ( 0.0 kB/s)
VO: [gif89a] 64x96 => 64x96 RGB 24-bit
MPlayer interrupted by signal 11 in module: check_framedrop
- MPlayer crashed by bad usage of CPU/FPU/RAM.
Recompile MPlayer with --enable-debug and make a 'gdb' backtrace and
disassembly. Details in DOCS/HTML/en/bugreports_what.html#bugreports_crash.
- MPlayer crashed. This shouldn't happen.
It can be a bug in the MPlayer code _or_ in your drivers _or_ in your
gcc version. If you think it's MPlayer's fault, please read
DOCS/HTML/en/bugreports.html and follow the instructions there. We can't and
won't help unless you provide this information when reporting a possible bug.
mplayer -vo png:outdir=dir/ input.gif
Тут тоже ошибка странная
mplayer -vo png:outdir=dir/ 1251290045_0_edd3_c6676bb0_l.gif
MPlayer2 2.0-728-g2c378c7-4+b1 (C) 2000-2012 MPlayer Team
Cannot open file '/home/admin/.mplayer/input.conf': No such file or directory
Failed to open /home/admin/.mplayer/input.conf.
Cannot open file '/etc/mplayer/input.conf': No such file or directory
Failed to open /etc/mplayer/input.conf.
Playing 1251290045_0_edd3_c6676bb0_l.gif.
Detected file format: GIF
Load subtitles in .
GIF-LIB error: Failed to Read from given file.
Could not parse arguments at the position indicated below:
outdir=dir/
^
Error opening/initializing the selected video_out (-vo) device.
Exiting... (End of file)
почему разные то? одинаковые, все правильноГифка размером 100 на 100 но он почемуто разные размеры выдёт.
[console]1251290045_0_edd3_c6676bb0_l.gif[0] GIF 100x100 100x100+0+0 8-bit sRGB 256c 22.2KB 0.000u 0:00.000
1251290045_0_edd3_c6676bb0_l.gif[1] GIF 50x92 100x100+31+5 8-bit sRGB 256c 22.2KB 0.010u 0:00.039
1251290045_0_edd3_c6676bb0_l.gif[2] GIF 64x96 100x100+17+3 8-bit sRGB 256c 22.2KB 0.010u 0:00.039
1251290045_0_edd3_c6676bb0_l.gif[3] GIF 48x94 100x100+32+3 8-bit sRGB 256c 22.2KB 0.010u 0:00.039
[/console]
одинаковые
Вот тут лучше видно
[console]file out-*
out-0.png: PNG image data, 100 x 100, 8-bit colormap, non-interlaced
out-1.png: PNG image data, 50 x 92, 8-bit colormap, non-interlaced
out-2.png: PNG image data, 64 x 96, 8-bit colormap, non-interlaced
out-3.png: PNG image data, 48 x 94, 8-bit colormap, non-interlaced
out-4.png: PNG image data, 74 x 95, 8-bit colormap, non-interlaced
out-5.png: PNG image data, 74 x 95, 8-bit colormap, non-interlaced
out-6.png: PNG image data, 60 x 98, 8-bit colormap, non-interlaced
out-7.png: PNG image data, 79 x 99, 8-bit colormap, non-interlaced[/console]
какраз-то там видно лучше)Вот тут лучше видно
[console]1251290045_0_edd3_c6676bb0_l.gif[0] GIF 100x100 100x100+0+0 8-bit sRGB 256c 22.2KB 0.000u 0:00.000 //начальное изображение
1251290045_0_edd3_c6676bb0_l.gif[1] GIF 50x92(размер изменяемой зоны) 100x100(размер изображения+31+5(начальные координаты изменяемой зоны) 8-bit sRGB 256c 22.2KB 0.010u 0:00.039[/console]
В гиф-анимациях кадры меняются не полностью.
В гиф-анимациях кадры меняются не полностью.
Ну для bootanimation это не подходит, там нужны чёткие кадры.
почитай маны на то чем создаешь анимацию, в любом случае там найдется ключик, который это позволит сделать )там нужны чёткие кадры.
почитай маны на то чем создаешь анимацию
ffmpeg всё таки лучшее решение
Linux-GEEK
Посмотрел на ваш вывод...
У вас это не mplayer а mplayer2 форк mplayer. Этот проект уже умер, видно linux у вас не такой уж новый.
gifsicle - обычно так же называется и пакет.