Computer >> 컴퓨터 >  >> 소프트웨어 >> 소프트웨어

ffmpeg으로 비디오를 고화질 GIF로 손쉽게 변환하는 방법

고급 밈 제작 가이드 - 비디오를 고화질(HD) GIF로 변환하기

업데이트: 2024년 8월 23일

몇 주 전, WhatsApp에서 "비디오를 보낼 수 없는" 문제에 대해 이야기한 적이 있습니다. 친구들과 재미있는 밈을 공유하고 싶은데 기술적인 제약이 발목을 잡는 상황이죠. 그 당시에는 HD 비디오로 보내는 방식으로 우회하는 방법을 소개했는데요, 그렇다면 SD 화질밖에 없는 콘텐츠만 가지고 있다면 어떻게 해야 할까요? 스마트폰에서는 간단하지 않지만, 데스크톱에서는 다양한 선택지가 있습니다.

오늘의 튜토리얼에서는 오래되었지만 강력한 미디어 편집 도구인 ffmpeg를 다시 살펴보겠습니다. ffmpeg는 오디오와 비디오 관련 모든 작업을 처리할 수 있는 만능 도구입니다. 다양한 포맷 간 변환, 클립 분할 및 병합, 크기 조절, 개별 프레임 추출, 자막 삽입, 재생 속도 변경 등 무엇이든 할 수 있죠. 이번 글에서는 그중에서도 비디오를 애니메이션 이미지인 GIF로 변환하는 방법을 집중적으로 다뤄보겠습니다.

왜 비디오를 GIF로 변환해야 할까?

앞서 언급했듯이, 어떤 프로그램이나 앱의 기술적 제한 때문에 친구들과 비디오 콘텐츠를 공유하기 어려운 상황이 생길 수 있습니다. 또 어떤 경우에는 오디오가 없는 영상 부분만 필요할 수도 있고, 용량이나 형식 제한에 직면할 수도 있습니다. 파일로 첨부해서 다운로드하게 하는 것보다 채팅에 클립을 바로 삽입하는 편이 훨씬 매끄러운 밈 경험을 제공하기 때문입니다.

그래서 저는 비디오 클립으로 무엇을 할 수 있는지 탐구하게 되었습니다. SD 화질의 콘텐츠라도 HD로 트랜스코딩하는 것은 문제없습니다. 마찬가지로 비디오 클립을 GIF 이미지로 변환하는 것도 가능합니다. 하지만 기본 설정으로 변환하면 결과물이 좋지 않아 저해상도에 반복 재생되지 않는 파일이 나올 수 있습니다. 이는 훌륭한 밈 제작의 정신에 어긋나는 것이죠.

자, 그럼 비디오 파일(예: MP4, MOV)을 GIF로 변환해 보겠습니다.

ffmpeg 명령줄 사용법

온라인 변환 사이트에 의존하거나 폰에 이상한 앱들을 설치하지 않고 가장 간단하게 작업하는 방법은 무료 오픈소스 유틸리티인 ffmpeg(데스크톱)를 활용하는 것입니다. 리눅스 사용자라면 저장소에서 바로 설치할 수 있고, Windows 사용자는 공식 사이트에서 실행 파일을 내려받으면 됩니다.

기본 명령어 형식은 다음과 같습니다:

ffmpeg -i [입력파일] -vf "fps=XX,scale=YYYY:-1:flags=lanczos" -loop 0 [출력파일]

실제 예시를 들어보면:

ffmpeg -i Test.mov -vf "fps=24,scale=1920:-1:flags=lanczos" -loop 0 Test.gif

