雑なやつ

レベルを上げて技術で殴りたい

VPS を式年遷宮する その5 超A&G+の録画環境構築

概要

文化放送インターネットラジオである 超A&G+ (以下AGQR) にてリアルタイム配信されている番組を自動録画する環境を構築した。
先人が公開しているソースコードを Fork し、自身の環境や使い勝手に合わせて改変した。
その際の作業内容を記述する。

構築する目的

AGQR にはタイムシフトなどの機能は存在せず基本的にリアルタイム視聴のみなので、 後日好きなタイミングで再生が出来るようサーバ上で録画出来る環境が欲しかった。

環境

サーバ

ローカル

  • macOS 10.15.6 Catalina
  • iTerm2

AGQR 録画の OSS 紹介

AGQR の録音ツールは先人が OSS として公開している物が存在しているので、その中で気になった物を下記に示します。

ybenjo/agqr.rb

https://gist.github.com/ybenjo/9904543
Ruby 製の OSS で、同じディレクトリに設置した schedule.yaml から録画リストを読み込んで実行する。
今回は このリポジトリを Fork させていただきました。

ushironoko/a-Go

github.com
Golang で実装された OSS
バイナリが配布されているので、RTMPDump 導入済みの環境で直ぐに利用出来る。
自動録画にはタスクスケジューラや crontab 等が必要。

Fork したコードについて

Fork 先リポジトリは下記リンクを参照。

y4shiro/agqr.rb

Fork 元との差分は下記の通り。

  • 各パッケージのパスを自環境に合わせて変更
  • 音声ファイルの保存先を実行ファイルと同じディレクトリに変更
  • /flv /m4a ディレクトリが作成できるよう修正
  • 配信 URL を現行の物に修正
  • 音声ファイルの出力フォーマットを mp3 から m4a へ変更

配信 URL は不定期に変更されるため結構曲者です。
AGQR の録音環境を構築する際には URL が接続可能か確認しましょう。

作業手順

必要パッケージ導入

スクリプト実行に必要なパッケージを導入します。
私の環境では前回の Radiko 録音環境構築時に導入済みでした。

$ sudo apt install rtmpdump
$ sudo apt install ffmpeg

Ruby 導入

サーバに Ruby を導入していなかったので、下記記事を参考に rbenv をインストールして環境構築しました。

qiita.com

スクリプト設置と実行

スクリプトを設置するディレクト/agqrを作成し、スクリプトをGist から Clone します。

$ mkdir agqr
$ cd agqr
$ git clone https://gist.github.com/y4shiro/8f3093c7db7b34e0e83b525979fbe0ec .

crontab に下記のタスクを追加しました。
毎時 29/59 分に agqr.rb を実行し、schedule.yaml に放送直前の番組が存在する場合は録画を開始します。
初回実行時にはデータ保存用のディレクトdata/flv / data/m4a が作成されます。

29,59 * * * * sleep 55; /home/<username>/.rbenv/shims/ruby /home/<username>/agqr/agqr.rb

私が実際に運用している schedule.yaml の一部を例に示します。
ファイル名 / 曜日 / 時刻 / 番組の長さ(分) を記述してください。

- title: hidakakuma
  wday: 火
  time: '23:00'
  length: 30
- title: toshitai
  wday: 火
  time: '23:30'
  length: 30

感想など

AGQR の配信 URL は不定期に変更されるので、URL の変更検知を行う仕組みが必要だと感じた。
今回の作業で録音周りは一通り移行し終えたので、次はドメインや証明書関連に着手する予定です。