사실....-_-
아이폰이나 아이패드, 아이팟터치는 html5의 audio로 재생하고 나머지는 flash로 재생하면 다되는거죠.
이건 그렇게 귀찮게 구분하는 것을 알아서 해주는플러그인이에요.
이런 종류의 플러그인이 SoundManager라고도 있는데, 얘는 재생할 때 UI같은 것이 재미있는 것이 많아서 좋긴한데, 조금 무거운 것 같습니다. min파일이 50k정도 하는 듯.
그에 반에 jPlayer는 물론 jquery기반이라서 jquery를 먹고 가지만, jPlayer만 16k정도 하네요.

현재 브라우저가 지원하는 오디오 코덱이 다 다른데요.
크롬은 mp3/ogg 지원하고, 사파리는 mp3만, opera와 firefox는 ogg만 지원을 해요.
그래서 mp3에 대한 재생을 할 때에는 opera와 firefox는 플래시로 재생시키도록 하게 되는 것이죠.

게다가 UI연동같은 것도 progress callback함수나 complate callback함수 등 재생, 일시정지, 정지 이런 것이 너무 함수로 잘되어있어서(마치 as3의 sound클래스를 보는 듯한...) 쉽게 쓸 수 있어요~

공식사이트
http://www.happyworm.com/jquery/jplayer/

대충 써보니까 매우 좋네요. 저는 이렇게 문서화랑 demo가 잘되어 있는 사이트가 너무 좋아요!ㅠㅠ

[code]
$("#player").jPlayer({
            ready:function(){
                this.element.jPlayer("setFile", "http://mudchobo.tomeii.com/html5/jPlayer/aa.mp3").jPlayer("play");
            },
            swfPath:"/html5/jPlayer/"
        })
        .jPlayer("onSoundComplete", function(){
              // 다음곡 처리~
        })
        .jPlayer("cssId", "play", "btnPlay")
        .jPlayer("cssId", "pause", "btnPause")
        .jPlayer("cssId", "stop", "btnStop");
[/code]
이런식으로 jQuery문법에 충실하도록 제작되었네요~
게다가 css랑 연동도 저렇게 play버튼을 지정해주고 btnPlay태그가 재생버튼이 바로 되어버리죠!
최고인 듯.

암튼 잘 쓰세요~
 
Posted by 머드초보
TAG Audio, flash, html5, mp3

댓글을 달아 주세요

  1. 아프로밤바카 2011.08.23 02:35  댓글주소  수정/삭제  댓글쓰기

    여기까지 찾아들어오다니 스토커 같네...;ㅅ;
    너무 어려워!

 
국내 최초 안드로이드폰인 모토로이 출시일에 맞춰서 어플을 만들어서 마켓에 올려버린 빠른 준비력을 가진 벅스군요.
안드로이드펍 사이트를 자주가는데요. 거기에 직접 만드신 개발자분께서 글을 올리셨더라구요^^
http://www.androidpub.com/108585
그래서 큰 맘먹고 벅스 1달 듣기 1달 이용권을 구입했습니다. 벅스는 제가 고딩 때 신세를 진적이 있었죠! 그 당시에 아마 무료스트리밍 서비스였을 겁니다. 티비광고도 했던 걸로 기억하는데...
와 구글에서 검색하니까 나와요! 더욱 놀라운 건 벅스 광고에 황정음이 나왔었.......-_-
황점음은 예전이나 지금이나 그대로네요^^

그래요. 아직도 생생하네요! 여자들은 내리고, 남자들은 올렸던......-_- 생각해보니 그 당시에는 저광고의 의미를 몰랐는데, 다시보니 그냥 파일벅스 광고인 듯. 마음껏 올리고, 마음껏 받는 뭐 그런 것 같음.

그나저나 얘기가 너무 많이 빠졌.......

1. 최초 실행화면

사용자 삽입 이미지
벅스뮤직, 마이뮤직, Playlist가 존재하네요.


(1) 벅스뮤직

실시간TOP100, 벅스TOP100, 장르별음악, 최신곡, 무료음악이 존재합니다.

실시간TOP100은 말그대로 실시간 순위이고, 벅스TOP100은 주간차트인 듯.

