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로 녹음하시면 범용성이 높은 오디오 파일이 됩니다.