티스토리 뷰
반응형
영상을 스크롤하면서 볼 수 있는 뷰어를 만드는데, 영상을 스크롤 할 때마다 렉이 걸린다. 재생은 잘 되는데. 왜 그러는걸까?
영상을 인코딩 할 때는 GOP라는 압축 기법이 들어간다. 이 기법은 영상이 정상 프레임 + 예측 프레임들로 채워진다
이 압축 기법을 사용하면 사진의 아래처럼 예측을 하여 영상이 만들어진다. 일반적인 영상 재생에서는 이 예측이 재생 시간안에 이루어진다. 하지만 스크롤링 같은 경우는 매우 빠르게 흘러가기때문에 이러한 예측 압축을 다시 풀 시간이 없다.
이를 해결하기 위해서는 예측 프레임을 없애줌으로써, 정상 프레임인 I 프레임으로만 이루어진 영상을 만들어 사진의 위처럼 압축 없이 인코딩한다.
하지만 압축이 없어지기 때문에 약간의 크기 증가는 감안해야한다.
ffmpeg -i 영상.mp4 -c:v libx264 -crf 28 -intra 결과.mp4
설명:
- -i 영상.mp4: 입력으로 영상.mp4를 사용한다
- -c:v libx264: libx264라는 인코더를 사용한다
- -crf 28: 화질 수치. Constant Rate Factor의 줄임말로 영상의 화질을 결정한다. 낮을수록 좋다. 화질을 체크하면서 인코딩을 시도해보자
- -intra: I Frame만 사용한다.
- 결과.mp4: 출력 파일명
위와 같이 인코딩하면 파일 크기는 조금 늘지만 빨리 스크롤해도 렉 걸리지 않는 영상을 만들 수 있다 :)
추가적으로 -crf 옵션 없이 -b:v 옵션으로 직접 비트레이트를 지정할 수 있다. 비트레이트나 영상 관련해서 잘 안다면 이 파라미터를 사용해도 좋다
반응형
'개발 > TIL' 카테고리의 다른 글
자바스크립트에서 Date 객체를 생성하면 하루 전인 날짜가 나오는 이유 (0) | 2023.01.20 |
---|---|
backdrop-filter가 사파리에서 작동 안해요!! (0) | 2022.09.18 |
Node.js의 대체자? Bun을 알아보자 (0) | 2022.07.27 |
CSS로 폰트 안티앨리어싱 넣기 (0) | 2022.05.25 |
Vite에서 HTML Injecting 하는 법 (0) | 2022.04.11 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- ytdlp
- backdrop
- 4kdownload
- 프론트엔드
- 브라우저
- decompyle3
- e2e
- date-fns
- 사파리
- SCE-TTS
- pyinstaller
- CSS
- yt-dlp
- vite
- moment.js
- 웹킷
- vuex
- Bun.js
- BFrame
- font-smooth
- Nuxt 3
- vue
- nuxt.js
- Safari
- uncompyle6
- vitejs
- pinia
- useFetch
- NUXT
- DENO
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
글 보관함