장르별음악은 가요, 팝송, OST, J-POP, 월드뮤직, 클래식, 광고음악, 동요, 태교음악, 뉴에이지, 국악, 트로트, CCM, 클럽음악, 인디뮤직, 무료체험곡으로 나뉩니다.
가요 - 최신곡, TOP100, 발라드/R&B, 클럽/댄스, 힙합, 락, 인디, 트로트, 포크, 재즈/블루스
팝송 - 최신곡, TOP100, 팝, 랩/힙합, R&B/소울, 락/메탈, 재즈/블루스, 클럽/일렉트로니카, 포크/컨트리
OST - TOP100, TV/드라마, 영화, 애니메이션/게임, 뮤지컬
J-POP - 최신곡, TOP100, 팝, 아이돌팝, R&B/힙합, 락, 시부야케이
월드뮤직 - 최신곡, TOP100, 샹송, 칸초네, 파두, 켈틱, 집시/플라멩코, 탱고, 보사노바, 라틴, 레게/캐리비안, 에스닉
클래식 - 최신곡, TOP100, 관현악/교향곡, 실내악, 협주곡, 성악/합창/오페라, 크로스오버, 뉴에이지, 독주
광고음악 - 최신광고, 전자/정보통신, 화장품/패션, 식품, 음료/주류, 기타
동요 - 인기짱100, 새로운노래, ABC잉글리쉬송, 따라해요 율동송, 어린이 클래식, 교과서음악, TV/영화/애니주제가, 창작동요제, 코믹엽기송, 동화동요, 인성교육
태교음악 - 최신곡, 태담, 태아 발달에 따른 음악, 상황에 따른 음악, 건강한 아이, 정서 안정과 예술적 감각, 총명한 아이를 위해
뉴에이지 - 최신곡, TOP100, 네오 클래시컬, 솔로 인스트로멘탈, 일렉트로닉 연주, 에스닉/켈틱 퓨전, 힐링 사운드, 명상/요가, 자연의소리
국악 - 최신곡, TOP100, 민요, 판소리, 산조/풍물, 창작/크로스오버, 정악/그외
트로트 - 최신곡, TOP100, 세대별 트로트, 시대별 트로트
클럽음악 - 어반/힙합, 일렉트로니카, 클럽 힙합, 일렉트로닉 댄스, 애시드 재즈, 칠아웃
인디뮤직 - 최신곡, TOP100, 락/메탈, 모던/포크/팝, R&B/랩/힙합, 일렉트로니카/라운지, 컴필레이션
으로 나눠져있네요.............
장르가.......정말 잘 되어있구나..........

최신곡은 가요, 팝송, OST, J-POP, 월드뮤직, 클래식, 오늘의 업데이트 별로 나눠져있구요.

무료음악은 이용권이 없어도 들을 수 있는 음악인 듯합니다.

어쨌든, 벅스의 장점은 이렇게 완벽하게 나눠진 장르입니다. 일부매니아층을 위한 장르도 이렇게 세세하게 나눴다니 놀랍네요. 사실 제 기준에서 장르는 락, 발라드, 댄스 세가지밖에 없는데.....-_-


(2) 마이뮤직

벅스 웹사이트에 있는 나만의 앨범과 연동이 됩니다. 근데, 여기에서 새로운 앨범은 만들어지는데, 곡을 어떻게 넣는지 모르겠네요. 일단 나만의 앨범에서 오른쪽에 편집부분을 선택하면 왼쪽에 새 앨범을 만들 수 있는데, 만들 수만 있고 곡은 아직 못 넣는 듯. 앨범 편집은 안드로이드 어플에서 하기에는 너무 힘든 것 같네요. 웹에서 미리 만들어 놓고, 어플에서 듣는 형태로 음악을 들어야겠네요^^
사용자 삽입 이미지
라르크앙시엘 앨범을 웹에서 만들었더니 바로 생기네요. 그리고 해당 앨범을 클릭하면 곡목록이 나오는데, 곡을 선택해서 Playlist에 넣어야 playlist순서대로 재생되는 방식입니다.

그리고 특이한 점이 Local library라는 것이 있고, 거기에 256songs가 들어있었는데요. 뭐지하고 보니까 제 sdcard에 있는 곡들을 자동으로 불러왔더라구요. 이걸 들으면 자기가 가지고 있는 곡이다보니 풀재생(?)이 됩니다-_-


(3) Playlist

이건 말그대로 재생리스트입니다. 여기에 넣어두고, 여기에 있는 것을 기반으로 플레이어가 재생하게 됩니다.
마이앨범에서도 듣기 또는 추가를 할 수 있는데, 듣기하면 바로 재생을 시도하고, 추가하면 그냥 아래에 추가합니다.


