2015年12月7日月曜日

GnuTLSを使ったradiko録音環境の構築

radikoは、誰でも知っているであろう、インターネットラジオ放送の一つである。これを録音する方法というのもあって、ググればわらわらと出てくる。

録音に必要なのは、それ用に作られたシェルスクリプトと、そのシェルスクリプトで使われるUNIXコマンドラインツールである。
Macであれば、Homebrewを使えばツールは簡単に揃う。しかし、今更Homebrewを使った解説をするつもりはない。理由は簡単で、筆者はHomebrewを使っていないからだ。

シェルスクリプトの方は、幾つかあるが、筆者はザリガニが見ていたさんのファンなので、そちらのrtmpdumpでradikoにアクセスする手順という記事にあるものを使わせて戴くことにする。

UNIXコマンドラインツールは、以下をインストールする。(このために、それぞれの依存ライブラリもインストールする)

  • rtmpdump
  • wget
  • swftools
  • ffmpeg

rtmpdumpとwgetではGnuTLSを暗号化(SSL)接続に用いる。
従来のこの手の記事ではOpenSSLを用いていたが、EL Capitan以降で使えるXcode 7.x以降ではOpenSSLはサポートされない。ライセンスの問題もあるので、OpenSSLではなくGnuTLSを用いる。

以下、順を追って説明する。

  • git
    rtmpdumpのソースコードはgitで管理されているので、こちらからダウンロードしてインストールする。
  • pkg-config
    いろいろなツールをインストールするときの依存関係などを記述したファイルを管理する。
    curl -LO https://pkg-config.freedesktop.org/releases/pkg-config-0.29.1.tar.gz
    cd pkg-config-0.29.1
    ./configure --with-pc-path=/usr/local/lib/pkgconfig --with-internal-glib
    make -j 4 && sudo make install
    
  • xz
    圧縮アルゴリズムである。インストールするファイルを解凍するために使う。(Yosemite以降では不要
    curl -LO http://tukaani.org/xz/xz-5.2.2.tar.bz2
    tar xf xz-5.2.2.tar.bz2
    cd xz-5.2.2
    ./configure
    make -j 4 && sudo make install
    
  • zlib
    圧縮アルゴリズムである。gnutls, rtmpdump, wgetで使用する。
    curl -LO http://zlib.net/zlib-1.2.8.tar.gz
    tar xf zlib-1.2.8.tar.gz
    cd zlib-1.2.8
    ./configure
    make test
    sudo make install
    
  • libgmp
    gnutlsの依存ライブラリである。
    curl -LO https://gmplib.org/download/gmp/gmp-6.1.1.tar.xz
    tar xf gmp-6.1.1.tar.xz
    cd gmp-6.1.1
    ./configure
    make -j 4 && sudo make install
    make check
    
  • nettle
    gnutlsの依存ライブラリである。
    curl -LO https://ftp.gnu.org/gnu/nettle/nettle-3.3.tar.gz
    tar xf nettle-3.3.tar.gz
    cd nettle-3.3
    ./configure --with-include-path=/usr/local/include --with-lib-path=/usr/local/lib --disable-openssl
    make -j 4 && sudo make install
    
  • gnutls
    rtmpdumpとwgetで暗号化(SSL)接続時に使用する依存ツールである。
    curl -LO ftp://ftp.gnutls.org/gcrypt/gnutls/v3.5/gnutls-3.5.4.tar.xz
    tar xf gnutls-3.5.4.tar.xz
    cd gnutls-3.5.4
    env LDFLAGS=-L/usr/local/lib LIBS=-lgmp \
    ./configure --without-p11-kit --disable-cxx --with-included-libtasn1 \
    --disable-doc --disable-gtk-doc-html \
    --with-unbound-root-key-file=/etc/unbound/root.key
    make -j 4 && sudo make install
    
    gmp、nettle、gnutlsのインストール方法は、こちらのサイトを参考にさせて戴いた。
  • rtmpdump
    Real Time Messaging Protocolを取り扱うツールである。
    KSV氏によるパッチファイル
    こちらからrtmpdump-2.4.zipをダウンロード、解凍して、Patch.diffを取り出す。(gitでソースコードを入手後、そのディレクトリに入れる)
    このパッチは、rtmpdumpがインストールされていない状態で適用すること。
    git clone git://git.ffmpeg.org/rtmpdump
    cd rtmpdump
    patch -p0 -i Patch.diff
    make SYS=darwin CRYPTO=GNUTLS SHARED= XCFLAGS="-I/usr/local/include" XLDFLAGS="-L//usr/local/lib"
    sudo make install CRYPTO=GNUTLS SHARED=
    
  • wget
    コマンドラインでWebデータを取得するツールである。
    curl -LO http://ftp.gnu.org/gnu/wget/wget-1.18.tar.xz
    tar xf wget-1.18.tar.xz
    cd wget-1.18
    env LDFLAGS=-L/usr/local/lib LIBS=-lgmp  ./configure
    make -j 4 && sudo make install
    
  • swftools
    画像とSWFを相互変換するらしい。本来幾つかの依存ライブラリがあるが、今回は不要なので入れない。
    curl -LO http://www.swftools.org/swftools-0.9.2.tar.gz
    tar xf swftools-0.9.2.tar.gz
    cd swftools-0.9.2
    LDFLAGS="-L/usr/local/lib" CPPFLAGS="-I/usr/local/include/ -I/usr/local/include/lame" ./configure --disable-lame
    make -j 4 && sudo make install
    
    swftoolsのconfigureフラグはこちらのサイトを参考にさせて戴いた。
  • ffmpeg
    ffmpegは、当ブログにコンパイルガイドがあるので、ここでは詳細は説明しない。
    (シェルスクリプトで用いられる機能はストリームコピーなので、極端な話外部ライブラリは不要である。ただし、筆者はこのガイドに沿ったものをインストールしている)

以上でツールは揃った。あとはrtmpdumpでradikoにアクセスする手順にあるシェルスクリプトを起動すれば録音できる。例えばFM横浜を10分録音するならば、次の通りである。

sh Path/To/rec_radiko.sh -t 600 YFM

以上。

2015.12.13更新

  1. gmpをlibgmpという呼び名に修正(内容は変更なし)
  2. wgetのバージョンアップ(1.17 → 1.17.1)
  3. rec_radiko.shの使用例で、放送局名と録音時間の順序が逆だったので修正

2016.10.2更新
libgmp(6.1.0 → 6.1.1), nettle(3.1.1 → 3.3), gnutls(3.4.9 → 3.5.4), wget(1.17.1 → 1.18)のバージョンアップ。

0 件のコメント :

コメントを投稿