텔레그램으로 영상을 보낼 때 Media exceeds 16MB limit가 뜨면, 영상이 고장난 게 아니라 전송 경로의 파일 크기 제한에 걸린 경우가 많습니다. 이때 핵심은 인코딩을 다시 만들기보다, 해상도와 비트레이트를 빠르게 낮춰 **전송용 파일(16MB 이하)**을 별도로 만드는 것입니다.

안내: 이 문서는 생성형 AI를 활용해 초안을 작성했고, 공식 문서와 실제 운영 로그를 기준으로 검토·보정했습니다.

flowchart LR
A[전송 실패: 16MB 초과] --> B[원본 유지]
B --> C[전송용 파일 별도 압축]
C --> D[ffprobe로 크기 확인]
D --> E[재전송]

🧠 칠판 치트시트

  • 원본은 건드리지 않는다
  • 전송용 MP4를 별도 생성한다
  • 1차 실패 시 비디오 비트레이트만 한 단계 더 낮춘다

증상 확인

대표 오류:

Media exceeds 16MB limit

먼저 원본 크기부터 확인합니다.

ffprobe -v error -show_entries format=duration,size \
  -of default=noprint_wrappers=1 ./final.mp4

10분 복구 루틴

1) 전송용 파일 만들기 (권장 기본값)

ffmpeg -y -i ./final.mp4 \
  -vf "scale=960:-2" \
  -c:v libx264 -preset veryfast \
  -b:v 640k -maxrate 700k -bufsize 1400k \
  -c:a aac -b:a 80k \
  -movflags +faststart \
  ./final_telegram_16mb.mp4

2) 결과 크기 확인

ffprobe -v error -show_entries format=size,duration,bit_rate \
  -of default=noprint_wrappers=1 ./final_telegram_16mb.mp4

3) 여전히 초과하면 2차 압축

ffmpeg -y -i ./final.mp4 \
  -vf "scale=854:-2" \
  -c:v libx264 -preset veryfast \
  -b:v 500k -maxrate 560k -bufsize 1120k \
  -c:a aac -b:a 64k \
  -movflags +faststart \
  ./final_telegram_16mb_v2.mp4

실전 사례

사례 A (성공)

34MB 원본은 전송 실패, 위 기본값으로 만든 전송용 파일은 8~9MB로 줄어 즉시 전송 성공.

사례 B (실패 후 복구)

길이가 긴 영상에서 1차 압축 후에도 16MB를 넘음. 해상도/비트레이트를 한 단계 더 낮춘 2차 압축으로 전송 성공.

운영 팁

  • 원본(final.mp4)은 아카이브/업로드용으로 유지
  • 전송용 파일은 _telegram_16mb 접미사로 분리
  • 자동화 파이프라인이면 “전송 실패 시 압축본 재시도” 루틴을 넣으면 반복 작업이 줄어듭니다

다음 읽기