2. 플레이어 화면(Now Playing)
사용자 삽입 이미지

이미지가 자꾸 거슬리는데, 사이즈각 작은 걸 늘렸나봅니다. 조금 흐리네요. 물론 용량을 줄이기위해 저용량이미지를 쓴 것 같은데, 어차피 음악은 거의다 Wi-Fi로 들을텐데(행복전도사 친구분들은 빼고-_-) 고화질로 줘도 될 듯.

진행시간 왼쪽에 있는 아이콘은 재생모드입니다. 반복끔, 한곡반복, 전체반복 형태로 바뀝니다.
전체시간 오른쪽에 있는 아이콘은 셔플, 노말 형태로 바뀝니다.
아직 SEEKING기능은 되지 않네요. 사실 잘 안쓰는 기능이긴 하지만, 그래도 가끔씩 필요할 때가 있다는...-_-

맨 아래 아이콘은 좌측부터, Playlist, 이전곡, 재생/일시정지, 다음곡, 기타기능인데요.
좌측부터 4개는 다 알 것같고, 오른쪽 맨끝에 있는 아이콘을 누르면 세가지 메뉴가나옵니다.
1. Twitter에 공유 - 이런 누르자마자 바로 트윗을 날려버리네요. 사전에 옵션에서 계정설정을 해야합니다. 계정설정은 있다가 아래에서-_- 근데, 뭐 그냥 / #BugsPlaying - 아프니까 사랑이죠 by 민경훈 @neowizbugs/ 이런 글만 써지네요. 목적은 BugsPlaying이라는 채널을 검색해서 사용자들이 어떤 음악을 주로 듣는지에 대한 것을 한눈에 볼 수 있게 하기 위함이네요. 좋은 아이디어네요^^
BugsPlaying으로 검색해보니 많은 사람들이 이걸 통해 트윗을 한 듯-_-
2. 나만의 앨범에 저장 - 아까 정체를 알 수 없게 앨범만 만들 수 있었던 이유가 여기에서 풀렸습니다-_- 듣고 있는 곡을 바로 넣을 수 있습니다. 선택하면 나만의 앨범 목록이 나오네요. 이건 좀 더 좋은 인터페이스가 있을텐데, 있다가 나중에 언급하도록 하겠습니다^^
3. Playlist에서 삭제 - 눌르면 지워지는데, 음악은 계속 나오네요. 그냥 pl에서만 지우는 듯.

앨범 이미지를 클릭하니 가사가 이쁘게 나오네요^^ 그리고, 싱크가사가 있는 건 싱크가사도 되네요^^
사용자 삽입 이미지
싱크가사는 위와같이 노란색 글씨가 따라다녀요~ 저는 노래를 듣다가 가사가 궁금해 한적이 많은데, 이건 정말 좋네요. 가사를 직접 검색해서 찾지 않아도 되고, 노래를 외울때에도 좋고^^


3. 메뉴버튼 클릭 시 나오는 메뉴
사용자 삽입 이미지

(1) 홈 - 맨 처음에 실행할 때 나오는 벅스뮤직, 마이뮤직, Playlist가 있는 메뉴로 갑니다.
(2) Playlist - Playlist를 보여줍니다.
(3) Now Playing - 앨범커버와 음악 진행 상황이 있는 플레이어 화면으로 갑니다.
(4) 검색 - 노래를 검색할 수 있습니다. 검색하고 바로 Playlist에 바로 담을 수 있군요^^ 검색은 전체, 곡제목, 아티스트 형태로 검색할 수 있어요.
(5) 설정
네트워크 알림 - 이걸 켜두면 3G연결될 때 경고창이 뜨는 듯 합니다. 지금 켜놨는데, Wi-Fi일 땐 확인이 안뜨는 것 보니 3g일 때만 뜨나봅니다. 켜두시면 3g로 접속하는 경우를 막을 수 있는 듯 합니다.
음원 설정 - AAC+인지 MP3인지 음원을 선택할 수 있습니다. AAC+가 용량이 더 작나봅니다. 3G로 듣는 사람들에 대한 배려군요. 아이콘은 AAC+인데, 아래 설명은 ACC+로 되어있는 걸보니 오타인 듯. AAC+가 맞는 듯^^
Playlist옵션 - 추가할 때 처음에 추가할 지 마지막에 추가할 지 현재곡 앞, 뒤에 추가할 지에 대한 옵션들이 있군요.
사용자들을 위한 배려를 참 많이 한 부분이네요.
Bugs 계정설정 - 계정 설정하는 부분~
Bugs 회원가입 - 여기서 바로 회원가입도 되는 듯. 짱인 듯.
Twitter 계정설정 - 여기서 계정설정 하면 나중에 기타메뉴에서 트위터에 공유하면 바로 글을 날릴 수 있습니다.