각 옵션이 무슨 의미인지 하나씩 살펴보겠습니다.

  • -i: 입력 파일 이름을 지정합니다. 변환하려는 비디오 파일이 여기에 해당합니다.
  • -vf: 변환 시 적용할 비디오 필터 옵션을 지정합니다.
  • fps=XX: 프레임 레이트를 정의합니다. 원본 비디오의 프레임 레이트와 일치시키는 것이 좋습니다. 그래야 프레임 누락이나 보간 현상을 피할 수 있습니다. 예를 들어 일반적인 24FPS 비디오라면 24를 사용하세요. 굳이 맞출 필요는 없지만, 일치시키지 않으면 실제 GIF 재생 속도가 원본보다 느려지거나 빨라질 수 있습니다.
  • scale=YYYY:-1: 비디오의 크기를 확대/축소하여 HD 콘텐츠를 만들 수 있게 해줍니다. 가로와 세로를 모두 지정할 수도 있고, 한쪽만 지정하고 나머지는 -1로 두어 원본 비율에 맞게 자동 조절되도록 할 수도 있습니다. 예시에서는 가로 1920px의 HD GIF로 변환했습니다. 세로는 원본 비율을 따르므로 16:9 비율로 녹화했다면 1080px로 설정됩니다. 물론 반대로 지정하는 것도 가능합니다. 참고로 대개는 320px나 640px 같은 훨씬 작은 크기를 사용하는 것이 좋습니다. 그 이유는 곧 설명드리겠습니다. 아래와 같은 형태로도 활용할 수 있습니다:

scale=1920:1080

scale=-1:640

  • flags: 크기 조절에 사용될 알고리즘을 정의합니다(GIMP에서 하는 것과 유사합니다). 색상 채널 조작 등 더 많은 작업도 가능하지만, 실용적인 목적으로는 기본값만으로도 충분합니다. lanczos, neighbor, bicubic 등을 시도해 볼 수 있습니다.
  • -loop 0: 무한 반복 재생되는 GIF를 생성하라고 ffmpeg에 지시합니다.
  • 마지막으로 출력 파일 이름을 지정합니다.

ffmpeg가 실행을 마치면 완성입니다. 몇 가지 결과물 썸네일을 확인해 보세요. 동영상이든 GIF든 실제 움직임을 충분히 보여주지는 못하지만, 여기에는 중요한 이유가 있습니다.

주의할 점: 파일 크기

그 이유는 바로 파일 크기입니다. 원본 비디오는 5초 길이의 클립으로 3.5MB에 불과했는데, 변환된 GIF는 무려 61.5MB나 되었습니다! 다른 클립으로 시험했을 때도 차이가 다소 줄어들 뿐, 86MB vs 152MB로 여전히 컸습니다. 결국 클립에 담긴 정보량에 따라 달라지는 것이죠. 그래서 실제 결과물 파일은 여기에 첨부하지 않았습니다. 대역폭을 너무 많이 잡아먹을 수 있으니까요. 힌트를 드리자면, 이 문제를 해결하는 방법들이 있지만 그건 별도로 다룰 예정입니다.

어쨌든, 우리는 성공했습니다. 밈화(memeification) 완료!

마무리

ffmpeg는 놀랍도록 복잡하면서도 유용한 도구입니다. 약 5,000개 안팎의 플래그와 옵션을 갖추고 있어 정말 무엇이든 가능합니다. 인내심과 꾸준함만 있다면, 오디오나 비디오 관련 작업이 필요할 때 이보다 좋은 선택은 없습니다. 오늘은 멋진 GIF를 만들어 보았는데, 목표를 달성한 셈이죠.

위에서 소개한 방법들이 여러분이 한 단계 더 발전된 밈 제작자가 되는 데 도움이 되기를 바랍니다. 고품질 콘텐츠 제작에도 유용할 것입니다. 변환 원리는 입력과 출력 포맷이 무엇이든 동일하기 때문에, SD 비디오를 HD 비디오로 만들어야 하는 상황에서도 같은 방식을 적용할 수 있습니다. GIF는 그중에서도 더욱 독창적인 선택지라고 생각합니다. 이 글이 도움이 되었기를 바랍니다. 다음에는 GIF 밈 제작에 관한 또 다른 글을 준비 중입니다. GIF 파일을 만드는 다양한 방법과 각각의 장점 등을 다룰 예정이니 기대해 주세요. 즐거운 밈 제작 되세요!