DLNA/UPnP?

MPD기반의 네트워크 플레이어를 사용해 보았다면, 음원 폴더를 공유하고, 권한 설정하고, 네트워크 플레이어(Alix)에 등록(마운트)하는 까다로운 절차를 경험했을 겁니다. 이런 어려운 절차는 사용자에게 음악 감상을 위해 네트워크 공부까지 해야 하는 부담감을 주었으며, 편리하며 음질까지 좋은 네트워크 플레이어 구축을 포기하게 만드는 주 원인이었습니다.

이런 문제를 해결하기 위해, 네트워크 지식이 전혀 없는 사용자도 네트워크를 통해 음악감상, 영화, 사진보기 등이 가능하게 하기위해 개발된 기술이 DLNA(Digital Living Networking Alliance) 입니다.

네트워크나 컴퓨터에 대한 지식이 없어도, 내 컴퓨터에 저장된 미디어 파일을 다른 기기(뮤직 플레이어, TV, 스마트폰 등)에서도 플레이 하거나 볼 수 있게 해주는 기술입니다. 다시 말하자면, 컴퓨터의 미디어 파일을 공유하고, 플레이 할 각 기기에서 그 공유된 미디어 파일의 폴더를 등록하는 이런 어려운 절차 없이도 네트워크 플레이를 가능하게 해주는 기술입니다.



이해를 돕기 위해 먼저 MPD 시스템으로 기존 네트워크 플레이어의 개념을 설명해 보겠습니다.

MPD 프로그램이 실행 중인 알릭스(Alix)가 있고, 음원 파일이 저장된 컴퓨터, 그리고 리모컨 기능을 하는 스마트폰이 있습니다. 알릭스로 음악을 들으려면, 컴퓨터에서 음원 폴더를 공유설정하고, 그 폴더를 Alix에 등록(마운트)합니다.

사용자가 스마트폰에 설치된 MPD Client 프로그램에서 알릭스에게 곡 연주를 지시하면, 알릭스는 그 등록된 음원 폴더에서 그 곡의 음원 파일을 그대로 가져와 연주를 시작합니다.

이때 그 음원 파일을 디코딩하여 DAC가 인식 할 수 있는 PCM 상태로 변환하는 일은 당연 알릭스에 실행 중인 MPD 프로그램이 담당 합니다. 또한 음원 폴더에 음원이 추가되면 음원 정보 데이타베이스(DB) 갱신도 MPD 프로그램 담당입니다. DB를 만들거나 관리하는 것도 MPD 프로그램의 몫인 겁니다. 이렇듯 전반적으로 MPD라는 프로그램에 의존하는 시스템입니다.



위에 설명한 MPD 시스템과 비교하여, DLNA 방식의 경우를 설명해 보겠습니다.

필요한 장비들은 MPD나 DLNA나 비슷합니다. 알릭스, 음원 파일이 저장된 컴퓨터, 그리고 스마트폰이 필요 합니다. (경우에 따라 스마트폰은 없어도 됩니다.)


[DMS]
MPD와 다른 것은 음원이 저장된 컴퓨터에 DLNA Media Server(DMS) 라는 프로그램이 설치, 실행되고 있다는 것입니다.

MPD 시스템은 알릭스에 실행 중인 MPD라는 프로그램에 전반적으로 의존하지만, DLNA 환경에서는 음원 컴퓨터에 설치된 이 DLNA Media Server의 역할이 가장 중요합니다.

음원 DB를 만들고 관리하고, 네트워크에 있는 다른 기기들에게 자신이 미디어 파일을 가지고 있다고 알리며, 실제로 음악 플레이도 이 DMS가 하게 됩니다.

PC에 사용되는 Foobar2000이나 JRiver등이 DLNA Media Server의 기능을 수행합니다. 요즘은 NAS에도 DMS 기능이 내장되어 있는 경우가 많이 있습니다.


[DMC]
DLNA Media Server를 제어해주는 리모컨의 역할을 하는 프로그램이 DLNA Media Controller(DMC) 입니다.