(6) 마이페이지 - 자신이 어떤 이용권을 쓰고, 언제 만료가 되는지 확인할 수 있네요.

전체적인 메뉴를 다 살펴봤네요.


4. 아쉬운 점.

음....아직 버그가 많습니다. 이전곡 선택했다가 다음곡 선택했다가 아니면 가만히 냅둬도 가끔 노래가 안나올 때가 있습니다. 왜그런지 모르겠는데, 발생했다 발생안했다 하는 개발자들에게 짜증나는 버그인 듯.
암튼, 음원을 받으면서 재생하는 형태다보니 좀 문제가 많은 듯.

그리고 아까 일시정지하고 잠깐 공부의 신 보러갔다왔는데, 재생하니까 로그아웃이 되버린....갑자기 1분재생만 되더군요. 그래서 다시 홈으로 가니까 로그인이 됐다면서 다시 풀재생이 되더군요.

그리고 이상하게 벅스어플은 느립니다-_- 모토로이가 느린 것일 수도 있지만, 지금까지 다른 어플들은 이렇게 느리진 않았던 것 같은데, 이상합니다. 곡리스트가 보이는 차트부분에서 아래로 스크롤 하면 좀 부드럽지 않게 스크롤이 되네요. 물론 사용하는데에는 지장이 없지만^^ 모토로이만 느린지 다른폰도 그런지 알고 싶습니다 ㅠㅠ 모토로이 ui는 좀 느린 듯 ㅠㅠ

플레이어 하단 오른쪽에 있는 기타메뉴를 띄운 다음에 뒤로 가기 버튼을 누르면 홈으로 가버리네요. 그냥 플레이어 화면에 머물렀으면 좋겠는데-_- 다시 가려면 메뉴머튼 누르고, NowPlaying을 눌러야한다는.....

그리고 나만의 앨범을 모바일에서도 쉽게 만들 수 있도록 개선했으면 좋겠네요^^ 그리고 안드로이드에는 해당 아이템을 오래 누르고 있으면 메뉴가 나오는 UI가 있는데 그걸 활용했으면 하네요. 이런 것을 잘 활용하면 손쉽게 나만의 앨범을 벅스어플에서도 꾸밀 수 있을 듯!

아....앨범단위로 곡을 볼 수 없는 것도 좀 안 좋네요. 검색하면 무조건 곡단위로만 볼 수 있어요. 앨범단위로도 보고 싶고, 해당 아티스트에 해당하는 앨범리스틀 보여주는 형태도 보고 싶네요 ^^

그리고 안드로이드는 sdcard에서 자유로우니 다운로드도 넣으면 좋을 듯^^

PS. 벅스는 라르크엔시엘 노래가 있어서 좋네요 ㅠㅠ X-JAPAN노래도 있어요! 제가 유일하게 아는 일본가수 두팀-_- 근데 이거 DRM형태로만 제공해서 MP3로는 못받네요. 권리사가 좀 독한 듯-_-
 
Posted by 머드초보

댓글을 달아 주세요

  1. 문혜원 2010.02.21 21:51  댓글주소  수정/삭제  댓글쓰기

    그냥 와이파이말고 그냥 네트워크 연결해서 들어간 후
    노래 한 곡을 담았는데요 이건 결제가 어떤 식으로 이루어 지는 건가요?..
    잘 몰라서..ㅜㅜ 노래를 막 담아도 되는건지...
    무료음악은 또 뭔가요..?ㅜ

    • 머드초보 2010.02.21 22:44  댓글주소  수정/삭제

      아.....이 어플은 노래를 담는 순간 결제를 하는 게 아니라
      음악 스트리밍 해주는 어플입니다.
      그러니까 벅스에서 들을 수 있는 음악은 기간동안 무제한으로 들을 수 있어요.
      그니까 막 담아도 돼요^^

 
