답변:
나를 위해 일한 것은 다음과 같습니다.
ffmpeg -i animated.gif -movflags faststart -pix_fmt yuv420p -vf "scale=trunc(iw/2)*2:trunc(ih/2)*2" video.mp4
movflags –이 옵션은 브라우저가 가능한 빨리로드 할 수 있도록 MP4 파일의 구조를 최적화합니다.
pix_fmt – MP4 비디오는 다른 형식으로 픽셀을 저장합니다. 모든 브라우저에서 최대 호환성을 갖는 특정 형식을 지정하기 위해이 옵션을 포함합니다.
vf – H.264를 사용하는 MP4 비디오의 크기는 2로 나눌 수 있어야합니다.이 옵션을 사용하면 문제가 해결됩니다.
출처 : http://rigor.com/blog/2015/12/optimizing-animated-gifs-with-html5-video
scale
있습니다 (로 교체 crop
). 확장은 일을 흐리게 만들 수 있습니다
필자의 경우 ffmpeg
직접 사용 하여 트릭을 수행하고 최상의 결과를 제공했습니다.
$ ffmpeg -f gif -i infile.gif outfile.mp4
"n 루프"로 출력하려면 이 솔루션을 한 번에보십시오.
normal.gif 를 loop.mp4 로 변환 해 봅시다.
for 2 루프 영화 예제 :
ffmpeg -stream_loop 2 -i normal.gif loop.gif -y;ffmpeg -i loop.gif -pix_fmt yuv420p -vf "scale=trunc(iw/2)*2:trunc(ih/2)*2" loop.mp4 -y
for 5 루프 영화 예제 :
ffmpeg -stream_loop 5 -i normal.gif loop.gif -y;ffmpeg -i loop.gif -pix_fmt yuv420p -vf "scale=trunc(iw/2)*2:trunc(ih/2)*2" loop.mp4 -y
주의 : -y [overwrite]가 있습니다
ffmpeg
명령 을 실행하면 원하지 않는 것을 실수로 덮어 쓸 가능성이 훨씬 줄어 듭니다. (도 있습니다 아마 얻을 수있는 방법 자체에 파이프 비디오, 중간 파일을 덮어 쓰기하지 않고 하나의 파이프 명령에서이 작업을 수행.) -y
ffmpeg
MacOs 버전은 다음과 같습니다.
$ ffmpeg -i input.avi -pix_fmt yuv420p output.mp4