간단하게 youtube 처럼 웹에서 서버에 동영상을 올리고, 서버에서 플래시용 flv 동영상으로 변환해서 유저가 볼 수 있게 하는 서비스를 만들어 봤습니다. 갑자기 재미있을 거 같아서 (jw flv player 랑, ffmpeg 조합이면 충분히 가능해 보여) 시작한 것인데, 혹시 관심을 가지신 분들이 있을 까 해서 정리해봅니다. (현재는 흥미를 잃어서 중단. ^^)

사용자 삽입 이미지

위 스샷이 지금 만들어서 회사 PC에 깔고 팀원 아저씨들 몇 명이 업데이트 하고 있는 페이지 입니다. 이 페이지는 게임 참고 영상을 보기 쉽게 모아보자는 의도로 시작했습니다. (‘웹 상의 동영상을 모아서 웹 상에서 편하게 보고, 분류하자’가 목표.) 아래 흐름으로 만들었습니다.

1. 웹주소를 입력 받아 다운로드를 받는다.
2. flv 로 변환한다.
3. 웹페이지에서 flv 동영상을 볼 수 있다.

당연하지만 자동화가 필요해서 간단하게 다운로드 받고, 변환하는 서버 프로그램을 만들었습니다. 그래서 대략적으로 웹 페이지에서 등록하고 자동으로 변환 되서 웹으로 볼 수 있는 youtube 같은 형태를 갖추게 되었습니다.

만들면서 몇 가지 이슈들 간단하게 정리해봤습니다.

* 웹페이지 작업
- php 로 db에서 리스트 얻고, 업데이트 되는 기능 작성
- 카테고리 작업
- 업로드해서 올리는 기능 작성
- 리스트 추가시 서버에 소켓으로 연결해서 정보를 보내줌
- db 없이 서버를 간단하게 만들기 위해 웹페이지에 기능을 넣음
- mssql과 mysql 작성 (밑에 테스트 페이지가 mysql 이어서 mysql 루틴 추가)
- php와 db는 완전 비 전문가라 기능만 되도록 만듦

* flv 플레이
- youtube, mncast 등의 ucc 사이트들이 사용하는 동영상은 플래시의 flv 포맷
- 플레이어는 JW FLV Player 사용 (참고 : http://www.jeroenwijering.com/?item=JW_FLV_Player)
- 비 상업적인 목적은 공짜
- 당연하지만 플레이가 매우 잘 됨
- 시작 전에 jpeg로 타이틀 이미지를 붙일 수 있음
- 완전 문외한이라 그냥 가져다 쓰기만 함

* 서버
- ini 에서 설정파일 읽기
- 간단한 콘솔 프로젝트

* 서버 멀티 쓰레딩 구성
- 작업 쓰레드에서는 작업 큐에 있는 url을 '다운로드->변환'의 작업 (idle에는 우아하게 블럭시키기)
- listen 쓰레드에서는 웹서버에서 보내준 정보를 큐에 넣기
- 가볍게 select 사용
- 종료시 우아하게 종료 (웹 통해서 종료 메세지 보냄)

* 웹주소를 받아서 다운로드 받기
- InternetOpen, InternetReadFile 등을 이용해서 다운 로드 받음

* 동영상 파일을 flv 변환
- 킹왕짱 ffmpeg 프로젝트 활용 (참고: http://ffmpeg.mplayerhq.hu )
- 윈도우에서 빌드해서 서버에 붙이려고 했으나, 재미로 하기엔 빌드가 큰 일이라 win32로 빌드된 ffmpeg 를 실행하는 것으로 대체 (참고: http://arrozcru.no-ip.org/ffmpeg_builds )
- ffmpeg 에서 동영상을 flv로 잘 변환해줌 (지원 코덱이 굉장히 많음 good!!!)
- 서버 루틴에 이미지 프로세싱은 전혀 없음 (이미지 크기, 플레이타임 등은 ffmpeg 실행해서 얻음)
- jpg 시퀀스로 뽑는 기능도 있어서 중간 정도의 이미지로 스냅샷
- ffmpeg가 일부 파일에 대해서 변환 끝내고 종료안하는 버그가 있음 (이 경우 속상하게도 그 쓰레드는 계속 대기 상태가 되어버림.)

원래는 스텝 별로 자세히 정리를 해보려고 했지만 생략하고 소스를 몽땅 올립니다. 관심 있는 분들은 참고하세요. (더 이상 진행을 안 할 거 같아서 업데이트는 없을 거 같습니다. ^^)

테스트 사이트 :http://www.digibath.com/tinycine/tinycine.php?q=low (집 PC로 운영하는 거라서 서비스는 언제 중단될지 모릅니다. ㅎㅎ 참고로 db 초기화등의 일부 기능은 제거된 버전입니다. 간단하게 테스트 해보셔도 됩니다. youtube처럼 파일 올려서 변환하는 건 웹서버가 분리되어 있어서 안되는 관계로 disable.)

소스 : cine_php.zip (php소스), cine_code.zip (서버소스)
테스트 실행파일 : cine_bin.zip, cine_bin_ffmpeg.zip : 실행파일. 파일이 커서 나눔

ps. flv 가 별도의 코덱이 필요없이 플래시에서 볼 수 있어서 좋긴 하네요. ( tig 같은 사이트는 못보는 영상도 종종 있고... flv 가 최고 성능은 아니지만 어디서나 볼 수 있어 좋아보입니다.)

참고 :
- FFmpeg on Windows
- FFMpeg 윈도우에서 컴파일 방법
- [Media] FFmpeg
- ffmpeg 설치
- FFmpeg Documentation
- FFmpeg Windows Help
- FFmpeg usage command
- 내 홈페이지에 FLV플레이어를 달아보자.
- JW FLV PLAYER 3.11

댓글을 달아 주세요

  1. espanol yahoo 2007/10/17 23:38  댓글주소  수정/삭제  댓글쓰기

    우수한과 아주 도움이 되는!

  2. brooklyn high jay z 2007/10/18 07:49  댓글주소  수정/삭제  댓글쓰기

    중대하고 유용한 위치!

  3. wolfan 2008/01/07 16:57  댓글주소  수정/삭제  댓글쓰기

    좋은 잘보았습니다. 참고많이 됐습니다.

  4. football geaux lsu tiger 2008/03/13 05:50  댓글주소  수정/삭제  댓글쓰기

    그런 경이롭 위치를 위해 많게의 감사!

  5. old woman porn movie 2008/03/13 06:43  댓글주소  수정/삭제  댓글쓰기

    너는 차가운 위치를 만들었다!

  6. brittany morgan naked 2008/03/13 07:27  댓글주소  수정/삭제  댓글쓰기

    위치에 중대한 일은 그것을 좋아했다!

  7. black girl hogtied 2008/03/13 08:17  댓글주소  수정/삭제  댓글쓰기

    여보세요, 아주 좋은 위치!

  8. platinum xxx password 2008/03/14 03:12  댓글주소  수정/삭제  댓글쓰기

    좋은 위치는 그것 찾아본 즐겼다!

  9. cleaning anal gland 2008/03/14 04:06  댓글주소  수정/삭제  댓글쓰기

    우수한 일! 감사!

  10. facial teen video 2008/03/14 04:54  댓글주소  수정/삭제  댓글쓰기

    친구는 너의 위치의 현재 팬이 되었다!