동영상 압축 원리? 크기 압축 (여기서 compression은 size reduction)

 

좋아, "동영상 압축"의 원리가 궁금한 거지? 특히 **파일 크기를 줄이는 압축(compression)**에 초점을 둔 질문이네! 🎥➡️📦

 

 

✅ 핵심 요약 먼저!

동영상 압축은 불필요한 데이터를 버리거나 줄여서 저장 용량을 줄이는 기술이야.
주로 영상의 시간적/공간적 중복을 제거하고, 인간의 시각적 특성을 이용해서 압축함.

 

 

📦 동영상은 이렇게 구성됨

  • 💡 동영상 = **수많은 정지 이미지(프레임)**의 연속
  • 보통 초당 30~60장 (fps: frame per second)
  • 사운드 트랙 포함

 

🔍 압축의 두 가지 종류

구분 설명 예시
무손실(Lossless) 정보 손실 없이 원본 복원 가능 ZIP, PNG
손실(Lossy) 일부 정보 버리고 용량 확 줄임 MP4, JPG

🔽 동영상 압축은 대부분 손실 압축이야 (사람 눈은 다 못 알아차리니까!)

 

 

🧠 동영상 압축의 핵심 원리 3가지

1. 공간적 압축 (Spatial Compression)

한 프레임 안에서 비슷한 색상/패턴의 픽셀들을 간단한 방식으로 표현
예: 블럭을 나눠서 같은 색은 하나로 표현 → JPEG 방식과 유사

 

 

2. 시간적 압축 (Temporal Compression)

프레임 간 변화가 없거나 작으면, 차이만 저장
예:

  • 1프레임: 사람 고개 들고 있음
  • 2프레임: 고개만 살짝 돌림
    👉 배경은 그대로니까 고개 움직인 정보만 저장

 

 

3. 지각 기반 압축 (Perceptual Compression)

사람 눈이 못 느끼는 정보는 과감히 버림

  • 예: 고주파수 색상 변화, 너무 빠른 움직임 등

 

 

 

📼 GOP 구조 (Group of Pictures)

  • 압축된 동영상은 일반적으로 이렇게 구성돼:
    • I-frame (Key Frame): 완전한 이미지
    • P-frame (Predicted): 이전 프레임과의 차이만 저장
    • B-frame (Bidirectional): 앞뒤 프레임 둘 다 참고해서 차이만 저장
 
I --- P --- B --- B --- P --- B --- B --- I ... 

💡 I-frame만 모아보면 영상이 엄청 끊겨! 왜냐면 나머지는 '변화'만 저장돼 있으니까.

 

 

🔧 그럼 실제로 압축하면 어떻게 되냐?

  • 원본: 1920x1080 해상도, 30fps, 무압축 → 수십 GB
  • 압축 후 (H.264, MP4 등): 300~800MB (1시간짜리 영상)

🤯 수십~수백 배까지 줄일 수 있음!

 

 

 

✨ 비유로 쉽게 말하자면

  • 원본: 동영상 한 장면을 사진 1000장 찍은 것
  • 압축: 처음 한 장은 제대로 찍고,
    나머지는 “움직임만 적어놓은 노트”로 대체!

 

 

🎥 요즘 동영상 압축 코덱 예시

코덱 특징
H.264 (AVC) 널리 쓰이는 표준 압축, 유튜브, 넷플릭스 등
H.265 (HEVC) H.264보다 더 효율적 (4K 시대)
AV1 오픈소스, 차세대 고효율 압축

 

 

📌 요약 

  • 🎥 동영상 압축은 "변화만 저장 + 비슷한 건 단순화 + 눈에 안 띄면 버려!"
  • 🔁 시간적 + 공간적 + 시각적 중복 제거
  • 📼 I / P / B 프레임 구조로 압축
  • ⚡ 압축 코덱(H.264 등)을 사용해 수십~수백 배 용량 줄이기 가능

