가로형(16:9) 영상을 쇼츠 영상용 세로형(9:16)으로 게시하고 싶을 때가 자주 있습니다. 좌우를 잘라내면 화면 가득 채워지지만, 등장인물이 화면 가장자리에 있는 영상의 경우 중요한 부분이 잘려나갈 수 있습니다.
이 글에서는 ffmpeg를 사용하여 크롭 없이 16:9 영상을 9:16 캔버스에 맞추는 방법을 검은색 바(black bar) 버전과 블러 배경(blur background) 버전 두 가지로 설명합니다. 마지막으로, 여러 파일을 한 번에 처리하는 스크립트와 확인용 명령어도 제공합니다.
- ffmpeg 6 이상 (`scale`, `pad`, `boxblur`, `overlay` 필터 사용)
- 입력: 1280×720, 16:9, 30fps 전후의 MP4
- 출력: 1080×1920, 9:16, H.264 + AAC
예시로 AI가 생성한 15초짜리 16:9・720p 클립을 사용합니다.
左に 1280×720(16:9)のAI生成フレーム、右に上下を黒帯で埋めた 1080×1920 キャンバスを並べたレターボックス変換の図
구성도: 1280×720 (16:9)의 AI 생성 프레임을 크롭하지 않고 1080×1920 캔버스 중앙에 배치하고, 상하를 검은색 바로 채웁니다.
9:16 비율인 가로 1080px에 16:9 영상을 맞추면 높이는 다음과 같습니다.
1080 / 16 * 9 = 607.5 → 짝수로 반올림하여 608
H.264에서는 가로와 세로를 짝수로 지정해야 하므로, `scale=1080:-2`라고 작성하면 ffmpeg가 자동으로 짝수(608)로 반올림해 줍니다. 상하 여백은 `(1920 - 608) / 2 = 656`px씩입니다.
원래 영상이 1280×720이므로, 가로 1080에 맞추면 약간 축소됩니다. 확대하지 않기 때문에 화질이 거칠어질 걱정은 없습니다.
가장 간단한 방법입니다.
ffmpeg -i input.mp4 \
-vf
그리고 중앙보다 160px 위에 배치했습니다. 값은 플랫폼의 UI에 맞춰 조정해 주세요. 참고로, 아래에서 20%, 오른쪽에서 15% 정도는 UI와 겹치기 쉬운 영역입니다.
폴더 내의 MP4를 모두 검은색 배경(black bar) 버전으로 변환하는 셸 스크립트입니다.
#!/usr/bin/env bash
set -euo pipefail
mkdir -p out
...
`-nostdin`을 붙여주면, 루프 내에서 ffmpeg가 표준 입력(standard input)을 읽어들이는 문제를 방지할 수 있습니다.
변환 후에는 ffprobe로 해상도, 길이, 음성 유무를 확인합니다.
ffprobe -v error -select_streams v:0
-show_entries stream=width,height,sample_aspect_ratio
-show_entries format=duration -of compact output_black.mp4
`width=1080|height=1920|sample_aspect_ratio=1:1`와 표시되고, 길이가 원본 영상과 같다면 성공입니다. 음성 유무는 다음 명령어로 알 수 있습니다.
ffprobe -v error -select_streams a
-show_entries stream=codec_name -of csv=p=0 output_black.mp4
아무것도 표시되지 않으면, 음성 트랙이 없습니다.
-
: `height not divisible by 2` 오류가 발생할 때,
`scale=1080:-1`와 같이 지정하면 홀수가 될 수 있습니다. 이때는 `-2`를 사용합니다. -
**세로/가로 비율이 틀어져 보일 때**: `setsar=1`을 빠뜨리지 않았는지 확인합니다. -
**블러(blur) 버전이 무거울 때**: `boxblur`의 반지름(radius)을 낮추거나, 배경만 먼저 축소한 후 블러를 적용하면 빨라집니다. -
**색상이 달라질 때**: `-pix_fmt yuv420p`를 지정하면 많은 플레이어에서 동일하게 보입니다.
- 16:9 → 9:16으로 자르지 않고 변환할 때는 `scale`과 `pad`로 중앙에 배치하는 것이 안전합니다. - 검은색 배경이 신경 쓰인다면, `split` + `boxblur` + `overlay`를 사용해 블러 처리된 배경을 만들 수 있습니다. - UI와 겹칠 경우, `pad`의 y 좌표에서 본편(main content)을 약간 위로 올립니다.
※ 예시로 사용한 클립은 AI가 생성한 것입니다.