YouTube라는 동영상 플랫폼이 있음에도 웹을 통해 동영상을 관리하고 재생하는 프로그램을 찾거나 만든다는 건 특별한 목적이 있는 경우가 대부분일 것 같다.
내 경우도 업무 활용 차 회사 제품 데모 영상을 관리하고자 흔해 빠진 YouTube 등을 이용하지 않고 나만의 플랫폼으로 제공하기 위해 만들었다.
참고로 회사를 위해 제작한 것이 아닌 내가 사용하기 위해 주말에 틈틈이 만든 것이라 프로그램 소스의 저작권은 내게 있고 운영도 내 서버에서 하고 있다.
Flask는 Python기반의 웹 프레임워크로, 웹 애플리케이션을 쉽고 빠르게 개발할 수 도록 도와주는 역할을 한다.
이런 Flask로 여러 웹 프로그램을 만들어 왔었다.
대부분 업무 활용 용도의 프로그램이며, 이를 만들면서 느낀 점이라면 이런 단발성 프로젝트엔 아주 적합하다는 생각이 들기 시작했다. 이건 내가 자주 사용하며 익숙해져가고 있기에 그럴 수도 있겠지만 문학 장르로 따지자면 단편소설에 딱 어울리는 플랫폼으로 느껴진다.
이런 Flask를 통해 만들어 본 웹 프로그램으로는 아래와 같다.
- 엑셀 문서 SQLite DB변환
- SQLite DB를 활용한 제품 업체별 출고 현황
- 웹 스토리지 운영을 위한 파일 관리 프로그램
- 동영상 관리 게시판
Flask로 웹프로그램을 개발한 후 이를 웹서비스 하려 면 아래와 같은 형태로 서비스할 수 있다.
개인적이지만 코드 작성 시 라우팅 개념이 처음 접했을 때 혼선이 있었기에 이 개념을 잡는 게 중요하지 않을까 생각된다.
PHP처럼 웹서비스 루트에 폴더 구분하고 링크 구조로 파일만 넣으면 끝나는 것이 아닌 각 파일들의 연결 고리 역할을 하는 라우팅 개념의 python파일을 만들어야 하는 기본 개념이 필요하다.
위 소스코드는 본 동영상 프로그램의 routes.py라는 코드의 일부이다. 즉, 각 역할을 하는 파일들에 대한 라우팅 역할을 python코드로 작성한 모습이다.
아래는 본 동영상 게시판의 기본 구조이다.
.
├── pycache
│ └── wsgi.cpython-310.pyc
├── app
│ ├── init.py
│ ├── pycache
│ ├── routes.py
│ ├── utils.py
│ └── videos.json
├── requiremnets.txt
├── run.py
├── static
│ ├── css
│ ├── images
│ ├── javascript
│ ├── thumbnails
│ └── videos
├── templates
│ ├── admin.html
│ ├── list.html
│ ├── sviewer.html
│ └── viewer.html
├── voka
│ ├── bin
│ ├── include
│ ├── lib
│ ├── lib64 -> lib
│ └── pyvenv.cfg
├── voka.sock
└── wsgi.py
복잡해 보이지만 pycache/ python캐시로 자동 생성되는 폴더이고, voka/는 가상환경 폴더이다.
실제 작업해야 할 파일은 위 두 폴더 이외의 것들이라 보면 된다.
웹 페이지는 크게 3가지 형태로 나뉜다.
썸네일 뷰어
기본 썸네일 형태의 게시판 스타일이다.
썸네일 이미지를 클릭하면 창이 뜨고 아래와 같이 영상이 재생된다. 이때 하단에 영상 설명 문구도 함께 보여준다.
동영상 관리 페이지
동영상 업로드와 제목, 재생 중 영상 설명과 각 영상의 순서를 변경할 수 있다.
또한 영상의 썸네일을 자동 생성하여 썸네일 뷰어 접속 시 로딩 속도를 개선하고 있다.
공유 뷰어
공유 뷰어는 관리자가 특정 영상만 누군가에게 공유하고 싶을 때 해당 영상의 링크를 생성하는 기능을 가지고 있다.
위 공유 기능을 통해 생성된 URL이다.
https://vtoon.net/voka/viewer?video=0AXbuEDM
접속 하면 위와 같이 해당 영상만 재생할 수 있게 제공된다.
차별성
본 동영상 게시판의 정식 명칭은 ‘VTOON Player’이다.
워드프레스와 함께 운영하고 있어서 관련 플러그인을 찾아 보았는데 ‘All-in-One Video Gallery’라는 플러그인이 비슷한 스타일이였지만 내가 원하는 기능을 100% 충족 시키지 못했다.
그래도, 워드프레스 기반이라 기본 기능은 충실한건 확실히다.
다만, 페이지 이동 없이 영상 보기, 모바일 최적화, 특정 영상만 공유하는 기능 등은 결국 동영상 게시판인 VTOON Plaer를 만들게 되었다.
지금 이 글을 올리는 vtoon.net에 한 카테고리로 등록되어 있다.
내가 운영하는 YouTube채널에 브롬톤 영상만 골라 올려보았다. 영상 갯수가 많으면 페이지 구분이나 검색도 넣을텐데 아직은 한정된 영상으로 활용할 목적으로 만들었기에 추가 기능은 넣지 않았다.
추가로 현재 ‘라즈베리파이 제로 2W’를 이용한 웹서버 활용 방안을 정리 중이다. 상당히 저 사양이지만 불특정 다수가 아닌 한정된 목적의 사용이라면 충분히 이 프로그램도 구동이 가능하고 영상도 끊김없이 재생되는 것을 확인했다.
조만간 라즈베리파이 제로 프로젝트도 별도로 소개해보도록 하겠다.
시작은 업무 활용이었지만, 얼마전 부서 이동으로 업무 활용 보다는 이젠 개인 활용으로 전환되었다. 덕분에 예전 영상들을 둘러보며 그 감회에 잠시 빠져 보았다.
주말이면 병점에서 평택대교까지 마실라이딩도 다니고, 한강도 콧바람 쐐러 다닐 때가 엊그제 같은데 벌써 2년이나 지나버렸다.
아무튼!
이 포스팅이 기본 소개와 함께 코드 소개도 함께 했으면 좋았겠지만, 근래 부서이동으로 공사가 다망하니 소개와 활용 수준으로 마무리한다! 끄읏~
참 굴곡진 인생이야…. ㅡ,.ㅡa