
음향 인터넷 라디오 서버 구축 - 2025년에 PSP로 음감하기
- RASBI
- 조회 수 1902
- 2025.06.16. 00:47
===============
이 프로젝트를 완성하는데 6시간 정도 걸렸습니다.
이 프로젝트는 Google Gemini 2.5 pro의 도움을 많이 받았습니다.
그리고 원문에는 자세한 코드가 나와있지만 미코에는 생략, 정리하여 올립니다! (물론 원문 출처는 나)
===============
===============
집에 PSP가 있습니다. 국내판, 그러니깐 1005번이 되겠군요.
요즘 이 녀석을 쓸 일이 없어서 거의 몇년동안 방치중이였습니다. 사실 이전에는 제법 사용했던것이, PSP에 SensMe 채널이라는 앱이 있습니다. 이게 UI가 참 예쁘거든요.
근데 요즘 음감 방식의 대세가 스트리밍이다보니, 확실히 MP3 받아서 넣고 이러는것에 저도 모르게 피곤함을 느꼈나봅니다. 그러다보니 자연스럽게 PSP가 구석으로 밀려나게 되더군요.
그러다가 오늘 2025년 6월 15일, 이전부터 머리속으로 구상을 하던 시스템을 한번 해보자 마음을 먹었습니다.
바로 PSP의 인터넷 라디오 기능을 이용한 스트리밍입니다.
===============
===============
PSP의 음색에 대해서 살짝 이야기를 해보자면~
PSP에는 VME - 버추얼 미디어 엔진이라고 불리는 DSP가 들어가있습니다. 이 녀석은 동적으로 재구성이 가능한 회로입니다. FPGA 같은 녀석이라고 보시면 됩니다.
VME가 DSP인 만큼, 요 녀석이 음감에 영향을 주는 모양입니다. VME의 경우 네트워크 워크맨에 처음으로 들어간걸로 알려져 있고, 어떤 기사에서는 MD 플레이어를 위해서 VME를 개발했다~라는 글도 있더군요.
일단 PSP도 ATRAC3을 지원하기는 하지만 진실은 저 너머에...
개인적으로 들어본 기기와 비유를 하자면 S-Master HX 1세대가 들어간 NWZ-F886에서 선명도와 좌우 분리도가 좀 빠진 느낌?에 가깝다고 느꼈습니다.
===============
이제 본론으로 들어가겠습니다.
시스템 흐름은 다음과 같습니다:
1. 홈서버인 MI A1에 인터넷 라디오 방송국을 구축
2. PSP에서 MI A1의 인터넷 라디오 방송국에 접속, 음감
1번의 경우 icecast2와 ffmpeg을 사용하여 구축을 하였으며, 2번의 경우 조금 까다롭습니다만, SDK 문서 아니 그냥 샘플 파일만 보더라도 감이 바로 잡힐겁니다.
===============
PSP에서 라디오 방송국을 듣는 원리는 다음과 같습니다:
1. UI가 갖춰진 HTML 페이지에 접속
2. 자바스크립트를 실행하여 메소드를 실행 (PSP 내장 메소드)
3. 음악을 스트리밍으로 즐긴다.
정말 간단하죠?
===============
저의 경우 서버 환경이 알파인 리눅스 기반인 postmarketOS를 구동하고 있습니다. 성능이요? 전혀 무리가 없습니다.
인터넷 라디오 방송국 구축을 위해서 icecast를 실행해주고, 서버 ip 주소의 8000번 포트로 접속을 합니다. 접속이 되면 올바르게 구동중인 것 입니다.
여기서 ffmpeg가 필요합니다. 사진을보면 방송 스트림이 전혀 없습니다.
왜냐하면 icecast는 단순히 방송국의 역할만 하고, 이 방송국에 음원 파일을 넣어주는 녀석이 필요합니다.
ffmpeg 명령어를 실행하는 스크립트를 짜주고, 해당 파일을 실행하면 1단계: 인터넷 라디오 방송국 구축은 완료 입니다.
(이 상태에서 외부망 접속을 열면 이제 퍼블릭한 스테이션이 되겠지만, 저는 내부망에서 개인 프로젝트 용으로 사용할 예정이기에, 스킵합니다.)
===============
===============
이제 PSP에서 접속을 해야합니다.
예전에 소니에서는 PSP의 인터넷 라디오 SDK를 배포했었습니다. 저도 예전~한 2011년 2012년 경에 한 유저가 만든 "마음의 소리 " 인터넷 라디오 - 세이캐스트 방송국이 들어간 유저 커스텀 인터넷 라디오를 PSP에 적용했던 기억이 있습니다.
지금도 구하고 싶긴 한데 블로그에 파일이 유실된거 같더라고요ㅠ
===============
===============
다시 한번 더 PSP 인터넷 라디오의 구조를 파악해보겠습니다. 유저 입장에서 PSP에 인터넷 라디오를 추가하는것은 .prs라는 파일을 메모리 스틱에 넣어서 실행시키는것 뿐입니다.
.prs에는 무슨 정보가 있을까요? 이것은 .XML 파일을 간단히 컴파일한 파일에 불과합니다. 그리고 XML 파일에는 어떤 HTML로 접속을 해서 인터넷 라디오 접속 정보를 받아올지 정도만 적혀있죠.
===============
===============
그러면 PSP는 해당 HTML 페이지로 접속을 합니다. 그리고 자바 스크립트를 실행합니다. 자바스크립트에는 PSP 전용 메소드들이 있습니다. 이것도 물론 SDK에 예제가 있죠.
주요 메소드는 3가지가 있습니다.
1. sysRadioPlayM3u M3U 파일의 URL을 지정해 재생을 시작
2. sysRadioSetMasterVolume 마스터 볼륨 레벨을 설정
3. sysRadioSetSubVolume 서브 볼륨 레벨을 설정
여기서 중요한건 1번째도 중요하지만 2번째와 3번째가 정말 중요합니다. 왜냐하면 제가 저 2가지를 빼먹고 왜 소리가 안나나 3시간 동안 삽질을 했거든요ㅠㅠ
===============
아무튼, 작성한 html 파일을 호스팅 해야 합니다. 방법이 2가지 있습니다
1. PSP에 HTML파일을 넣고, .prs 파일이 이 내부 파일을 로드하도록 하는법
2. 실제 서버 주소로 접속해서 호스팅된 HTML 페이지에 접속하는법
저는 2번 방법으로 해주었습니다. 정말 간단하거든요.
저는 darkhttpd를 사용했습니다. 간단한 웹 서버 호스팅 프로그램이라고 보시면 됩니다.
홈 디렉터리에 www라는 폴더를 하나 만들고 거기에 html과 인터넷 라디오 주소가 담긴 m3u파일 총2개를 넣어주었습니다.
그리고 80번 포트로 호스팅을 하게끔 실행을 합니다. 아, 그 전에 방화벽에서 포트 허용을 해주어야 합니다.
===============
===============
그리고 prs 파일을 만들어 줍니다. XML 코드가 3줄 정도 밖에 안됩니다. 정말 간단하죠?
이제 이 XML 파일을 컴파일러에 넣어주면 .prs 파일이 튀어 나옵니다.
이제 제가 만든 MyRadio.prs 파일을 메모리 스틱의 경로에 넣고 psp의 전원을 켜줍니다.
===============
===============
인터넷 라디오 => 제가 만든 "나만의 라디오" 파일이 보입니다. 아이콘 사진을 지정하지 않아서 일단은 기본 아이콘으로 나오는 상태네요.
파일을 열면 인터넷 접속 요청을 하고 WIFI에 연결하게 됩니다. 이후 재생 버튼을 눌러주면...
===============
===============
소리가 납니다!!
정말 색다른 경험입니다. 그냥 스마트폰으로 딸칵하는것도 좋지만 이렇게 레트로 기기(지금 시점에서는 PSP도 레트로가 아닐까 싶습니다.)로 음감을 하니 기분이 묘합니다.
여기에 HTML 페이지를 좀더 감성있게 꾸미고 그러면 더 좋을것 같습니다. 참고로 메타데이터도 불러올 수 있는데, 이거는 좀더 코드에 최적화가 필요 할 것으로 보입니다.
음색은 앞서 말한대로 소니 느낌이 납니다. 물론 제가 가진 nw-a55에 비할바는 아니지만, 개인적으로 엑스페리아 xz1c나 xzp, xz2c+소니 정품 번들 꼬다리, 엑스페리아 1 마크 2 3 4 보다는 더 특색있는 소리라고 생각이 되네요.
===============
다만 이 방식의 큰 문제가 있습니다.
1. 발열 - PSP의 무선랜 기능을 쓰니 발열이 있습니다.
2. 굳이임 - 사실 이 정도 고생이면 MP3 파일 넣어서 들으면 되겠다 싶습니다.
3. MP3 파일을 씀 - 이미 스트리밍 소스는 MP3 파일입니다.
따라서 이렇게 머리속에 한번 생각이나 구상을 해본 시스템은 여기서 마무리를 하는걸로....다 하고나니 현타가 씨게 오더군요ㅋㅋ
그래도 호기심과 궁금증도 풀리고 재미있었던거 같습니다ㅎㅎ
===============

와우 신기하네요...