DLNA Media Controller는 DLNA Media Server에게 곡을 플레이 하라고 지시하고, 플레이 출력물인 스트림을 어디로 보내야 하는지를 지시합니다. 그 스트림을 DMS 자체의 사운드카드로 바로 보낼 수도 있고, 네트워크 상의 다른 기기로 보내 수도 있습니다.

DMC 프로그램을 설치하면 스마트폰, 태블릿 PC, 노트북, 데스크탑 PC등을 리모컨으로 사용할 수 있습니다.

iPhone, iPad에서는 LINN Kinsky,
안드로이드 폰에서는 BubbleUPnP,
PC에서는 foobar2000 또는 JRiver,
또 XBMC등이 대표적인 DMC입니다. 이외에도 상당히 많은 프로그램들이 있습니다.


[DMR]
네트워크 상에서 DLNA Media Server로부터 날아오는 스트림을 받아주는 역할을 하는 기기를 DLNA Media Renderer(DMR) 이라 합니다.

여기서는 알릭스가 DMR이 되는 겁니다.

알릭스의 DMR 프로그램이 "나 DMR이야, 나 여기 있어"라고 네트워크에 있는 다른 기기들에게 외치며 자신의 존재를 알립니다. 그래서, DLNA Media Controller(DMC)는 알릭스라는 DLNA Media Renderer의 존재를 알게 되고, 이 알릭스 DMR의 존재를 사용자에게 보여줍니다.

만약 사용자가 DMC를 통해 DMS에게 출력 스트림을 알릭스의 DMR에게 보내라고 지시한다면, 알릭스가 그 DMS로부터 오는 스트림 신호를 받게 되고 그걸 DAC로 토스해주는 역할을 합니다.


[디코딩은 누가 하나?]
디코딩(Decoding)이란, 음원 파일을 DAC가 인식할 수 있는 PCM 신호로 변형해 주는 작업입니다.

위 설명에서 DLNA Media Renderer(DMR)인 알릭스는 별로 할 일도 없고, 날아오는 스트림을 받아 먹기 위해 입만 벌리고 있는 신세가 되어 버렸습니다. 하지만 알릭스에게 일을 시킬 수도 있습니다.

대부분의 경우 DLNA Media Server(DMS)가 디코딩을 담당합니다. 하지만, DMS가 DMR이 디코딩을 할 수 있는 능력이 있다고 판단한다면, 디코딩 없이 음원 자체를 DMR에게 보내 줄 수도 있습니다. 이런 경우 디코딩은 DMS가 아닌 DMR인 알릭스가 담당하게 되는 겁니다.

누가 디코딩을 할지는, 전적으로 '누가 디코딩을 할 수 있는 능력이 있는가?'에 달려있습니다.
현존하는 거의 모든 음원을 디코딩 할 수 있는 능력이 있는 DMS가 있는 반면, 디코딩 기능 자체가 없는 가벼운 DMS도 있습니다. DMR도 마찬가지 입니다. 강력한 디코딩 능력을 가지고 있는 DMR이 있는 반면, 디코딩 능력이 없는 DMR도 있습니다.


이해를 돕기위해 MP3 파일을 플레이하는 경우를 예로 들어 보겠습니다.

DMS는 MP3를 디코딩 할 수 있고 DMR는 할 수 없다면?
간단합니다. DMS에서 MP3를 디코딩해서 PCM 신호로 DMR로 보내주면 됩니다. 반대의 경우라면? DMR은 MP3 그대로 받아서 자신이 디코딩하면 됩니다.

불행하게도 둘 다 MP3를 디코딩 할 수 없다면 어떻게 될까요?
사용자는 DMS에게 플레이 해서 DMR에게 보내라고 지시하지만 DMS는 말을 듣지 않습니다. DMS는 이미 그들의 능력 없음을 알고 주인(사용자)의 지시를 거부하는 겁니다. 할 수 없는 일을 시키니 당연한 거죠.

