这里是错误:
ffmpeg -pix_fmt rgb24 -i yesbuddy.mov output.gif
ffmpeg version 0.11.1 Copyright (c) 2000-2012 the FFmpeg developers
built on Jun 12 2012 17:47:34 with clang 2.1 (tags/Apple/clang-163.7.1)
configuration: --prefix=/usr/local/Cellar/ffmpeg/0.11.1 --enable-shared --enable-gpl --enable-version3 --enable-nonfree --enable-hardcoded-tables --enable-libfreetype --cc=/usr/bin/clang --enable-libx264 --enable-libfaac --enable-libmp3lame --enable-librtmp --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libxvid --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libass --enable-libvo-aacenc --disable-ffplay
libavutil 51. 54.100 / 51. 54.100
libavcodec 54. 23.100 / 54. 23.100
libavformat 54. 6.100 / 54. 6.100
libavdevice 54. 0.100 / 54. 0.100
libavfilter 2. 77.100 / 2. 77.100
libswscale 2. 1.100 / 2. 1.100
libswresample 0. 15.100 / 0. 15.100
libpostproc 52. 0.100 / 52. 0.100
Option pixel_format not found.
如果我忽略了-pix_fmt rgb24部分,则会抱怨。有关如何解决的想法?
#1 楼
命令行参数的顺序很重要。此命令行应该可用,但会生成一个巨大的文件:ffmpeg -i yesbuddy.mov -pix_fmt rgb24 output.gif
请注意,您可能希望在转换时降低帧速率和大小,并指定一个开始时间和持续时间。您可能不想以其原始分辨率和帧频转换整个文件。
ffmpeg -ss 00:00:00.000 -i yesbuddy.mov -pix_fmt rgb24 -r 10 -s 320x240 -t 00:00:10.000 output.gif
文件大小仍然很大。您也许可以使用ImageMagick的GIF优化器来减小尺寸:
convert -layers Optimize output.gif output_optimized.gif
评论
太棒了,谢谢:) GIF是一种疯狂的格式...原始.mov文件为250k,从ffmpeg转换后的.gif为8mb,而经过转换优化的版本则为惊人的10k!令人印象深刻!
– TooTallNate
13年1月22日在1:37
ffmpeg抱怨像素格式,并从rgb24切换到pal8;答案中的命令是否应该更新?
–user1071136
2014年3月17日20:39
编解码器'gif'的像素格式'rgb24'不兼容
–本·阿弗莱克
2014年7月18日在10:15
@Andy在我的ffmpeg版本中自动修复为rgb8。
–詹姆斯·坎贝尔
17年9月6日在22:46
在Android中怎么做?
–阿贾伊·什雷斯塔(Ajay Shrestha)
17年3月3日在23:18
#2 楼
转换后:ffmpeg -i input.mp4 input.gif
尝试优化帧:
convert input.gif -verbose -coalesce -layers OptimizeFrame input_optframe.gif
并使用
gifsicle
进行最终优化:gifsicle -O2 input_optframe.gif -o optimized.gif
来自12.2mb视频的6.8mb GIF具有几乎相同的质量!
评论
介意解释这些步骤如何工作以及它们在做什么?
–雷斯塔法里安
2014年11月5日19:31
对我来说,质量太糟糕了。 superuser.com/a/1061409/376651取得了不错的成绩,但文件大小有所增加
–减少活动
19年12月1日在15:05
#3 楼
我制作了一个将FFmpeg,ImageMagick和giflossy捆绑到一个易于使用的命令行程序中的工具,可以将其安装在一行中:https://github.com/vvo/gifify我推荐任何人愿意打开视频=>使用GIF,而不是花大量时间浏览3个文档网站来了解如何调整GIF大小或更改开始/结束时间。
评论
如果您的计算机上运行了Docker,则只需执行以下别名即可:alias gifify ='docker run -it --rm -v $ {pwd):/ data maxogden / gifify'然后将其用于gifify screencast.mkv -o screencast.gif-调整大小800:-1
–安全
18年5月28日在6:38
“如果您要维护该项目,请再给我ping一下,我不再使用该项目或对其提供任何支持”
–减少活动
19/12/1在14:29
仍然运行良好-只需运行docker run -it --rm -v $(pwd):/ data maxogden / gifify my.mov -o my.gif --speed 1.5 --resize 1000:-1 --colors 255-每秒6帧
–艾哈迈德·法西(Ahmed Fasih)
20-11-02在20:47
#4 楼
ffmpeg -y -i input.mp4 -f image2pipe -vcodec ppm - | convert -delay 2 -loop 0 -layers Optimize - gif:- | gifsicle -d 3 -O3 -o optimized.gif
首先使用ffmpeg通过管道将mp4文件转换为图像
,然后使用imagemagick将其压缩为gif
,最后用gifsicle优化它
我不知道为什么直接使用gifscicle无法使用。
或者您可以通过以下方式缩小gif
convert -dither none -matte -depth 8 -deconstruct -layers optimizePlus -colors 32 in.gif out.gif
#5 楼
ffmpeg -i <input source> -filter_complex "[0:v] fps=12,scale=<width>:-1,split [a][b];[a] palettegen [p];[b][p] paletteuse" <output file>
在此命令中,您需要插入3个令牌。
<input source>
将类似于your-recording.mov
,<width>
应该是您想要最终gif的宽度,而<output file>
将类似于recording.gif
。此命令分解为:
filter_complex
我们将把一些过滤器链接在一起[0:v] fps=12
以每秒12帧的速度获取容器中的第一个视频流scale=1024:-1
调整为1024的宽度,并保持高度的长宽比split [a][b]
获取当前流并将其分成两部分(基本上是克隆它);
传入新过滤器[a] palettegen [p]
取“ a”流并生成一个名为“ p”的调色板;
传入新的过滤器[b][p] paletteuse
接收“ b”流并应用“ p”调色板并非总是要在屏幕记录中使用调色板的内容,但绝对需要b录制的视频具有更好的颜色。
如果要剪辑,也可以根据需要插入
-ss 00:00:00.000
和-t 00:00:00.000
。
评论
仅供参考,此处提供了一种出色的高质量转换解决方案。