티스토리 뷰
별건 아니지만 요새 유튜브보다는 비메오가 동영상 버퍼링이나 화질이 더 나아서 관심이 더가는데, 파일로 다운로드를 받고 싶어서 이것저것 뒤지다 보니, 웹 상에서 다운로드 받을 수 있는 방법(http://savevideo.me/)도 있었고 또 리눅스 계열에서 쉘스크립트로 다운받을 수 있는 방법(http://ossguy.com/?p=841)도 있었다.
먼저 동영상을 다운받는 순서 및 방법은
- http://www.vimeo.com/moogaloop/load/clip_id:12345678 clip_id 동영상 번호를 입력하면 xml 정보를 읽는다.
- xml 정보에서 request_signature, request_signature_expires 와 is_hd 정보를 가져온다.
- http://www.vimeo.com/moogaloop/play/clip_idx:12345678/request_signature값/request_signature_expires값/?q=hd혹은sd 이렇게 호출하면 동영상 데이터가 흘러나온다.
PHP로도 간단하게 될줄 알았으나, 여러가지 제약들이 있었다.
- 첫번째는 웹호스팅 하는 경우에 url 로 파일을 읽는데 제약이 있다. 이런문제 때문에 curl을 사용해서 읽어들인다.
- 두번째는 vimeo 동영상 조회시 인증시스템에서 쿠키를 사용한다. 당연히 3번 동작시 파일을 받아 올줄 알았지만, 계속 에러 페이지만 나온다. 그래서 의심했던게 세션이나 쿠키를 사용해서 인증하는 과정이 있는 것으로 추정됐다. 브라우저 툴로 확인하려 했지만 잘 안됐고, 구글검색을 해보니, 역시 이것에 대해 알고 있는 사람이 있구나...(http://stackoverflow.com/questions/4460394/how-can-i-find-download-links-for-vimeo-videos) 답변 하단에 소스가 있음.
curl 사용시 가짜쿠키를 만들어서 사용해야 한다. 먼저 쓰기 가능한 디렉토리를 만든다. 그리고 curl로 xml파일 로드시 쿠키관련 세팅을 해둔다.
$ch = curl_init("http://www.vimeo.com/moogaloop/load/clip_id:12345678"); /* 쿠키를 굽고 */ curl_setopt($ch, CURLOPT_COOKIEJAR, $fake_cookie_file); curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $xml_data = curl_exec($ch); curl_close($ch); ... $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $video_link); curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']); /* 데이터 읽기전 쿠키 세팅 */ curl_setopt($ch, CURLOPT_COOKIEFILE, $fake_cookie_file); ...
- 세번째 제약은 웹호스팅 PHP에서 할당하는 메모리 제약때문에 용량이 큰 파일은 다운로드가 중단된다. 이 문제를 해결하기 위해서 메모리에 비디오 데이터를 메모리에 받지 않도록 해야 했다. curl에서 return값을 받지 않고 exec를 하면 바로 화면에 데이터를 쏟아낸다. 이전에 다운로드에서 쓰는 파일 헤더를 찍고 데이터를 쏟아내면 해결된다.
/* 뒤에 숫자가 0 혹은 false면 return value가 없이 화면에 그냥 데이터들이 쏟아진다 */ curl_setopt($ch, CURLOPT_RETURNTRANSFER, 0);
- 네번째는 웹호스팅 트래픽 제약이다. 이건 뭐, 호스팅 트래픽을 늘리던지, 아님 제약이 없는 호스팅(혹은 로컬 웹서버)에서 사용 하면 된다.
- xml 파서하는 법이 여러가지 있는데, simplexml_ 시리즈는 현재 호스팅에서 약간 문제가 있는듯 다시 확인해봐야 할듯.
'New > 개발(코드)' 카테고리의 다른 글
인터넷 개인정보 보안관련 클래식 ASP 구현방안 (0) | 2011.12.29 |
---|---|
CASTLE 설치 중 실수 (0) | 2011.09.05 |
안드로이드 webview를 이용한 간단한 앱 만들기 (0) | 2011.08.16 |
CASTLE 웹방화벽 패턴 추가 2011.07 (0) | 2011.07.20 |
IE6 이하 PNG 문제 수정 (0) | 2011.01.06 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
TAG
- 업데이트
- swfupload
- 게임
- deltaforce
- IE
- css
- 보안
- 노바로직
- 자바스크립트
- 리눅스
- 캐슬
- NODE_PATH
- 모듈 경로
- 설치
- php
- 무툴즈
- mootools
- rwapm
- Repository
- ajax
- kisa
- 버퍼사이즈
- buffer-size
- Style
- epel
- javascript
- castle
- novalogic
- 델타포스
- 버퍼문제
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함