ffmpeg로 동영상 변환 및 저장
ffmpeg로 동영상 변환 및 저장
앱 시연 영상, 버그 재현 영상, QA 증적 파일을 정리하다 보면 생각보다 자주 ffmpeg를 쓰게 된다. 원본 파일은 너무 크고, 메신저에 올리기에는 코덱이 맞지 않고, 특정 단말에서는 재생이 안 되기도 한다. 이럴 때 GUI 툴을 찾아다니는 것보다 ffmpeg 명령 몇 개를 기억해 두는 편이 훨씬 빠르다.
예전에는 단순히 포맷 변환 도구처럼 보였지만, 실제로는 재인코딩, 리사이즈, 스트리밍 파일 저장, 품질과 용량 균형 조절까지 다 되는 만능 도구에 가깝다. 옵션이 많아서 처음에는 겁먹기 쉽지만, 모바일 개발이나 QA에서 자주 쓰는 패턴만 익혀도 충분히 실전에 도움이 된다.
ffmpeg를 언제 쓰는가
내가 자주 쓰는 상황은 대체로 아래다.
- iPhone이나 Android 화면 녹화 영상을 용량 줄여서 공유할 때
- QA가 준
.ts,.mkv,.avi파일을 표준 MP4로 맞출 때 - m3u8 스트림이나 테스트 영상을 내려받아 보관할 때
- 데모 영상에 맞는 해상도와 코덱으로 정리할 때
특히 슬랙, 노션, 메일에 올릴 영상을 정리할 때 “그냥 재생만 되면 된다”와 “용량이 너무 커서 못 올린다” 사이에서 균형을 잡기 좋다.
설치
macOS라면 Homebrew가 가장 간단하다.
brew install ffmpeg
설치 후 아래 명령이 동작하면 준비 끝이다.
ffmpeg -version
변환 전에 파일 정보를 먼저 보고 싶다면 ffprobe도 같이 기억해 두면 좋다.
ffprobe input.mp4
어떤 코덱인지, 해상도는 얼마인지, 프레임레이트는 어떤지 먼저 확인하면 괜한 재인코딩을 줄일 수 있다.
자주 쓰는 옵션 감각
모든 옵션을 외울 필요는 없다. 실무에서 자주 보는 것만 기억하면 된다.
-i: 입력 파일-c:v: 비디오 코덱-c:a: 오디오 코덱-crf: 화질과 용량 균형-vf: 해상도, 자막, 프레임 등 비디오 필터-ss,-t: 특정 구간 자르기
여기서 제일 중요한 감각은 copy와 재인코딩의 차이다. 컨테이너만 바꿔도 되는 파일은 -c copy가 빠르고 품질 손실도 없다. 하지만 코덱 호환이 안 되면 결국 재인코딩이 필요하다.
자주 쓰는 예제
mkv를 mp4로 빠르게 바꾸기
ffmpeg -i source.mkv -c copy dest.mp4
스트림 자체는 건드리지 않고 컨테이너만 바꾸는 방식이다. 다만 모든 mkv가 그대로 mp4에 안전하게 들어가는 것은 아니므로 결과 재생 확인은 필요하다.
호환성 좋은 MP4로 재인코딩
ffmpeg -i input.mov -c:v libx264 -crf 23 -preset medium -c:a aac output.mp4
가장 무난한 기본기다. 화면 녹화 영상 공유용으로 실패가 적다.
용량 줄이기
ffmpeg -i input.mp4 -vf "scale=1280:-2" -c:v libx264 -crf 28 -c:a aac output-small.mp4
해상도와 crf를 같이 조절하면 생각보다 많이 줄어든다. 메신저 공유나 회의용이면 4K 원본을 그대로 들고 갈 이유가 거의 없다.
m3u8 저장
ffmpeg -i https://example.com/stream.m3u8 -c copy -bsf:a aac_adtstoasc saved.mp4
테스트 스트림을 아카이브할 때 유용하다. 다만 권한 있는 리소스에만 사용해야 하고, 서비스 약관도 확인하는 것이 맞다.
자주 겪는 실패 사례
-c copy를 썼는데 재생이 안 된다
컨테이너는 MP4로 바뀌었지만 내부 코덱이 호환되지 않으면 일부 플레이어에서 재생이 안 된다. 이 경우는 H.264와 AAC 조합으로 재인코딩하는 편이 안전하다.
회전 정보가 이상하다
모바일 화면 녹화 파일은 rotation metadata 때문에 플레이어마다 다르게 보일 수 있다. 단순 변환보다 실제 화면 기준으로 다시 인코딩하는 쪽이 덜 헷갈린다.
자막이나 오디오 트랙이 사라진다
원본에 트랙이 여러 개 있으면 기본 선택이 예상과 다를 수 있다. 이럴 때는 -map 옵션으로 명시하는 편이 안전하다.
모바일 개발 관점의 팁
- 버그 재현 영상은 짧게 자르고 용량을 줄여서 공유하는 편이 협업 속도가 빠르다.
- 기기 화면 녹화 원본은 보관하고, 공유본만 변환하는 것이 좋다.
- AI 요약이나 문서화 파이프라인에 넣을 영상도 ffmpeg로 규격을 먼저 맞추면 후속 처리 실패가 줄어든다.
빠른 체크리스트
- 단순 컨테이너 변경인지 재인코딩이 필요한지 먼저 판단했다
- 공유 목적이라면 H.264와 AAC 기반 MP4를 우선 고려했다
crf와 해상도로 용량을 조절했다- 결과 파일을 실제 재생 테스트했다
- 원본 파일은 별도로 보관했다
마무리
ffmpeg는 옵션이 많아서 어려워 보이지만, 실제로는 몇 가지 패턴만 익히면 모바일 개발과 QA 업무에 계속 도움이 된다. 특히 “재생은 되게, 용량은 줄이게, 공유는 편하게”라는 현실적인 목적에는 거의 항상 해답이 있다. GUI 도구를 오가며 클릭하는 것보다, 재현 가능한 명령어 몇 줄을 남기는 편이 팀에도 더 친절하다.
댓글남기기