커널, 셸, 터미널, 이 셋 은 리눅스/유닉스 계열 시스템을 다루는 데 핵심 개념이야.
많이 헷갈리지만, 이해하고 나면 너도 “아~ 이게 그거였구나” 하고 고개 끄덕일걸 😎
비유 + 정의 + 예시로 깔끔하게 정리해줄게!

 

 

💡 한 줄 요약

용어 한 줄 설명
커널(Kernel) OS의 핵심. 하드웨어와 프로그램 사이 중재자
셸(Shell) 사용자와 커널을 이어주는 인터페이스 (명령어 해석기)
터미널(Terminal) 셸을 사용하는 창, 사용자와 컴퓨터가 대화하는 공간

 

 

🧠 비유로 이해해보기

🏢 컴퓨터를 회사라고 생각해보자

  • 커널: 사장님 – 모든 핵심 결정을 하고, 직원(하드웨어)에게 지시 내림
  • : 비서 – 사용자의 말을 이해해서 사장님(커널)에게 전달해줌
  • 터미널: 전화기 – 너와 비서가 말하는 창구 (말하는 도구)

 

 

📌 각각 자세히 정리

🧠 1. 커널 (Kernel)

  • 운영체제의 중심부(Core)
  • CPU, 메모리, 저장장치, 네트워크 등 하드웨어를 직접 제어
  • 사용자 프로그램이 직접 하드웨어에 접근하지 못하게 하고, 안전하게 중재

예: 리눅스 커널, Windows NT 커널, XNU (macOS)

 

 

 

👨‍💻 2. 셸 (Shell)

  • 사용자가 입력한 명령어를 해석해서 커널에 전달
  • 명령어 인터프리터
  • 여러 종류 있음:
    • bash (가장 보편적인 리눅스 셸)
    • zsh, sh, fish, csh, tcsh 등

예: ls, cd, mkdir → 셸이 해석해서 커널에 요청

 

 

 

💬 3. 터미널 (Terminal)

  • 셸을 사용하기 위한 화면/프로그램
  • 옛날에는 물리적인 "단말기"였고, 요즘은 GUI에서 소프트웨어 터미널 사용
  • ex) GNOME Terminal, iTerm2, Windows Terminal, PuTTY

📟 네가 보는 검정 화면 창! 명령어 입력하는 그 창!

 

 

 

 

💬 예시 흐름

$ ls -l
  • 너가 터미널에 명령어 입력
  • 이 ls -l을 해석
  • 커널에게 "디렉토리 내용 좀 보여줘요~" 요청
  • 커널이 디스크에서 파일 목록 읽어서 셸에 전달
  • 셸이 결과를 터미널에 출력

 

 

✅ 요약 정리표

구성요소 역할 예시
커널 하드웨어 제어, 시스템 자원 관리 리눅스 커널, Windows NT
명령어 해석기, 사용자 ↔ 커널 연결 bash, zsh, sh
터미널 셸을 쓰는 공간, 명령 입력창 GNOME Terminal, iTerm2

https://saurabhshivde.hashnode.dev/day-4-90daysofdevops#heading-what-is-shell

 

커널이란?

 

 

Shell 이란?

셸은 사용자가 운영 체제 서비스를 사용할 수 있는 인터페이스를 제공하는 특수 사용자 프로그램입니다.
셸은 사용자로부터 사람이 읽을 수 있는 명령을 받아 커널이 이해할 수 있는 것으로 변환합니다.
키보드나 파일과 같은 입력 장치에서 읽은 명령을 실행하는 명령 언어 인터프리터입니다.
사용자가 로그인하거나 터미널을 시작하면 셸이 시작됩니다.

 

Linux 쉘 스크립팅이란?

쉘 스크립트는 명령줄 인터프리터인 Linux 쉘에서 실행되도록 설계된 컴퓨터 프로그램입니다.
쉘 스크립트의 다양한 방언은 스크립팅 언어로 간주됩니다.
쉘 스크립트에서 수행하는 일반적인 작업에는 파일 조작, 프로그램 실행 및 텍스트 인쇄가 포함됩니다.

