소프트웨어‎ > ‎

forked-daapd


iTunes 10이 나온 후 mt-daapd의 목록이 제대로 나오지 않는 문제가 있다. 이를 대비하기 위해 패치도 나왔지만 아예 별도로 개발되는 forked-daapd를 쓰는 방법도 있다고 하여, 전부터 알고는 있었지만 컴파일 조건이 까다로워 써본 적은 없는 패키지를 깔았다. 우분투 PPA도 있어서 설치는 간단히 했다. (lucid 다음에 maverick이 나온 시점에서 패키지가 좀 옛날 버전이긴 한데, natty에는 최신 버전으로 아예 들어가 있는 것 같다. 다만 기반이 되는 antlr3가 의존성 문제로 최신 버전이 안 들어가서 직접 컴파일해서 쓰기에는 환경이 안 맞다.)

설정도 간소하게 되어 있고 해서 파일 있는 경로만 잡아주면 DB가 열심히 구축되고 잘 뜬다. 재생목록은 .m3u 파일 등을 인식해서 보여준다.

DB에는 sqlite3를 쓰고, sqlite3_create_collation() 명령으로 COLLATE를 별도로 만들어 쓴다. sqlext_daap_unicode_xcollation() 부분에서 실제 동작이 결정되는 걸로 보인다. 내부 사정은 잘 모르겠다. 빌드가 되야 말이지(...) libav가 뽑아주는 태그랑 안 맞거나 libunistring에서 처리를 잘못 하거나 COLLATE가 구닥다리거나 할 수도 있고. 제출된 패치에 의하면 그냥 쿼리문이 잘못된 건가?

웹 화면이 구현되지 않아서, 설정도 설정이지만 동적으로 재생목록을 관리하는 기능이 없는 게 아쉽다. 그리고 파일명은 바뀌지 않고 ID3 태그만 바뀌었을 때 종종 쓰던 파일을 아예 다시 검사하는 기능과 그냥 파일 추가됐을 때의 간단한 인식을 따로 구분할 수 없는 것 같아서 태그 편집을 자주 하는 나로서는 좀 아쉬운 일이다. 그나마도 자동스캔이 잘 되면 모르겠는데 inotify 자체는 활용하는 것 같으면서도 무슨 이유인지 제대로 동작을 하지 않는 때가 많은 것 같다.

특히 AirPlay를 지원한다고 해서 혹했는데 네트워크에 있는 다른 에어튠즈 장비를 인식해 출력을 쏴줄 수 있다는 얘기다. 자체적으로 AirPlay 스피커의 하나로 인식이 될 수 있는 거라면 더 재밌었겠지만 이런 식도 괜찮다. Remote.app을 통해 노래를 재생하고, 다른 스피커로 보내는 식으로 쓸 수 있다. cover.jpg Folder.png 식으로 폴더 안에 이미지를 넣어주면 앨범 이미지도 잘 나온다.

iPhone을 쓰면서 Remote.app을 (정확히는 DACP 프로토콜을) 지원한다고 나와 있어서 찾아보았는데, avahi-browser를 통해 아이폰 리모트 앱이 mDNS에 등록된 것을 확인했는데도 정작 forked-daapd 로그에는 그런 이름이 없다고 나온다. 1.x까지는 동작했으나 2.x부터 안 된다고 한다. XXX.remote 파일에 아이폰 기기명과 Remote.app의 네 자리 숫자를 넣고 음악 파일 읽어오는 경로 밖에서 편집했다가 안쪽으로 파일을 이동시키면 inotify를 통해 등록된다. 것까지는 확인했다. 하지만 목록에 뜬 걸 눌러서 들어가면 연결 중이라고만 뜨고 그 이상 진행이 안 된다. 서버측 로그에도 남는 게 없다. 제어도 된다. Remote 3.0 나오고 나서 재생으로 들어가지 못하는 문제는 패치가 나와 있다. 일단은 2.0으로 그냥 쓰는 걸로 대신하고 있다. 다만 다음 재생곡을 추가하는 식으로는 아직 쓸 수 없다.


Comments