Bir .mov dosyasını bir .gif'e dönüştürmek için ffmpeg'i nasıl alabilirim?


99

Bir .mov bir .gif dönüştürmek için çalışıyorum ve başarılı olamıyorum.

İşte hata:

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 bölümünü çıkarırsam şikayet eder. Nasıl düzeltileceği üzerine düşünceler?


3
Bilginize, burada verilen yüksek kaliteli dönüşümler için mükemmel bir çözüm var .
ryanjdillon

Yanıtlar:


161

Komut satırı argümanlarının sırası önemlidir. Bu komut satırı çalışmalı ancak dev bir dosya oluşturacaktır:

ffmpeg -i yesbuddy.mov -pix_fmt rgb24 output.gif

Muhtemelen dönüştürürken kare hızını ve boyutunu küçültmek istediğinizi ve ayrıca bir başlangıç ​​zamanı ve süresi belirtmek istediğinizi unutmayın. Muhtemelen tüm dosyayı orijinal çözünürlüğünde ve kare hızında dönüştürmek istemezsiniz.

ffmpeg -ss 00:00:00.000 -i yesbuddy.mov -pix_fmt rgb24 -r 10 -s 320x240 -t 00:00:10.000 output.gif

Dosya boyutu hala çok büyük olacak. Kullanılacak mümkün olabilir ImageMagick boyutunu azaltmak için 'ın GIF optimize edici:

convert -layers Optimize output.gif output_optimized.gif

3
Müthiş cevap, teşekkürler :) GIF çılgın bir formattır ... orijinal .mov 250k, ffmpeg'den dönüştürülen .gif 8 mb ve convert-optimized sürümü şaşırtıcı bir 10k! Etkileyici!
TooTallNate

19
ffmpeg, piksel formatından şikayet eder ve rgb24'den pal8'e geçer; Cevaptaki komut güncellenmeli mi?
user1071136

7
Kodek 'gif' için uyumsuz piksel biçimi 'rgb24'
highmaintenance

1
@Andy benim ffmpeg sürümünde rgb8'e otomatik olarak sabitlendi.
James Campbell,

Android'de nasıl yapılır?
Ajay Shrestha

12

Dönüştürdükten sonra:

ffmpeg -i input.mp4 input.gif 

Kareleri optimize etmeyi deneyin:

convert input.gif -verbose -coalesce -layers OptimizeFrame input_optframe.gif

Ve gifsicleson optimizasyon yapmak için kullanın :

gifsicle -O2 input_optframe.gif -o optimized.gif

12.2 MB videodan 6.8 MB GIF neredeyse aynı kalitede!


3
Bu adımların nasıl çalıştığını ve ne yaptıklarını açıklamak ister misiniz?
Raystafarian

10

FFmpeg, ImageMagick ve giflossy'yi tek bir satırda kurabileceğiniz kullanımı kolay tek bir komut satırı programında toplayan bir araç yaptım: https://github.com/vvo/gifify

GIF'in nasıl yeniden boyutlandırılacağını veya başlangıç ​​/ bitiş zamanının nasıl değiştirileceğini anlamak için 3 belge web sitesine göz atmak yerine, videoyu açmak isteyen herkese => GIF kullanmasını öneririm.


1
alias gifify='docker run -it --rm -v $(pwd):/data maxogden/gifify'gifify screencast.mkv -o screencast.gif --resize 800:-1
Docker'ı

2
ffmpeg -y -i input.mp4 -f image2pipe -vcodec ppm - | convert -delay 2 -loop 0 -layers Optimize - gif:- | gifsicle -d 3 -O3 -o optimized.gif

ilk önce mp4 dosyasını boru aracılığıyla görüntülere dönüştürmek için ffmpeg komutunu kullanın, daha sonra gif ile birlikte optimize edilmiş gif sıkıştırmak için imagemagick kullanın.

Gifscicle'ı doğrudan kullanmanın neden işe yaramayacağını bilmiyorum.

veya bu sayede gif'i küçültebilirsiniz

convert -dither none -matte -depth 8 -deconstruct -layers optimizePlus -colors 32 in.gif out.gif
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.