'잡동사니 > 용어 핥아먹기' 카테고리의 다른 글

[하이퍼바이저 | Hypervisor ]  (0) 2025.03.21
[임베디드 시스템]  (0) 2025.02.13
[편익] 비용·편익 분석  (0) 2025.01.28
[긴축] 긴축 사이클  (0) 2025.01.28

✅ 마이그레이션(Migration)이란?

무언가를 "옮기는 것", 특히 데이터, 시스템, 플랫폼, 환경을 다른 곳으로 이동하는 작업이야.

 

 

📦 예를 들어보면?

1. 서버 마이그레이션

  • A 서버에서 B 서버로 웹 서비스 이전
  • 예: 온프레미스 → 클라우드로 이전 (AWS, Azure 등)

 

2. 데이터베이스 마이그레이션

  • MySQL → PostgreSQL로 이전
  • 또는 DB 구조 변경하면서 데이터 옮기기

 

3. OS 마이그레이션

  • Windows 10 → Windows 11
  • Ubuntu 18.04 → 22.04

 

4. 펌웨어 마이그레이션

  • 예전 보드 → 새로운 보드로 코드 이식
  • ARM Cortex-M3 → Cortex-M7 등

 

5. 소프트웨어 마이그레이션

  • Python 2 → Python 3
  • CMake 2.x → 3.x
  • Spring Boot 2.x → 3.x

 

 

🧠 핵심은?

항목 설명
📌 무엇을 데이터, 앱, OS, 플랫폼, 코드 등
🔁 어디서 어디로 구 환경 → 새 환경
🔧 왜 하냐면 성능, 보안, 최신 기술 적용 등
⚠️ 주의사항 호환성, 손실 없는 이전, 테스트 필수

 

 

 

🎯 예시 상황극으로 쉽게!

👩‍💻: "이제 우리 웹사이트 AWS로 이전해야 해."
👨‍🔧: "그럼 서버 마이그레이션 작업 들어가야겠네. DB도 같이 옮겨야겠지?"
👩‍💻: "응, 근데 기존 코드랑 호환 안 되니까 버전 마이그레이션도 필요해!"
👨‍🔧: "테스트 엄청 해야겠구만..."

 

 

💬 말장난처럼 외워도 돼

  • 마이그레이션 = "이사"
  • 이사할 때도 짐 싸고, 옮기고, 다시 정리하잖아?
  • IT에서도 환경 옮기기 + 호환성 맞추기 + 테스트가 핵심이야.

Yocto는 임베디드 리눅스에서 커스텀 리눅스 이미지를 만들 때 거의 표준처럼 쓰이는 도구야.

 

✅ 요약부터: Yocto가 뭐야?

Yocto Project임베디드 리눅스 시스템을 빌드하기 위한 오픈소스 프로젝트야.

 

👉 쉽게 말하면,

  • 내가 원하는 리눅스를 직접 만든다!
  • 보드에 딱 맞는 OS를 만든다!
  • 커널, 루트 파일시스템, 라이브러리, 어플리케이션까지 전부 조립 가능!

 

 

 

💡 왜 Yocto를 써야 해?

일반 리눅스 배포판Yocto
데스크탑/서버용 임베디드용
용량 큼 커스터마이징 가능, 작게
패키지 기반 소스 기반 빌드
우분투/센토스 등 내가 직접 만드는 리눅스

 

🔧 예:
STM32, Raspberry Pi, NXP i.MX 보드 등에 딱 맞는 리눅스 만들고 싶을 때 Yocto 씀.

 

 

📦 Yocto의 구성요소들 (중요)

용어 설명
Poky Yocto의 reference 빌드 시스템 (실제로 Yocto=Poky라고 보면 됨)
BitBake 레시피(요리법)를 읽고 실제로 빌드하는 빌드 도구
Recipe (.bb) 어떻게 소스코드를 빌드할지 정의한 파일
Layer 여러 레시피 묶음 (BSP, 패키지, 앱 등 계층 구조로 관리)
Image 만들어진 최종 루트 파일시스템 이미지
Machine 어떤 보드/하드웨어인지 설정하는 정보 (BSP 설정)

 

 