컴퓨터를 포맷을 해서 알송을 다시 설치하려고 사이트에 가니까 2.0이 새로 나왔더군요. 아직 2.0Beata여서 자동업그레이드를 제공하지 않았던 것이군요.
국내 MP3플레이어 중에서는 최고라고 생각하고 있는 알송! 왜냐하면 사용자가 많아서 인지 가사가 다 잘나오거든요^^ 가사는 사용자가 직접 등록하는 것인데, 신기하게도 희귀한 음악 빼곤 왠만해선 가사가 다 입력이 되어있습니다^^ 사용자가 많으니 이런 점이 참 좋죠^^ 게다가 플레이어 기능도 전혀 불편하지가 않죠. 전 그래서 알송을 애용해요~ ^^

2.0에서 새로 생긴 기능을 한번 살펴봅시다.
모양은 아래와 같이 바뀌었군요.
사용자 삽입 이미지
스크린샷을 보면 알송으로 무엇을 할 수 있는지가 한눈에 보이네요. 게다가 mp3파일에 앨범커버가 있으면 커버도 보여주네요^^ 앨범커버를 보여줘야 역시 뭔가 간지가 나죠-_-

1. 아이튠즈와 비슷한 기능중 하나인 재생목록기능
이건 자신만의 재생목록을 만들 수 있습니다. 새 재생목록 추가버튼 클릭하고, 새로운 재생목록을 만들어서 음원을 추가하면 재생목록을 만들 수 있습니다. 재생목록을 분리해서 정리해놓으면 듣고 싶을 때 노래도 쉽게 찾을 수 있겠죠.
게다가 추가로 많이 들은 음악, 최근 들은 음악을 제공합니다. 많이 들은 음악은 알송으로 재생한 곡수를 통계를 내어서 가장 많이 들었던 노래를 순위별로 보여주죠. 아이튠즈에 있던 기능들이죠^^
사용자 삽입 이미지

재생목록 관리 화면


2. MP3플레이어와 직접적인 연동
여기서 말하는 MP3플레이어는 알송이 아닌 기기를 말합니다-_- 제가 가지고 있는 s9와 연결해보겠습니다.
연결하면 신기하게 인식을 하는군요^^
사실 이 기능은 뭐 그냥 자신의 하드드라이브에 있는 곡들을 MP3Player로 이동식디스크로 복사하는 건데, 좀 더 편하게 현재 재생되고 있는 노래나 재생목록에 있는 곡들을 쉽게 복사할 수 있죠^^
사용자 삽입 이미지

MP3남은 용량도 볼 수 있네요.

아 기존부터 벨소리 만들기 기능이 있었는데요. 벨소리 사는 것도 있네요. 만드는 것과 벨소리 파는 것을 공존시키다니-_- 뭐 해당 음원이 없으면, 구입할 수도 있겠네요^^
사운드효과는 뭐 제가 막귀여서 이런 기능은 저한테 사치죠-_-

디자인도 깔끔하고 맘에 드네요 하지만 이런 기능들은 다 필요없고-_- 알송을 쓰는 이유는 단하나입니다-_-
싱크가사죠-_- 방대한 양의 싱크가사가 존재합니다. 몇백만 되는 사용자들의 노가다 정성이 들어간 멋진 기능이죠. 이 기능때문에 알송을 포기할 수 없어요-_-

 
Posted by 머드초보

댓글을 달아 주세요

  1. 알송2.0 아오 !! 2009.08.18 20:56  댓글주소  수정/삭제  댓글쓰기

    가장 중요한게 불편함 ㅡㅡ,,

    구버전에서는 화살표 누르면 다음곡 , 이전곡 , 소리 음량 이런거 다되는데

    신버전에는 마우스로 하나하나 클릭해서 해야돼 아오 알송 몹쓸 프로그램

    • 머드초보 2009.08.23 19:23  댓글주소  수정/삭제

      아....키보드 단축키를 주로 쓰셨군요.
      음 그런 점이 있었군요-_-
      이스트소프트에 문의해보세요 해줄꺼에요! ^^

 
