사용자 도구

사이트 도구


project:alternativeradiorecorer

차이

문서의 선택한 두 판 사이의 차이를 보여줍니다.

차이 보기로 링크

양쪽 이전 판이전 판
다음 판
이전 판
project:alternativeradiorecorer [2016/11/19 16:29] changwooproject:alternativeradiorecorer [2016/11/19 17:14] (현재) – [패키지 설치] changwoo
줄 5: 줄 5:
  
 예를 들어 [[http://www.ebs.co.kr/onair?channelCodeString=iradio| EBS 외국어 라디오]] 채널 페이지를 보면, 플레이어가 플래시로 되어 있어 URL을 단박에 알기는 어렵습니다(사실, 이것도 이미 주소가 다 알려져 있어서 검색하면 다 나오지만, 추출하기 어려운 상황이라고 가정하도록 하죠). 이럴 때는 URL을 알아내기 위해 애를 쓰는 것보다 아예 웹브라우저를 통째로 활용해 녹음을 진행해 볼 수도 있습니다. 본 문서에는 아예 웹브라우저를 활용해 음원을 녹음하는 방식을 기록해 봅니다. 예를 들어 [[http://www.ebs.co.kr/onair?channelCodeString=iradio| EBS 외국어 라디오]] 채널 페이지를 보면, 플레이어가 플래시로 되어 있어 URL을 단박에 알기는 어렵습니다(사실, 이것도 이미 주소가 다 알려져 있어서 검색하면 다 나오지만, 추출하기 어려운 상황이라고 가정하도록 하죠). 이럴 때는 URL을 알아내기 위해 애를 쓰는 것보다 아예 웹브라우저를 통째로 활용해 녹음을 진행해 볼 수도 있습니다. 본 문서에는 아예 웹브라우저를 활용해 음원을 녹음하는 방식을 기록해 봅니다.
 +
 +===== 시나리오 =====
 +어떤 사이트에서 제공하는 오디오를 녹음하려고 합니다. 그런데 안타깝게도 이 주소를 파악하기가 쉽지 않다고 합니다. 음원을 재생하는 모듈이 어떤 바이너리(이를테면, 플래시)로 되어 있어 그 음원의 주소가 가려져 있습니다. 예를 들면 EBS 외국어 라디오를 들 수 있습니다.
 +
 +이런 음원의 주소를 추출하려고 애쓰기 보다는, 아예 [[http://docs.seleniumhq.org/|셀레늄]]과 [[https://sites.google.com/a/chromium.org/chromedriver/|구글 크롬 드라이버]]를 이용해 브라우저를 운용해서 음원 추출을 시도합니다. 브라우저에서 재생되는 음원은 어떻게든 그 시스템의 오디오를 이용할 것입니다. 해당 오디오에서 흘러가는 스트림을 저장할 수만 있다면, PC에서 재생되는 모든 소리를 별도로 저장할 수 있게 됩니다. 또 셀레늄과 크롬 드라이버는 내가 원하는 대로 웹브라우저를 제어할 것입니다. Profit!
 +
 +===== 준비물 =====
 +실행 중인 리눅스 기반 헤드리스 서버가 있어야 합니다(물론 데스크탑도 무방합니다). 저는 우분투를 기준으로 설명합니다.  셀레늄 코드는 파이썬으로 작성하며 3.x 버전을 기준입니다. 물론 [[https://virtualenv.pypa.io/en/stable/|virtualenv]] 환경을 적극 권장합니다.
 +===== 과정 =====
 +
 +==== 패키지 설치 ====
 +아래 목록은 시스템에 설치될 패키지들입니다.
 +  * pulseaudio
 +  * pulseaudio-utils
 +  * chromium-browser
 +  * adobe-flashplugin  
 +  * xvfb
 +  * libgconf-2-*
 +
 +아래 목록은 별도로 다운로드 받기를 권장합니다.
 +  * chromedriver
 +
 +아래 목록은 pip를 통해 다운로드 받습니다.
 +  * selenium
 +  * pyvirtualdisplay
 +
 +브라우저는 물론 파이어폭스를 이용할 수도 있습니다. 그러나 제가 문서를 작성하는 시점에서 파이어폭스 드라이버는 동작에 필요한 일부 기능이 제대로 동작하지 않는 문제가 있었습니다. 이러한 문제는 차후 고쳐질 수 있으니 사용시 문제가 없다면 변경해도 무방합니다.
 +
 +크롬 드라이버는 우분투 저장소의 것보다는 [[https://sites.google.com/a/chromium.org/chromedriver/downloads|링크]]의 최신 버전을 다운로드 받는 것이 더 좋습니다. 마찬가지로 저장소 버전은 일부 기능이 동작하지 않는 문제가 있었습니다. 
 +
 +==== PulseAudio 세팅 ====
 +
 +==== 음원 녹음 테스트 ====
 +
 +==== 무음 구간 스킵 ====
 +
 +==== 셀레늄 스크립트 ====
 +
 +===== 마치며 =====
 +
 +사실 열심히 생각해서 구현하고 보니 EBS 외국어 라디오 채널의 URL이 버젓이 공개되어 있어 조금 허탈했습니다. 역시 세상에는 저보다 뛰어나신 분들이 많아요. :-)
 +
 +그치만 이 방법은 이론상 웬만한 웹사이트의 음원을 거의 다 녹음 가능한 방법입니다. 게다가 사운드 시스템에서 흘러가는 디지털 스트림을 리다이렉션해서 저장하는 거라 라인 인/아웃 방법의 녹음과는 다르게 음질의 열화도 거의 일어나지 않습니다. 인코딩시 발생하는 열화 외에는 말이죠.
 +
 +사실 이런 원리는 여러분들이 흔히 사용하는 녹음기와 다를 바 없습니다. 또 셀레늄을 이용한 웹브라우저 자동화는 소프트웨어 개발 테스트 때 많이 사용됩니다. 사람이 일일이 하기 힘든 소프트웨어의 테스트를 빠르고 정확하게 대신하기 위해 사용됩니다. 예를 들면, UI 중 어떤 버튼을 눌렀을 때 기대한 대로의 반응이 나오는가 나오지 않는가, 어떤 링크를 클릭했을 때 올바르게 페이지가 넘어가는가, 또 어떤 페이지는 이러저러한 내용을 제대로 표시하는가, 이런 지루한 것들 말이죠.
 +
 +이 둘을 서로 합쳐 보면 요런 것도 나올 수 있구나 하는 게 재미있어 한 번 만들어 봤습니다. [[project:unattendedradiorecorder | 무인 라디오 녹음기 만들기]] 문서 때와 마찬가지로 녹음된 콘텐츠는 부디 개인적인 용도로만 활용해 주십시오.
 +
  
  
project/alternativeradiorecorer.1479572976.txt.gz · 마지막으로 수정됨: 2016/11/19 16:29 저자 changwoo

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki