유틸

FFmpeg와 vidstab 으로 영상 흔들림 보정

최근에는 스마트폰 카메라 성능이 좋아져서 영상을 찍을 때 흔들림 보정이 잘 되지만 줌을 당겨서 영상을 찍거나 구형 스마트폰을 사용하는 경우 흔들림이 많을 수 있습니다.

이런 경우 후보정을 이용할 수 있는데 꽤 무거운 동영상 편집 프로그램을 설치해야 하고 캡컷 등의 프로그램에서 흔들림 보정 기능은 유료로만 제공됩니다.

이 글에서는 FFmpeg와 vidstab을 이용해서 용량이 큰 프로그램 설치 없이 무료로 깔끔하게 영상 흔들림 보정을 해보겠습니다.

FFmpeg

FFmpeg는 오픈 소스 멀티미디어 프레임워크 프로젝트로 이를 이용해 영상 처리, 변환, 편집 등을 할 수 있습니다.

명령어로 사용하므로 익숙하지 않을 수 있지만 공식문서나 위키 등에서 금방 명령어를 익힐 수 있고 AI한테 특정 작업을 위한 명령어를 알려달라고 하면 됩니다.

윈도우, 리눅스, 맥에서 사용가능한데 이 글에서는 윈도우 기준으로 사용합니다.

다운로드

설치 방법과 다운로드 받는 곳도 여러 개가 있는데 저는 https://www.gyan.dev/ffmpeg/builds/ 에서 ffmpeg-git-full.7z 를 다운로드 받았습니다.

다운로드 받고 압축을 풀어줍니다. 그러면 bin 폴더 안에 ffmpeg.exe가 있습니다. 명령어로 ffmpeg.exe를 실행시켜 원하는 작업을 수행할 수 있습니다.

실행

0. 경로설정

윈도우 키를 누르고 cmd 또는 명령 프롬프트를 검색해서 실행합니다. 그러면 검은색 창이 나옵니다.

cmd 실행
cmd 실행

현재 경로가 표시되어 있는데 우선 작업파일이 있는 폴더로 경로를 바꿉니다. 드라이브를 바꾸려면 명령줄에 C: , D: 등을 입력해 바꾸고 이후 cd 명령어를 이용해 경로를 바꿉니다.

경로 변경
경로 변경

직접 입력해도 되고 파일탐색기에서 경로를 복사하고 cmd에서 우클릭하면 붙여넣기가 됩니다. 이 글에서는 바탕화면에 테스트라는 폴더를 만들어서 영상 파일을 넣어놨습니다.

파일탐색기 경로 복사
파일탐색기 경로 복사

이제 ffmpeg.exe의 경로를 복사합니다. 저의 경우는 바탕화면\ffmpeg\bin\ 에 ffmpeg.exe가 있습니다. 아래 처럼 명령어를 입력하면 ffmpeg에 대한 정보가 출력됩니다.

ffmpeg 실행
ffmpeg 실행

환경변수를 등록해 놓으면 경로없이 ffmpeg만 입력해서 실행할 수가 있는데 원하시는 분은 검색이나 AI에게 물어봐서 등록하시면 될 것 같습니다.

ffmpeg를 실행할 때 인자를 전달해서 작업을 수행합니다. 이후에는 방금 입력했던 명령어 뒤에 인자를 추가해 흔들림 보정을 해보겠습니다. 아래 내용부터는 ffmpeg의 경로를 생략하고 ffmpeg만 쓰겠습니다.

1. 흔들림 분석데이터 파일 생성

위의 명령어로 transform1.trf라는 흔들림 분석데이터 파일을 생성합니다.

  • -i : 입력 파일 이름
  • shakiness : 흔들림강도, 범위 1~10, 기본값 5, 많이 흔들린 영상일수록 크게 해줌

2. 보정 적용 및 렌더링

위의 명령어로 흔들림 분석데이터 파일을 적용하고 output1.mp4라는 보정이 적용된 영상을 생성합니다.

  • -i : 입력 파일 이름
  • vidstabtransform=input= : 흔들림 분석데이터 파일 이름
  • optzoom : 확대 옵션, 0 : 확대없음, 여백 생김, 1 : 일정하게 확대, 여백 없음, 2 : 확대율이 변함, 여백 없음
  • smoothing : 클수록 흔들림이 줄지만 왜곡이 심해짐
  • -c:v : 비디오코덱 설정
  • -crf : 범위 0~51, 값이 작을수록 원본화질이 유지되지만 용량이 큼. 기본값 23, 고화질 18 추천
  • -c:a: copy로 둬서 원본영상 오디오 그대로 사용

흔들림 보정을 하면 영상에 여백이 생기게 되는데 optzoom 옵션을 적용하면 여백을 없앨 수 있습니다. 대신 영상이 확대가 됩니다. smoothing이 클수록 흔들림이 줄어들지만 왜곡이 생겨 평행사변형 형태로 비틀리는 느낌이 납니다.

영상 프레임이 많고 화질이 높을수록 처리하는데 시간이 오래걸립니다.

영상 여러 개를 처리하는 경우 아래와 비슷하게 명령어를 입력하면 됩니다. 아래 명령어는 현재 경로의 mp4 파일들을 처리합니다. 물론 환경변수를 등록하지 않았다면 ffmpeg 앞에 경로를 포함해야합니다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

error: Content is protected !!