JavaFX는 신뢰할 수 있는지에 대해서 동의만 얻으면 로컬에 있는 파일에 접근할 수 있습니다. 그렇다는 얘기는 JavaFX로 사용자 컴퓨터를 맛이가게 할 수 있는건가....-_-
JavaFX는 브라우저에서 돌아갈 때 오래전에 영광을 누렸던 Applet기반으로 돌아갑니다. 예전엔 채팅사이트나 왠만한 사이트에 Applet이 꼭 들어갔었죠. 보안문제나 속도문제 때문에 아마 Flash에 밀렸을겁니다.
혹시나 했는데 스카이러브라는 예전에 유명했던 채팅사이트는 아직도 애플릿을 사용하네요-_-

암튼 JavaFX에서 사운드재생은 Flash처럼 매우 간단합니다.
MediaPlayer라는 클래스가 있습니다.
http://java.sun.com/javafx/1.1/docs/api/javafx.scene.media/javafx.scene.media.MediaPlayer.html
그리고 Media라는 클래스가 있습니다.
http://java.sun.com/javafx/1.1/docs/api/javafx.scene.media/javafx.scene.media.Media.html

[code]
var mediaPlayer:MediaPlayer = MediaPlayer {
    volume: 0.5
    autoPlay: false
    onError: function(e:MediaError) {
        println("got a MediaPlayer Error : {e.cause} {e}");
    }
    onEndOfMedia: function() {
        println("reched end of media");
        playList.next();
    }
}

mediaPlayer.media = Media {
    source: "URL경로 및 FILE경로",
    onError: function(e:MediaError) {
        println("got a media error {e}");
    }
}
mediaPlayer.play()
[/code]
이렇게 하면 됩니다. 아....URL은 그냥 http://www.~~~.com/1.mp3 이렇게 하면 되는데요. 로컬에 있는 파일을 읽어올 경우에는 C:\1.MP3 이게 아니더군요.
file:/D:/임재범-비상.mp3 이렇게 해야되더군요.

아 그리고, JavaFX에서는 flash에 있는 DataGrid같은 게 없습니다-_- swing컴포넌트를 이용해서 만들어야해요. 구글링을 해보니 JTable로 만들어 놓은 게 있더라구요. 그걸 이용해서 플레이리스트르 만들었습니다.

근데, 가끔 브라우저(FireFox나 IE, Opeara는 안됨ㅠ)에서 버튼이 클릭이 안될 때가 있습니다-_- 왜그런지 모르겠네요. 근데 크롬은 100%클릭이 잘 됩니다. 왜그럴까요....-_- 테스트 하시는 분들은 크롬으로 하세요 ^^ 크롬짱-_-
사용자 삽입 이미지

이미지에요-_- 주소는 아래에-_-


예제 데모주소입니다(크롬으로....-_-)
http://mudchobosample.appspot.com/JavaFXMP3Player/JavaFXMP3Player.html

소스주소입니다.
http://my-svn.assembla.com/svn/mudchobosample/trunk/JavaFXMP3Player/

 
Posted by 머드초보

댓글을 달아 주세요

 
ActionScript3가 제공하는 Sound클래스에서 구하는 재생시간은 구하는데 너무 오래걸립니다.
Sound객체를 생성에 Complete이벤트가 발생한 다음에야 재생시간을 구할 수 있습니다.
재생목록에 추가를 해서 그냥 간단히 재생시간을 보여줘야하는데, 100곡을 재생목록에 추가를 해버리면 AIR애플리케이션이 미친듯이 메모리를 잡아먹는 것을 볼 수 있습니다-_-;

그래서 찾아보니, mp3 Header정보를 이용해서 재생시간을 구할 수 있습니다.

재생시간 = 파일크기 * 8 / 비트레이트 로 구할 수 있습니다.
그러면 비트레이트만 구하면 되는데, 이건 MP3Header에서 찾을 수 있습니다.

MP3 BITRATE는 http://www.datavoyage.com/mpgscript/mpeghdr.htm에 의하면 MPEG버전, LAYER, Bitrate Index로 구할 수 있습니다. MP3는 각각 Frame별로 Header가 존재하는데, 거기서 위에 정보를 구할 수 있는 것 같습니다.

ID3v2태그가 있는 경우는 ID3v2태그 다음에 MP3Header가 나옵니다. 그렇다면 ID3v2태그의 길이를 구해서 그 다음부터 MP3Header를 찾아야 합니다. ID3v2태그는 길이가 가변적입니다.그래서 총길이를 알아야하는데, 총길이는 ID3v2태그 맨 앞에 나오는 10byte Header부분에서 구할 수 있습니다.