🔁 Yocto 빌드 과정 흐름


1. yocto 프로젝트 받음 (poky) 
2. 필요한 layer 추가 (meta-xxx) 
3. machine 설정 (어떤 보드용인지) 
4. image 설정 (core-image-minimal 등) 
5. bitbake 실행 → 부트 가능한 이미지 생성 
6. 보드에 다운로드 → 부팅
 

 

👀 실제 사용 예시

 
$ git clone git://git.yoctoproject.org/poky
$ source poky/oe-init-build-env
$ bitbake core-image-minimal

이렇게 하면 최소한의 리눅스 이미지 하나 뚝딱 만들어져.

 

 

🧩 추가로 알아두면 좋은 것

개념 설명
BSP Layer 보드 지원 패키지: 커널, 부트로더 설정 등
meta-layer 패키지, 앱, 기능을 추가하는 계층
sstate-cache 이전 빌드 결과 저장해서 속도 향상
DL_DIR 다운로드된 소스 저장 경로
TMPDIR 빌드 결과물이 저장되는 곳

 

 

🛠 예시 상황극 (쉽게 이해하기)

👨‍🔧: “난 100MB짜리 리눅스 만들고 싶어. WiFi도 되고, 웹서버도 깔고 싶고, 커널은 5.15로.”
👩‍💻: “우분투는 너무 크고 불필요한 게 많잖아.”
🧙: “그럼 Yocto 써! 필요한 것만 넣고 빌드하자!”

 

 

✅ 요약

  • Yocto = 임베디드 리눅스 제조 공장
  • 보드에 딱 맞는 리눅스를 직접 만들 수 있음
  • 개념은 조금 복잡하지만, 자동화/최적화에 강함
  • 임베디드 업계에서는 거의 필수 스킬

좋아, 이거 질문하는 거 보니까 펌웨어 쪽이나 임베디드 작업 중인 것 같은데 맞지? 😉
*.fwdn 파일은 일반적으로 펌웨어 이미지 파일이야. 좀 더 자세히 풀어볼게.

 

 

📌 fwdn 파일이란?

fwdn = Firmware Download의 약자로,
주로 임베디드 시스템에서 장치에 펌웨어를 업로드(다운로드)할 때 쓰이는
펌웨어 이미지 파일이야.

 

✅ 주로 어디서 쓰이냐면:

  • ARM 기반 보드
  • Android 기기 초기 버전
  • 중국산 칩셋(예: Telechips, Rockchip 등) 을 사용하는 기기
  • 셋톱박스, 내비게이션, DVR, IoT 디바이스 등

 

 

📌 어떤 내용이 들어있냐면?

  • 커널 이미지 (zImage, uImage 등)
  • 루트 파일시스템 (rootfs)
  • 부트로더 (U-Boot)
  • 파티션 정보
  • 또는 이걸 하나로 합친 전체 펌웨어 이미지

즉, 기기 전체를 부팅 가능한 상태로 만들 수 있는 정보들이 담겨 있음.

 

 

 

📌 어떻게 쓰이냐면?

  • 전용 다운로드 툴(예: FWDN Tool)을 이용해서
  • 기기를 USB로 연결한 후
  • .fwdn 파일을 플래시 메모리(NAND/NOR)에 굽는 작업을 함

 

 

📌 관련 예시:

🎯 Telechips 기반 디바이스:

  • .fwdn은 Telechips사의 FWDN 툴로 다운로드
  • 부트로더에서 FWDN 모드로 진입 → USB 통해 다운로드
  • 커널/루트FS/리커버리 등 들어있음

 

 

📌 요약 정리

