題 如何讓ffmpeg將.mov轉換為.gif?


我正在嘗試將.mov轉換為.gif並且我沒有成功。

這是錯誤:

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部分,它會抱怨。關於如何解決的想法?


82
2018-06-13 01:28


起源


僅供參考,給出了高質量轉換的出色解決方案 這裡。 - ryanjdillon


答案:


命令行參數的順序很重要。此命令行應該可以工作,但會生成一個巨大的文件:

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

141
2018-06-13 04:37



很棒的答案,謝謝:) GIF是一個瘋狂的格式...原始的.mov是250k,從ffmpeg轉換的.gif是8mb,並且 convert優化的版本是驚人的10K!令人印象深刻! - TooTallNate
ffmpeg抱怨像素格式,並從rgb24切換到pal8;應該更新答案中的命令嗎? - user1071136
用於編解碼器'gif'的不兼容像素格式'rgb24' - highmaintenance
@Andy在我的ffmpeg版本中自動修復到rgb8。 - James Campbell
怎麼做Android? - Ajay Shrestha


轉換後:

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,質量幾乎相同!


9
2017-11-05 19:01



介意解釋這些步驟是如何工作的以及它們在做什麼? - Raystafarian


我製作了一個工具,將FFmpeg,ImageMagick和giflossy捆綁成一個易於使用的命令行程序,您可以在一行中安裝: https://github.com/vvo/gifify

我建議有人願意使用視頻=> GIF來使用它,而不是花費大量時間瀏覽3個文檔網站,以了解如何調整GIF的大小或更改開始/結束時間。


5
2017-09-16 14:54



如果您的計算機上運行了Docker,只需執行如下別名: alias gifify='docker run -it --rm -v $(pwd):/data maxogden/gifify' 然後使用它 gifify screencast.mkv -o screencast.gif --resize 800:-1 - sabbour


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

0
2018-04-04 21:43