이 Header부분의 6byte~10byte까지가 ID3v2의 총 길이인데요. 여기의 값이 00 00 1F 76(00011111 01110110)이라면 각각 MSB를 제거하여 붙인 값이 총 길이가 된다더군요. 00111111110110 -> 4086byte.

우선 C#으로 구현해놓은 소스가 있습니다. 그것을 Actionscript3로 변환했습니다(구현하려니 힘들어서 ㅠ)
C#소스 -> http://www.devhood.com/tutorials/tutorial_details.aspx?tutorial_id=79

제가 변환한 AS3용 MP3Header클래스입니다. 제가 가지고 있는 MP3 대부분 테스트해봤는데 잘 되더라구요.
MP3Header.as

MP3Header클래스


사용법은 이렇게 쓰시면 됩니다.
[code]
<?xml version="1.0" encoding="utf-8"?>
<mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"
    creationComplete="init()">
    <mx:Script>
        <![CDATA[
            import util.MP3Header;
            private function init():void
            {
                var mp3Header:MP3Header = new MP3Header();
                mp3Header.readMP3Information("D:/눈물이 글썽 - 서진영.MP3");
                trace("BITRATE = " + mp3Header.intBitRate);
                trace("Frequency = " + mp3Header.intFrequency);
                trace("Mode = " + mp3Header.strMode);
                trace("LengthFormatted = " + mp3Header.strLengthFormatted);
                trace("Length = " + mp3Header.intLength);
            }
        ]]>
    </mx:Script>   
</mx:WindowedApplication>
[/code]
[code]
BITRATE = 64
Frequency = 44100
Mode = Stereo
LengthFormatted = 04:00
Length = 240
[/code]

 
Posted by 머드초보

댓글을 달아 주세요

  1. 2008.11.20 13:27  댓글주소  수정/삭제  댓글쓰기

    비밀댓글입니다

    • 머드초보 2008.11.21 16:29  댓글주소  수정/삭제

      와우 감사합니다 ^^
      이거 블로그코리아의 리뷰룸같은건가요? ^^

  2. 지나가다가 2008.11.21 18:12  댓글주소  수정/삭제  댓글쓰기

    ID3 태그가 있는 경우는 괜찮겠지만, 그 외에 저 위의 계산식으로는 CBR에 대해서만 정확히 나오게 됩니다.
    VBR에 대해서는 정확한 시간이 안나오죠..

    • 머드초보 2008.11.21 23:28  댓글주소  수정/삭제

      아네 ^^ 맞습니다. 제가 VBR은 시간을 어떻게 구하는지몰라서 ㅠ
      저기 C#구현체는 VBR인 경우도 추출할 수 있게 구현이 되어있습니다.
      그래서 제가 포팅한 as3용도 VBR MP3의 재생시간을 잘 구해옵니다^^

  3. 2008.12.11 15:43  댓글주소  수정/삭제  댓글쓰기

    비밀댓글입니다

    • 머드초보 2008.12.12 02:23  댓글주소  수정/삭제

      안녕하세요~
      혹시....프로젝트 이름이 MP3Header가 아니신지?
      아니라면MP3Header.as에 있는 package이름이 해당 폴더에 정확히 있는지가 중요합니다.
      지금 파일에는 rtplayer.util이라고 되어있는데, 만약 이 클래스파일이 src 바로 아래 있다면 rtplayer.util을 지워야합니다.
      음...안되시면 다시 또 연락주세요 ^^

  4. air어려워 2009.02.17 09:21  댓글주소  수정/삭제  댓글쓰기

    본문과 관계없지만
    에어를 윈도우창이 아닌 웹브라우저나~~ flex등에서 호출해서 사용할 수 있는 건가요?
    플렉스로 로컬파일 경로가져오는 부분을 찾다가 에어를 사용해서 해결했다기에 검색하다 보니 여기까지 오게 되었네요~~~

    • 머드초보 2009.02.18 20:40  댓글주소  수정/삭제

      안녕하세요!
      에어는 데스크톱에서 돌아가는 애플리케이션입니다. Flex에서 호출하고 그런 것이 아닙니다. Flex를 이용해서 에어애플리케이션을 만들 수 있죠.
      로컬파일 접근은 Flex에서 할 수 없습니다. Flex에서 특정파일을 선택하면 가능하지만, 임의로 타 컴퓨터에 있는 파일을 접근할 순 없습니다^^