HiBiKi Radio Station의 m3u8 스트리밍 라디오 다운법

정보 이야기 2015. 11. 16. 05:44

HiBiKi Radio Station이 11월 9일에 대대적인 리뉴얼을 통해 HLS기반의 라디오 스트리밍을 개시했습니다.

주말에 다운로드하려다가 갑작스런 변경으로 인해 저처럼 혼란을 겪고 계신분을 위해 녹음법을 작성합니다.

HLS(HTTP Live Streaming)에 대해 자세히 알고 싶은 분은 이 링크를 통해 살펴보시길 바랍니다.

 

URL Snooper를 통해 라디오를 청취해보면 M3U8파일이 존재함을 알 수 있습니다.

M3U8 포맷은 단순한 멀티미디어 플레이리스트 파일(즉, 텍스트)입니다.

대표적인 멀티미디어 플레이리스트 파일에는 M3U, ASX, PLS 등이 있습니다.

M3U 파일의 내용을 UTF-8로 인코딩한 것이 M3U8 파일입니다.

 

원펀맨의 라디오를 재생하면 다음 주소의 M3U8 플레이리스트가 재생됩니다.

위 파일을 저장해서 메모장으로 열어보면 아래와 같은 구조로 되어있습니다.

(UTF-8로 인코딩 되어 있기때문에 메모장에서는 줄바꿈 표시가 이상한 문자로 표시됩니다.)

 

#EXTM3U
#EXT-X-VERSION:3
#EXT-X-MEDIA-SEQUENCE:0
#EXT-X-ALLOW-CACHE:YES
#EXT-X-TARGETDURATION:6
#EXT-X-KEY:METHOD=AES-128,URI="https://vms-api.hibiki-radio.jp/api/v1/videos/datakey?kid=KDHuDElNG5LL6RBCdCcAzA%3D%3D",IV=0x01d0389ded8506aeb81f443cced72287
#EXTINF:5.015511,
ts_audio_00000.ts
#EXTINF:4.992278,
ts_audio_00001.ts

 

(중략)


#EXTINF:5.015500,
ts_audio_00445.ts
#EXTINF:1.532511,
ts_audio_00446.ts
#EXT-X-ENDLIST

 

라디오는 ts_audio_00000.ts 부터 ts_audio_00446.ts 까지 총 447개의 파일로 구성된 것을 알 수 있습니다.

각 파일의 재생시간은 약 5초 정도로 되어있고, 이는 즉 라디오가 약 37분짜리라는 것을 의미합니다.

참고로 AES-128로 암호화되어 있어서 각각의 파일만 받아도 재생이 되지 않습니다.

 

 

서론이 너무 길었습니다. 시작합니다.

준비물

1. FFMPEG  (Zeranoe FFMPEG)

   (윈도우즈 시스템의 32비트/64비트를 확인해서 Static버전으로 다운로드할 것)

2. 파이어폭스 브라우저 (모질라 재단) 설치

 

 

이제부터 본격적으로 라디오를 녹음하겠습니다.

 

1. C:\ffmpeg 폴더를 만듭니다. 

2. 아까 다운받은 FFMPEG를 압축해제합니다. 압축을 푼 폴더로 들어갑니다.

3. 그 중에서 bin 폴더에 있는 ffmepg.exe를 1에서 만든 C:\ffmpeg로 이동합니다.

4. 명령 프롬프트(CMD)를 실행합니다. (시작 > 보조프로그램 에 있습니다.)

5. C:\ffmpeg로 진입합니다. (아래와 같이 명령어를 입력합니다.)

Microsoft Windows [Version 6.1.7601]
Copyright (c) 2009 Microsoft Corporation. All rights reserved.

 

C:\Windows\system32>cd/

 

C:\>cd ffmpeg

 

C:\ffmpeg>

 

 

6. 파이어폭스를 실행하고 히비키 라디오 스테이션으로 이동합니다.

7. 청취하고자 하는 라디오를 선택합니다. 여기서는 원펀맨 라디오를 예로 들겠습니다.

8. 키보드의 F12 버튼을 누릅니다. 그러면 페이지 하단에 개발자 도구가 실행됩니다.

9. 개발자 도구의 윗 부분을 보면 검사기 옆에 콘솔이 있습니다. 콘솔 탭을 클릭합니다.

10. 콘솔탭 아래에 네트워크(NCSS  JS  보안(U)  로깅(L)  모두 지우기(R) 가 있습니다.

11. 모두 지우기(R)JS건들지 마시고 !!!다른 나머지!!!를 체크해제합니다.

     네트워크(NCSS  JS  보안(U)  로깅(L)  모두 지우기(R) <- 이런 식으로 나타납니다.

 

12. 그러면 아래와 비슷한 오류가 나타납니다.

mutating the [[Prototype]] of an object will cause your code to run very slowly; instead create the object with the correct initial [[Prototype]] value using Object.create

logica-player.min.js:16:8879


"application/vnd.apple.mpegUrl"로 지정된 "type" 속성은 기술 지원하지 않습니다. 미디어 https://vms-api.hibiki-radio.jp/api/v1/videos/playlist.m3u8?token=블라블라&vms_video_id=숫자&user_id=-1를 읽을 수 없습니다.

hibiki-radio.jp

 

자원 후보의 읽기가 모두 실패했습니다.미디어의 재생을 중지합니다.

hibiki-radio.jp


"application/vnd.apple.mpegUrl"로 지정된 "type" 속성은 기술 지원하지 않습니다. 미디어 https://vms-api.hibiki-radio.jp/api/v1/videos/playlist.m3u8?token=블라블라&vms_video_id=숫자&user_id=-1를 읽을 수 없습니다.

detail

 

자원 후보의 읽기가 모두 실패했습니다.미디어의 재생을 중지합니다.

detail

 

13. 여기서 detail 이 표시된 줄(row)의 미디어 주소를 복사합니다.

     (hibiki-radio.jp 줄의 미디어 주소는 오늘의 혼잣말 코너의 주소입니다.)

     (오늘의 혼잣말은 다른 라디오에서도 계속 나타나므로 라디오의 숫자를 기억해 두시고 녹음할 때 제외하시면 됩니다.)

 

 

14. 명령 프롬프트(5번 단계)에 아래의 명령어를 입력합니다.

C:\ffmpeg>ffmpeg -i "미디어 주소" -c copy output.ts

 

15. 아래와 같이 마지막에 나타나면 녹음이 성공한 것입니다.

size=   39393kB time=00:37:11.55 bitrate= 144.6kbits/s
video:0kB audio:34868kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 12.976306%


C:\ffmpeg> 

 

16. 녹음된 라디오 파일은 C:\ffmpeg에 output.ts 파일로 존재합니다.

 

ps. 심화 버전 (인덱싱을 위한 m4a 인코딩) <- 14번 대신 사용하시면 됩니다.

C:\ffmpeg>ffmpeg -i "미디어 주소" -acodec copy -bsf:a aac_adtstoasc -c copy output.m4a

m4a로 녹음하시면 범용성이 높은 오디오 파일이 됩니다.

HiBiKi Radio Station의 새로운 RTMP서버 내 라디오 파일 다운법 (2013년)

정보 이야기 2013. 2. 4. 03:49
HiBiKi Radio Station의 RTMP서버가 또다시 변경되었습니다.

게다가 오디오 소스가 기존 MP3에서 AAC로 변경되었습니다.

주말에 몰아서 녹음하는데 조금 충격적입니다.

참고로 AAC는 MP4 동영상 컨테이너에서 음성소스로 많이 사용됩니다.

MP3에 비하여 압축시 손실이 적어 많이 선호합니다만... 비트레이트가 깡패라고...

통상의 40분짜리 라디오 파일 기준으로 기존 고정비트레이트(CBR) 96kbps MP3의 경우 28MB이던 것을, AAC로 변경하면서 가변비트레이트(VBR) 18MB로 대폭 줄여 버렸습니다.

아무리 가변이라도 18MB의 용량은 고정일 경우 고작해야 64kbps정도 밖에 되지 않습니다. 즉 64kbps를 중심으로 왔다갔다 했다는 것이므로 96kbps의 MP3가 더 낫다고 할 수 있습니다.

그러므로 RTMPDUMP로 받는 AAC파일과 상세페이지에서 제공하는 WMA파일은 이제 큰 차이가 없기 때문에 범용성 측면에서는 WMA파일을 받는 것이 나은 선택일 수 있습니다.

어쨋든 그럼에도 불구하고 AAC를 받고 싶은 분이 있을 수 있기 때문에 글을 작성해 둡니다.

 

--추가--

2월 7일경부터 WMA파일의 비트레이트가 96kbps로 변경되고 AAC파일의 비트레이트도 비슷한 수준으로 변경되었습니다.

범용성을 고려하면 각 라디오의 상세페이지에서 WMA파일을 받는 것을 추천드립니다.

 

준비물

1. URL Snooper (다운로드) / (설치법 : 마이폴더)
2. RTMP Dump (첨부파일) : 첨부파일 사용을 권장합니다. (rtmpdump-2.4-windows.zip)

 

기존 녹음 방법과 비교해 크게 달라진 점은 없습니다.

1. URL Snooper의 사용법은 RTMPT 프로토콜의 미디어 파일 다운법 (HiBiKi Radio Station)을 참고바랍니다.

 

2. 소드아트 온에어의 XML주소를 URL Snooper를 사용해 추출하여 인터넷 익스플로러로 열어보면 아래와 같습니다.

rtmpe skupqori.fcod.llnwd.net a7125/e1

( ゚Д゚) 뭐야! 어쩌라구!

하지만 실제로 저렇게 코딩된 것은 아닙니다.

침착하게 인터넷 익스플로러로 보지 않고 다른 이름으로 저장(Ctrl + S)받아서 XML파일을 메모장으로 열어보면 아래와 같습니다.

<data>
 <protocol>rtmpe</protocol>
 <domain>skupqori.fcod.llnwd.net</domain>
 <dir>a7125/e1</dir>
 <channel type="main">
  <flv>mp4:f/uliza2/910/130129_sao_130129_sao-fl.mp4?di=910&si=609&pi=2806&gi=6493&gc=2&bi=34167&bc=sao&ei=334455&ec=130129_sao&vi=1808240&vc=130129_sao-fl&msi=516&mc=&ni=1625</flv>
  <thumbnail>http://image.hibiki-radio.jp/uploads/radio_program/flash_image/f85af7dc26bdef7617361106679106518ccd8227.jpg</thumbnail>
 </channel>
</data>

 

rtmpe : RTMPE 프로토콜임을 알 수 있습니다.
skupqori.fcod.llnwd.net : 이번에 새로 바뀐 RTMP서버의 도메인입니다.
a7125/e1 : 서버내에서 미디어 파일이 들어 있는 하위 디렉토리입니다.
f/uliza2/910/130129_sao_130129_sao-fl.mp4 : 실제 mp4파일의 위치입니다.

이걸 합치면 우리가 원하는 미디어의 주소가 됩니다.
rtmpe://skupqori.fcod.llnwd.net/a7125/e1/f/uliza2/910/130129_sao_130129_sao-fl.mp4

 

3. 명령 프롬프트를 실행하고 RTMP Dump를 설치한 폴더에 진입합니다. (필자는 C:\rtmpdump)

 

 

4. 미디어 주소를 알아냈으니 명령어를 입력합니다.

<기본>
rtmpdump -r "미디어주소" -o "저장할 이름"
※미디어 주소 : 위의 2 에서 알아낸 주소입니다.

※저장할 이름 : 저장할 파일이름을 지정합니다. 확장자는 mp4입니다.

<예제>
rtmpdump -r "rtmpe://skupqori.fcod.llnwd.net/a7125/e1/f/uliza2/910/130129_sao_130129_sao-fl.mp4" -o "sao.mp4"

 

5. 정상적으로 파일이 저장됩니다.

 

 

6. FLV파일에서 음성만 따로 분리하고 싶은 분은 RTMP 프로토콜 미디어 파일 다운법 하단을 참조해 주세요.

HiBiKi Radio Station의 새로운 RTMP서버 내 라디오 파일 다운법

정보 이야기 2011. 5. 30. 03:21
매주 일요일, 1주일치 라디오를 다운로드하던 도중에 평상시와 달리 다운되지 않는 곳이 발견되었습니다.
HiBiKi Radio Station입니다.
이전 쓰던 fms.cmfm2.jp서버를 대체하여 fms.hibiki-radio.info서버를 새로이 사용해 서버설정이 이전과 달라진 것 같습니다. 원래 이쪽 분야는 전혀 무지한 관계로 단언할 수는 없습니다만, 아무래도 일정 버퍼 이상을 서버에 요구하면 그 요청회선을 잘라버리는 구조인 것 같습니다.

기본적인 다운로드 방법은 RTMPT 프로토콜의 미디어 파일 다운법 (HiBiKi Radio Station)과 다르지 않습니다.

제 블로그는 거의 관리하지 않습니다. 퍼가시는 건 상관없지만 출처는 밝혀주시면 감사하겠습니다.

준비물
1. URL Snooper (다운로드) / (설치법 : 마이폴더)
2. RTMP Dump (다운로드) / (추천버전) : 추천버전 사용을 권장합니다. (rtmpdump-2.3-windows.zip)

1. URL Snooper의 사용법은 RTMPT 프로토콜의 미디어 파일 다운법 (HiBiKi Radio Station)을 참고바랍니다.
   (※기존 fms.cmfm2.jp서버를 사용하는 라디오는 위의 방법으로 다운 가능합니다.)

2. 꽃피는 이로하의 XML주소를 URL Snooper를 사용해 추출하여 열어보면 아래와 같습니다.

  <?xml version="1.0"?>
-<data>
  <protocol>rtmpt</protocol>
  <domain>fms.hibiki-radio.info</domain>
  <dir>hibiki1004</dir>
-<channel type="main">
<flv>8_0_411</flv>
<thumbnail>http://블라블라블라.jpg</thumbnail>
  </channel>
  </data>

rtmpt : RTMPT 프로토콜임을 알 수 있습니다.
fms.hibiki-radio.info : 이번에 새로 바뀐 RTMP서버의 도메인입니다.
hibiki1004 : 서버내에서 미디어 파일이 들어 있는 하위 디렉토리입니다.
8_0_411 : 실제 FLV파일입니다.

이걸 합치면 우리가 원하는 미디어의 주소가 됩니다.
rtmpt://fms.hibiki-radio.info/hibiki1004/8_0_411

3. 명령 프롬프트를 실행하고 RTMP Dump를 설치한 폴더에 진입합니다. (필자는 C:\rtmpdump)


RTMP Dump의 도움말을 살펴봅시다.
rtmpdump -h

출력되는 명령어를 잘 살펴보면 아래와 같은 명령어가 보입니다.

바로 이 명령어가 이번 RTMP Dump을 이용한 HiBiKi Radio 다운법의 핵심입니다.
rtmpdump -v
이 명령어는 실시간 재생되는 미디어를 저장할 수 있게 해주는 옵션입니다.
버퍼를 요구하는 다운로드가 실패한다면 스트리밍으로 다운로드 하면 되는 것입니다.
실제로 웹상에서의 라디오 재생은 아무런 문제가 없다는 점이 이를 뒷받힘해 줍니다.
문제는 실시간이기 때문에 재생되는 시간만큼 다운로드 시간이 걸린다는 점입니다. ㅠㅠ
여기에 대해서는 해결책이 아직까지는 없습니다. (나중에도 없을 것 같습니다.)

4. 지금까지의 내용을 토대로 명령어를 입력합니다. (주의점이 있으니 체크!)
<기본>
rtmpdump -r "미디어주소" -o "저장할 이름" -v
※미디어 주소 : 위의 2 에서 알아낸 주소입니다. (주의: "rtmpt://"가 아닌 "rtmp://"로 넣습니다.
※저장할 이름 : 저장할 파일이름을 지정합니다. 확장자는 flv입니다.

<예제>
rtmpdump -r "rtmp://fms.hibiki-radio.info/hibiki1004/8_0_411" -o "iroha.flv" -v
                   rtmpt://fms.hibiki-radio.info/hibiki1004/8_0_411 이렇게 쓰지 않도록 주의!

5. 진행률이 올라가도 멈추지 않고 파일이 저장됩니다. (출력형식이 예전과 조금 다릅니다.)


6. FLV파일에서 음성만 따로 분리하고 싶은 분은 RTMP 프로토콜 미디어 파일 다운법 하단을 참조해 주세요.

RTMPT 프로토콜의 미디어 파일 다운법 (HiBiKi Radio Station)

정보 이야기 2010. 5. 31. 15:32
 HiBiKi Radio Station이 사이트 개편에 들어가더니 라디오 스트리밍 주소를 RTMPT로 이전했습니다.
 기본적으로 이전 작성한 RTMP 프로토콜의 미디어 파일 다운법과 별 차이없습니다만.. 일단 작성해둡니다.
 기본구조는 하나의 RTMP터널을 두고 로드된 XML의 미디어 번호를 통해 미디어를 불러오는 방식입니다.

준비물
1. URL Snooper (다운로드) / (설치법 : 마이폴더)
2. RTMP Dump (다운로드) / (추천버전)

1. URL Snooper를 실행합니다.

2. 추출하려는 미디어를 재생하기 전에 Sniff Network를 클릭합니다. (패킷검사를 시작합니다.)

3. 추출하려는 미디어를 선택합니다. (여기서는 Angel Beats!를 선택했습니다.)

4. 추출된 주소 중 필요한 주소는 다음의 2가지 입니다.
XML 주소 : 미디어 번호를 알기 위해 필요합니다.
<예제> http://image.hibiki-radio.jp/uploads/data/channel/ab_sss/89.xml?1275283342802
RTMPT 주소 : 미디어를 불러오기 위한 기본 터미널 주소입니다.
<예제> rtmpt://fms.cmfm2.jp:80/hibiki1004

5. 위의 4에서 추출한 XML주소에서 미디어 번호를 파악하여 전체 미디어 주소를 완성합니다.
전체 미디어 주소 = RTMPT 주소 / XML 주소에서 파악한 미디어 번호

<예제> 위의 4를 예로 들면, rtmpt://fms.cmfm2.jp:80/hibiki1004 에 미디어 번호 44_0_397 를 합칩니다.
rtmpt://fms.cmfm2.jp:80/hibiki1004/44_0_397

6. 명령 프롬프트를 실행하고 RTMP Dump를 설치한 폴더에 진입합니다. (필자는 C:\rtmpdump)

7. 다음과 같이 명령어를 입력합니다. 그러면 FLV파일이 저장되기 시작합니다.
<기본>
rtmpdump -r "미디어주소" -o "저장할 이름"
※미디어 주소 : 위의 5 에서 복사한 주소를 붙여넣습니다.
※저장할 이름 : 저장할 파일이름을 지정합니다. 확장자는 flv입니다.

<예제>
rtmpdump -r "rtmpt://fms.cmfm2.jp:80/hibiki1004/44_0_397" -o "Angel_09.flv"

8. RTMP Dump를 설치한 폴더에 방금 전 지정한 이름대로 파일이 저장되었습니다.

9. FLV파일에서 음성만 따로 분리하고 싶은 분은 RTMP 프로토콜 미디어 파일 다운법 하단을 참조해 주세요.