항목 설명
확장자 .fwdn
의미 Firmware Download
포함 내용 부트로더, 커널, 루트FS 등
용도 임베디드 시스템 펌웨어 업로드
사용 툴 전용 다운로드 툴 (ex. FWDN Tool)
관련 플랫폼 Telechips, 일부 Rockchip, 셋톱박스 등

📌 1. "멀티플렉서(Multiplexer)"가 뭐야?

터미널 세션을 "여러 개" 만들고, "한 화면 안에서 전환"할 수 있게 해주는 도구야.

 

✅ 현실 예시:

  • 일반 터미널: 한 창에 하나의 작업만 가능
  • 멀티플렉서 사용: 한 창 안에서 여러 작업 창을 만들어놓고 마치 탭 전환하듯이 왔다 갔다 가능!

 

✅ 기능 요약:

  • 여러 세션을 하나의 터미널에서 운영
  • 세션 유지: 접속이 끊겨도 세션이 죽지 않음
  • 원격 서버 작업할 때 진짜 유용

 

 

📌 2. 그럼 TMUX는 뭐야?

tmux는 Terminal MUltipleXer의 줄임말이야.
가장 널리 쓰이는 터미널 멀티플렉서 중 하나!

 

✅ 특징:

  • 경량, 빠름
  • 세션 관리가 강력함 (attach/detach)
  • 창 분할, 창 전환, 복사 붙여넣기 등 기능 많음
  • 키바인딩이 살짝 복잡할 수 있음 (하지만 커스터마이징 가능)

 

 

📌 3. Screen은 뭐야?

GNU Screen은 tmux보다 먼저 나온 터미널 멀티플렉서야.
기능적으로 비슷한데, 좀 더 구식 스타일이야.

 

✅ 특징:

  • 오랜 역사를 가짐 (90년대부터)
  • tmux보다 다소 무거운 느낌
  • 키 조작법이 다름 (익숙해지기 좀 더 오래 걸림)
  • tmux가 나온 이후로는 다소 인기가 줄었음

 

 

📌 4. 그럼 Byobu는 뭐야?

byobu는 위 두 개의 터미널 멀티플렉서(TMUX, Screen)를 예쁘고 편리하게 감싸주는 래퍼(wrapper)야!

로컬 PC를 종료해도 원격 서버 (빌드 서버)에서 계속 돌아가도록 할 때 사용

 

✅ 하는 일:

  • tmux/screen 중 선택해서 실행함
  • 상태바, 알림, 사용자 친화적 단축키 제공
  • 서버 상태 모니터링, 시간, 네트워크 상태, 배터리 등 보여줌
  • 초보자에게 특히 좋음 (시각화 + 단순한 조작)

 

병풍: 바람을 막거나 무엇을 가리거나 또는 장식용으로 방 안에 치는 물건. 

직사각형으로 짠 나무틀에 종이를 바르고 그림이나 글씨를 붙이기도 하며 소(素)로 꾸미기도 한다. 

두 폭으로부터 짝수로 열두 폭까지 한데 잇따라 접었다 폈다 하게 되어 있다.


https://wordrow.kr/%EC%9E%90%EC%84%B8%ED%95%9C-%EC%9D%98%EB%AF%B8/%EB%B3%91%ED%92%8D/2/#google_vignette

 

 

📌 5. 어떤 걸 써야 할까?

  • ✅ 요즘은 대부분 tmux + byobu 조합 추천!
  • screen은 옛날 시스템에서 호환성 목적 외엔 거의 안 씀
  • byobu 설치하면 내부적으로 tmux나 screen을 고르게 되어 있어 (byobu 실행하면 선택하라고 나오는 이유!)

 

 

📌 요약 정리표

이름 종류 역할 요즘 추세
tmux 멀티플렉서 터미널 여러 개 다중 세션, 강력함 👍 추천
screen 멀티플렉서 예전 스타일의 tmux 같은 도구 ❌ 비추
byobu 래퍼 도구 tmux/screen을 예쁘고 편하게 사용 가능 👍 추천

+ Recent posts