Skip to content

Instantly share code, notes, and snippets.

@Bananamilk452
Last active May 28, 2024 04:12
Show Gist options
  • Save Bananamilk452/25a6c0a69faf7266443cad7dbcfa874c to your computer and use it in GitHub Desktop.
Save Bananamilk452/25a6c0a69faf7266443cad7dbcfa874c to your computer and use it in GitHub Desktop.
웹에 맞게 영상 최적화 하는 법

이런! 영상을 넣어달라고 요청을 받았는데, 전달받은 영상이 150MB에요! 이걸 그대로 넣을 순 없겠죠? image

1. Handbrake 인코더 다운로드

범용적인 영상 인코더 Handbrake 다운로드.

HandBrake: Downloads

2. 세팅, 해상도 맞추는 법

일단 원본 파일을 열어주세요!

2.1 웹 최적화 켜기

메타데이터를 전부 앞으로 옮겨서 전체를 다운받지 않아도 재생이 가능하게 합니다.

image

2.2 오디오 채널 삭제

어차피 muted 상태로 재생할 건데, 지우면 용량도 더 작아집니다. 파일 내용 지우기를 눌러주세요!

image

2.3 해상도 조절 (여기까지는 필수)

예를 들어, 우리 사이트는 최대 너비가 500px인데, 굳이 너비 1920px의 영상을 넣을 필요가 없겠죠?

해상도 제한: 없음, 아나모픽: None, Optimal Size: 체크 해제해줍니다.

image

그 후에 자동을 체크 해제하고, 원하는 너비를 입력하고 다시 자동을 체크해주면 종횡비에 맞게 해상도를 지정해줍니다.

image

여기까지 세팅한 후, 인코딩을 해봅시다.

2.4 화질 조절 (그대로 크기가 여전하다면)

크기가 20MB까지 줄었습니다! 그래도 웹에서 쓰기는 좀 그렇죠. 그럴때는 임의로 화질을 내려서 인코딩해봅시다.

비디오 에서 해당 값을 올릴 수록 화질이 내려갑니다. 크기와 화질을 동시에 만족하는 타협점을 찾아서 계속 인코딩해보세요!

image

2.5 VP9, AV1도 끼워주세요

VP9은 구글의 고효율 비디오 코덱입니다. MP4보다 압축률이 좋고, 지원도 빠방합니다. 정말 가끔가다가, 상업 라이센스를 다 빼버려서 MP4를 지원 안하는 브라우저에 넣기도 좋고요.

전세계 지원 97% 이상입니다!

image

AV1은 VP9보다는 지원이 적지만, 더 고효율의 코덱입니다.

작업은 간단합니다. 아까 작업한 것과 똑같이 세팅하고 형식을 WebM으로 바꾸어줍니다. image

VP9은 29~31, AV1은 30~32정도가 적당합니다. image

3. 로딩 중에 표시할 썸네일까지

이대로 넣는다면 로딩 중에는 아무것도 보이지 않습니다. 로딩 중에 썸네일도 보여줘야겠죠?

ffmpeg -i <input> -vf "select=eq(n\,0)" -vframes 1 out.webp

0번째 프레임을 webp로 저장하는 커맨드입니다.

4. 코딩

  <video
    autoplay
    loop
    muted
    playsinline
    preload="auto"
    poster="/thumbnail.webp"
  >
    <source src="/video.webm" type="video/webm" />
    <source src="/video.mp4" type="video/mp4" />
  </video>

영상이 로딩 중일 때는 thumbnail.webp를 표시하고, 지원하는 영상 타입을 찾으면 그 영상을 로딩합니다. (순서대로 우선권이 부여됩니다)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment