간편한 무선 서버

※ 추적
라즈파의 SD를 교체했기 때문에 당분간 행운은 없지만 라디고의 버그 같은데?중 rec-live 은 정상적인 동작을 할 수 없는 것 같습니다.이 기사를 쓸 때의 검증에서 순조롭게 느껴졌다. 홍보나 다른 방법을 모색할 계획이다.
상응하는 issue 여기 = > https://github.com/yyoshiki41/radigo/issues/45
이것은 DMM.com Advent Calendar 2018 24일째 보도입니다.
감사합니다.DMM.com 영상송신사업부@_tinoji.
여러분, 크리스마스 이브는 어떻게 지냈어요?나는 당연히 AM 라디오를 듣고 있다.신사로서 당연하다
며칠 전, 나는 라즈베리 파이 3 모델 B에 무선 서버를 설치했는데, 그것은 집에서만 에어컨을 켜거나 끄는 장식이다.나는 그때의 여러 가지를 쓰고 싶다.투덜대면 메시지가 쏟아지기 때문에 이제야 이런 느낌이 든다는 것은 부인할 수 없다.다른 방법과 다르게 한 것이니 용서해 주십시오.
※ 물론 개인 사용 범위를 초과한 방송 녹음은 불법입니다.그냥 혼자 즐기기 위해서 쓰는 거예요.

