어떻게 .mov를 .gif로 변환 할 ffmpeg를 얻을 수 있습니까?


84

.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 부분을 생략하면 불평합니다. 고칠 방법에 대한 생각?


2
참고로 고품질 전환 기회를 제공하는 훌륭한 솔루션이 있습니다. 이리 .
ryanjdillon

답변:


144

커맨드 라인 인수의 순서가 중요합니다. 이 명령 행은 작동하지만 거대한 파일을 생성합니다 :

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

3
끔찍한 대답, 감사합니다 :) GIF는 미친 형식입니다 ... 원래 .mov는 250k, ffmpeg에서 변환 된 .gif는 8MB, convert 최적화 된 버전은 놀라운 10k! 인상적이다!
TooTallNate

17
ffmpeg는 픽셀 형식에 대해 불평하고 rgb24에서 pal8로 전환합니다. 대답의 명령이 업데이트되어야합니까?
user1071136

6
코덱 'gif'의 호환되지 않는 픽셀 형식 'rgb24'
highmaintenance

1
@ 앤디 자동으로 ffmpeg 내 버전에서 rgb8로 고정.
James Campbell

Android에서하는 방법?
Ajay Shrestha

9

변환 후 :

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를 얻었습니다!


3
이 단계가 어떻게 작동하고 그들이 무엇을하는지 설명하는 마음?
Raystafarian

7

FFmpeg, ImageMagick 및 giflossy를 한 줄에 설치할 수있는 사용하기 쉬운 명령 행 프로그램에 번들로 묶은 도구를 만들었습니다. https://github.com/vvo/gifify

동영상을 돌려 줄 사람을 추천합니다. & gt; GIF의 크기를 조정하거나 시작 / 종료 시간을 변경하는 방법을 이해하기 위해 3 개의 문서 웹 사이트를 탐색하는 데 많은 시간을 소비하는 대신 GIF를 사용하십시오.


1
Docker를 컴퓨터에서 실행중인 경우 다음과 같이 별칭을 지정하면됩니다. alias gifify='docker run -it --rm -v $(pwd):/data maxogden/gifify' 그것을 사용하십시오. gifify screencast.mkv -o screencast.gif --resize 800:-1
sabbour

1
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
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.