그럼, DMS와 DMR 둘다 MP3 디코딩 능력이 있다고 하다면?
누가 디코딩을 담당할지는 사용자의 의지에 달려있게 됩니다. 대부분의 DMS는 설정을 들여다 보면 DMS가 디코딩 여부를 지정 할 수 있게 되어 있습니다. DMS가 디코딩을 담당하기 원한다면, DMS 설정에서 MP3 파일을 디코딩을 하도록 설정하고, DMR이 디코딩 하길 원하면, DMS 설정에서 디코딩하지 않도록 하면 됩니다.


참고로, EasyMPD에 내장된 Media Renderer는 flac, mp3, ogg 파일만을 디코딩 할 수 있습니다. 다른 종류의 음원을 알릭스를 통해 들으려면, DMS에서 디코딩 해주어야 합니다.


둘 다 디코딩 능력 있는 경우 누구에게 일(디코딩)을 시키는 게 유리할까요?

디코딩을 수행한다는 것은 그만큼 기기에 부하가 걸리게 되는 것을 의미합니다. 아무래도 하드웨어적인 능력(CPU 처리 능력 등)이 더 높거나, 현재 해당 기기에 걸리고 있는 부하가 적은 것을 선택하는 게 맞을 듯 합니다.

하지만 PCM 신호의 정보량은 MP3 파일 자체 그대로 보내지는 양 보다 상대적으로 훨씬 많습니다. 그래서 DMS에서 디코딩을 하여 PCM 신호로 보내는 것이 DMR에서 디코딩 하는 것보다 네트워크에 걸리는 부하가 더욱 크게 됩니다.

이렇듯, 누구에게 디코딩을 시킬지는, 기기의 CPU 부하네트워크 부하를 감안하여 사용자가 자신의 환경에 맞게 결정해야 할 문제입니다.


[DB]
DB 생성 관리는 DMS에서 담당합니다.

디코딩 능력과 상관없이 DMS가 해당 음원의 테크 정보를 읽어올 수 있는 능력이 있다면, DMS는 그 음원을 DB에 포함할 수 있습니다.

만약 분명 존재하는 특정 종류의 음원들이 DMS에 보이지 않는다면, 그 DMS는 그 음원을 인식할 수 있는(테그 정보를 읽어올 수 있는) 능력이 없는 경우 입니다. 이런 경우 EasyMPD를 탓할 것이 아니라, 자신이 사용하고 있는 DMS의 문제이니, 다른 DMS를 사용하던지, 아니면 그 음원을 다른 종류의 음원으로 변환해 사용해야 합니다.

참고로, 네트워크 플레이어 구축에서 가장 유리한 음원은 "Flac"입니다. 다른 음원에 비해 디코딩 시 CPU부하가 적어 상대적으로 좋은 음질을 제공하며, 테그 정보도 규정을 잘 따르고 있어 DB 생성 중에 발생하는 문제가 가장 적습니다. Flac 위주로 음원을 소장한다면 정말 편안하고 즐겁게 음악 생활을 영위할 수 있습니다.


[음질]
아마도 가장 큰 관심사 일겁니다. DLNA 시스템에서, 강력한 성능의 DMS를 사용하고, 디코딩을 전적으로 DMS가 담당하여 알릭스의 CPU 부하를 줄여 준다면 분명 상당한 음질을 만들어 낼 수 있을 겁니다. 하지만 음질 향상을 위한 EasyMPD만의 여러 가지 튜닝 기술로 다져진 MPD도 그에 대적할 만한 좋은 음질을 만들어냅니다. 들어보고 판단하시길.


이정도면 EasyMPD의 DLNA Media Render 기능의 개념 정리로는 충분하리라 생각 됩니다.

실제로 구성하고 음악을 듣는 실전 과정은 아래 링크들을 참고하세요.

  1. 알릭스 DLNA/UPnP Render로 음악을 듣자! 1. foobar2000의 DMS와 DMC 기능 이용
  2. 알릭스 DLNA/UPnP Render로 음악을 듣자! 2. foobar2000의 DMS와 스마트폰의 DMC 이용
  3. 알릭스 DLNA/UPnP Render로 음악을 듣자! 3. JRiver의 DMS 이용


시작하기로 돌아가기