tl;dr


  • radigo라는 도구를 사용하여 기록합니다radiko.
  • 케이스 스크립트와 크론으로 예약 녹음을 진행한다.
  • RSS를 생성하여 적절한 웹 서버를 RasPay에 구축하고 Podcast를 통해 배포합니다.
  • 느낌이 좋아요!
  • radiko 좋죠.


    라디오는 어떻게 들으셨나요?
    뭐야, 라디오 들고 듣고 있어?아, 지금은 정말 보기 드물다.거기 너?어?아이고, 그 일은 이제 그만 불법으로 올린 걸 듣고 있는 당신, 이 기사를 보고 바로 치즈파이를 사러 가세요.아저씨랑 약속했어요.
    그래, 지금은 거의 레이디코에서 듣는 사람들이지.radiko에는 시간의 자유라는 기능이 있습니다. 재생 일주일 이내면 언제든지 들을 수 있습니다. 고맙지만 일주일이 지나면 들을 수 없습니다. 듣기 시작하면청취 가능 기간 등 제한이 있어 고통스럽습니다.방송을 좋아하는 사람은 같은 생물을 여러 번 듣고 싶어한다.

    선구자


    그래서 녹음하고 싶어요.가볍게 꼬르륵 꼬르륵, 라디코에서 녹음하는 시도가 성행하고, 라즈베리 파이를 사용한다는 보도도 나왔다.

  • Radiko를 Raspberry Pi3로 녹음하고 재생합니다.
  • 케이스 스크립트를 쓰고 녹음하는 방법

  • Raspberry Pi로 radiko 녹화, Podcast로 보내기(구축편)

  • radicast 도구를 Podcast 배포하는 방법
  • radicast는 GitHub에서 공개하지만, 거기radiko의 태그!오, 클릭해 보니 데이터 라이브러리가radicast의 두 배의 스타 수를 얻었어요.바로 radigo 입니다.꼬꼬면저자의 Qiita 보도도 찾았다.
    라디오로 녹음과 팟캐스트 배신을 했다는 보도가 없어서 그걸 하기로 했어요.
    내 경우 거의 팟캐스트에 녹음된 파일(또는 자동 다운로드)을 미리 다운로드하기 때문에 LAN 내에서 라즈파에 연결하면 된다.

    radigo 설치


    그럼 여기서부터 가장 중요한 구축 순서입니다.
    README에도 Docker 이미지를 사용하는 설치 방법이 적혀 있는데, 이번에는 Docker를 사용하지 않고 시도해 보겠습니다.

    go 설치


    Rapberry Pi의 CPU 아키텍처는 ARM이므로 README에 따라 설치할 수 없습니다.make에 설치할 수 있고dep, 릴리즈에는 ARM용 바이너리 파일이 없습니다.그래서 Gogo get를 설치합니다.
    Go도 구조에 맞는 물건을 설치해야 합니다.나의 라즈파 구조는 armv7l 이다.
    $ uname -m
    armv7l
    
    https://golang.org/dl/를 보세요. armv6l 2진법이 있어서 문제 없이 이동했습니다.wget에서 경로를 통해 확장정부 의 지시 대로을 가져옵니다.

    radigo 설치

    $ go get github.com/yyoshiki41/radigo/cmd/radigo/...
    
    설치radigo도 경로를 통과합니다.
    .bash_profile
    export PATH=$PATH:$GOPATH/bin
    

    보조 도구 설치


    필요 ffmpegrtmpdumprtmpdump 에서 진입하고 apt-get ARM 구축도 필요합니다.여기에서 다운로드했습니다.ffmpegarmhf,armel만 있으면 됩니다.
    $ wget https://johnvansickle.com/ffmpeg/releases/ffmpeg-release-armhf-static.tar.xz
    
    바이너리 파일을 경로가 있는 위치에 배치하려면 적절한 확장armhf을 수행합니다.

    동작 확인


    현장 방송을 녹음해 보세요.다음 명령을 실행하여 ffmpeg 디렉토리에 AAC 파일을 생성하면 됩니다.
    $ radigo rec-live -id=LFR -t=60
    Now downloading..
    +------------+---------------+
    | STATION ID | DURATION(SEC) |
    +------------+---------------+
    | LFR        |            60 |
    +------------+---------------+
    - Completed!
    /tmp/output/20181222232808-LFR.aac
    

    네트워크 서버 구축


    뭐든지 가능하니까 네트워크 서버를 만들어야 돼요.Nginx를 선택했습니다.특별히 고려하지 말고 기본 설정의 시작을 유지하십시오.

    RSS 파일 생성


    Podcast에서 배포하려면 오디오 파일뿐만 아니라 RSS 파일도 필요합니다.Podcast 응용 프로그램 등을 간단히 발표하면 좋은 느낌을 주고 RSS 파일을 만들지만 이번에는 오디오 파일을 직접 만들어야 한다.느낌이 좋은 스크립트가 있으니까 안심하세요.
  • https://gist.github.com/kelan/1659457

  • https://gist.github.com/matchy2/5552631
  • 사용 방법
  • 나는 아래의 AAC 파일을 수정했다.미미 타입을 얻는 곳.에 브랜치만 추가하면 됩니다.또한 루비 스크립트output이므로 루비를 먼저 넣습니다.
    if (/\.mp3$/ =~ item['fname']) then
      mime = 'audio/mp3'
    elsif (/\.aac$/ =~ item['fname']) then
      mime = 'audio/aac'
    else
      mime = 'audio/mp4'
    end
    

    동작 확인

    $ ruby makepodcast.rb Podcastのタイトル ディレクトリURL オーディオ保存ディレクトリ
    
    에서 설명한 대로 해당 매개변수의 값을 수정합니다.디렉터리 URL의 끝에 apt-get를 추가해야 할 것 같습니다./enclosure를 실행하면 파일의 형식과 일치합니다.
    표준 출력일 뿐이므로 실제 사용 시 파일 쓰기 방향을 바꿉니다.
    $ ruby makepodcast.rb title http://192.168.x.x/radio/ /tmp/output/
    <?xml version="1.0" encoding="utf-8"?>
    <rss xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" version="2.0">
      <channel>
        <title>title</title>
        <item>
          <title>20181222235406-LFR</title>
          <enclosure url="http://192.168.x.x/radio/20181222235406-LFR.aac"
                     length="60593"
                     type="audio/aac" />
          <guid isPermaLink="true">http://192.168.x.x/radio/20181222235406-LFR.aac</guid>
          <pubDate>Sat, 22 Dec 2018 23:54:08 +0900</pubDate>
        </item>
      </channel>
    </rss>
    

    제공 테스트


    이제 Podcast에서 배포 테스트를 진행합니다.방금 녹음한 파일을 문서 루트 디렉터리에 놓아서 이런 느낌으로 RSS 파일을 만듭니다.
    $ ruby path/to/file/makepodcast.rb title http://192.168.x.x/test/ /var/www/html/test/ > /var/www/html/test/title.rss
    
    이런 구조.
    $ tree /var/www/html/
    /var/www/html/
    └── test
        ├── 20181222235406-LFR.aac
        └── title.rss
    
    Podcast 응용 프로그램type에서 RSS 파일의 URL을 입력합니다.

    "구독"을 누르면 구독이 끝나면 등록합니다.

    실제 재생으로 만들어진 프로그램의 에피소드, 잘 재생 OK!여기서 오류가 나면 RSS 파일이 이상하다고 생각해요.

    크론으로 녹음 예약


    이러다 수동으로 녹음할 수밖에 없어요.자유시간대라면 ライブラリ>番組>編集>PodcastをURLで追加 중 지정된 시간에 방송이 끝난 프로그램을 간단히 녹화할 수 있지만 귀찮다.녹음 예약 후 자동 녹음하세요.radigo rec로 클래식 음악을 해 보세요.

    케이스 스크립트


    간단한 케이스 스크립트를 작성하면 일련의 절차를 실행하면 된다.현재 상태cron는 보존 목적지를 지정할 수 없기 때문에 일일이 radigo.
    실행mv.
    rec.sh
    #!/bin/bash
    DOC_ROUTE="/var/www/html"
    WORK_DIR="/root/radio"
    HOST_IP=`hostname -I | cut -f1 -d' '` # eth0
    TITLE=$1
    STATION=$2
    DURATION=$3
    TITLE_HOME="${WORK_DIR}/${TITLE}"
    TITLE_DIR="${DOC_ROUTE}/${TITLE}"
    
    # mkdir
    [ ! -e $TITLE_HOME ] && mkdir -p $TITLE_HOME
    [ ! -e $TITLE_DIR ] && mkdir -p $TITLE_DIR
    
    # rec
    cd $TITLE_HOME
    radigo rec-live -id=$STATION -t=$DURATION
    mv $TITLE_HOME/output/*.aac $TITLE_DIR
    
    # make rss file
    ruby $WORK_DIR/makepodcast.rb $TITLE http://$HOST_IP/$TITLE/ $TITLE_DIR > $TITLE_DIR/$TITLE.rss
    

    cron

    $ ./rec.sh タイトル ラジオ局ID 録音時間 이렇게 예약표가 됩니다.앞으로 이것만 만지작거리면 편할 거야.지연을 고려하면 앞뒤로 1분을 완충하는 것이 좋다.
    # オードリーのオールナイトニッポン
    0 1 * * 0 /bin/bash -lc "/root/radio/rec.sh AudreyANN LFR 7200"
    # アルコアンドピースのDCガレージ
    0 0 * * 3 /bin/bash -lc "/root/radio/rec.sh DCGarage TBS 3600"
    
    첫 번째 녹음이 끝난 후 Podcast에 구독을 등록하면 자동으로 매주 다운로드됩니다.
    여기서 마치겠습니다.느낌이 좋아요!여러분도 좋은 방송생활 하세요~

    지원


    약간의 보충의.

    파일 크기


    AAC의 경우 1시간에 20MB 정도입니다.예를 들어 매주 10시간 2시간 동안 프로그램을 녹화하는데 매년 20GB가 넘는다.

    구름 위에서 호스트를 하는 것도 괜찮을까요?


    파일 크기가 커서 라즈파의 SD 카드로 사용하기가 어려울 수 있습니다.물론 아무거나 지우면 되지만 차 번호도 물어보고 싶죠?(라디오 프로그램의 배경 번호를 맞추면 기쁠 거예요. 100만 번이라고 생각해요)
    따라서 저렴한 클라우드 서비스로 접대하는 것이 좋을 것 같다.나는 S3가 타당한 선택이라고 생각한다.적당히 Glacier 아카이브에서 절약하면 저렴하게 제어할 수 있을 것 같아서 Razu 파이의 활용이 한계를 맞이하면 해보고 싶어요~!

    좋은 웹페이지 즐겨찾기