Skip to content

se-zero/ascii-video-player

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🎞️ ASCII Video Player - 터미널 기반 비디오 재생기

📌 프로젝트 소개

이 프로젝트는 일반 비디오를 ASCII 문자 형태로 변환하여 터미널에서 실시간 재생하는 Python 프로그램입니다.
흑백/컬러 모드를 자유롭게 전환할 수 있고, 해상도 조절, 텍스트 저장, ASCII 기반 영상 녹화 기능까지 지원합니다.

💡 영상은 저작권 없는 무료 영상 사이트 Pexels에서 다운로드하였습니다.


🧠 작동 원리

이 프로그램은 비디오를 실시간으로 프레임 단위로 분석하고, 각 픽셀의 밝기나 색상 값을 기반으로 ASCII 문자로 변환하여 터미널에 출력합니다.

1. 프레임 추출

OpenCV를 사용하여 비디오를 프레임 단위로 읽어옵니다.

2. 프레임 리사이즈

터미널에 적절한 해상도로 보이도록 프레임 크기를 조정합니다. (가로 너비 기준, 세로는 비율 보정)

resized = cv2.resize(frame, (width, height))

3. ASCII 문자 매핑

  • 흑백 모드: 픽셀의 밝기(gray scale intensity)를 계산하고, 정해둔 문자 세트에서 어두운 픽셀은 @, 밝은 픽셀은 . 등으로 매핑합니다.
  • 컬러 모드: 색상(RGB)은 유지하되, 밝기를 기준으로 문자 선택 → ANSI 컬러 코드를 적용하여 컬러 출력합니다.
# 밝기에 따라 문자 선택
brightness = int((r + g + b) / 3)
char = ASCII_CHARS[brightness * len(ASCII_CHARS) // 256]

# ANSI 컬러로 출력
f"\033[38;2;{r};{g};{b}m{char}\033[0m"

4. 터미널 출력 & 녹화 저장

  • 터미널에는 실시간으로 ASCII 프레임이 출력됩니다.
  • v 키를 누르면 현재 프레임들을 .png로 저장하여 .avi 영상으로 저장할 수 있습니다.

🎛️ 키보드 조작

키 입력 기능 설명
c 컬러 모드 <-> 흑백 모드 전환
- ASCII 해상도 감소 (녹화 중일 때 제한)
+ ASCII 해상도 증가 (녹화 중일 때 제한)
s 현재 ASCII 프레임을 .txt 파일로 저장
v 영상 녹화 시작/종료
q 프로그램 종료

⚠️ 주의:
OpenCV는 키보드 입력을 활성화된 창(focused window)에서만 인식합니다.
이 프로그램은 cv2.imshow("dummy", frame[0:1, 0:1])으로 아주 작은 더미 창을 띄우며,
반드시 해당 창을 클릭해 선택한 상태여야 키 입력이 정상 동작합니다.

다른 프로그램이나 터미널 창을 클릭했다면, 다시 더미 창을 클릭하세요!


🎬 Demo

실행 화면 (터미널 실시간 출력)

Terminal Demo

녹화된 영상 예시

  • 흑백 모드 Grayscale Demo
  • 컬러 모드 Color Demo

📝 주요 특징

  • ASCII 기반 실시간 비디오 재생 (터미널 출력)
  • 흑백 / 컬러 모드 전환 가능
  • 영상 녹화 기능 (recording/ 폴더에 저장)
  • 단일 프레임 .txt 저장 (text/ 폴더에 저장)
  • 해상도 조정 기능
  • Windows 터미널, Git Bash, VSCode 등에서 실행 가능

🔖 참고

About

ascii-video-player Using openCV

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages