[[diary/Kojima]]

・「らじる☆らじる」録音用スクリプト&rtmpdumpパッケージ

技評のサイトで連載している「玩式草子」で紹介した「らじる☆らじる」をrtmpdump経由でダウンロードするためのスクリプト集。
向こうのサイトではファイルを添付できないので、記事では一部を紹介するだけにして、実際のコードはこちらで公開

- radiru_rec.py : 指定した番組を録音するためのシェルスクリプトを作成し、at コマンドに登録するためのスクリプト

- radiru_noa.py : 録音している番組の情報(出演者や演奏曲目等)をNow On Airのサイトから入手して、~/MP3/radiru_titles.sql3 というデータベースに登録するスクリプト

- radiru_tag.py : ~/MP3/radiru_titles.sql3 から番組情報を取り出して、MP4ファイルのタグ情報として書きこむスクリプト

- radiru_check.py : 予約登録されている番組を調べるためのスクリプト

- radiru_del.py : 登録した予約を取り消すためのスクリプト

これらはPythonのスクリプトなので64ビット/32ビット兼用。手元ではこれらのファイルを/usr/local/bin/にインストールして使っている。

-rtmpdump-2.4-{x86_64,i686}-P3.txz : gitから取ってきたソースコードでビルドし直したrtmpdump。バージョンは2.4のままなものの、共有ライブラリのバージョンがlibrtmp.so.0からlibrtmp.so.1に更新されている。
- 質問;radiru_rec.py について;同時に複数の録音は可能でしょうか?私の環境で試したところでは、どうも出来ない様なのですが。 -- [[darekasan]] &new{2016-01-20 (水) 14:39:51};
- 「同時に複数の録音」というのがよく分からないけど、それぞれ独立したスクリプトが動くので、FMを19時から21時まで録音しつつ、ラジオ第二を20時から30分録音する、みたいな形は問題なくできてるですね。 -- [[kojima]] &new{2016-01-20 (水) 22:11:37};
- 日曜朝のラッシュ、7:20からfm(50分間)、7:30からr2(30分間)、8:05からr1(50分間)、8:10からfm(50分間)でも難なく動いてます。感謝。 -- [[seiouken]] &new{2016-02-08 (月) 10:51:32};
- VPSでも日曜朝のラッシュ(1分間の余裕をみて、8:01まで、8:04から、8:11まで、8:09から、8:59からが3つ)時に難なく動いてます。 VPSはUbuntu14.04LTS(64bit) 、自宅はLubuntu14.04LTS(32bit)。Pythonはいずれも2.7.6。感謝。 -- [[seiouken]] &new{2016-04-11 (月) 17:03:50};
- 
 予約録音について、頻繁に失敗してしまいます。
 原因と対応方法について、アドバイスをいただけますと、助かります。
 ご多忙かとは存じますが、コメントいただけましたら幸いです。
 よろしくお願い申しあげます。
 ◯前提
 ・OS;ubuntu 14.04 LTS(64bit)
 ・ubuntuPCと並行して、Win7PCでも、同様の番組を予約録音している。
  なお、Win7PCではほぼ100%録音できています。
  Win7PCでは、Radikool最新版を利用しています。
 ・今年(2016年)の1月頃には、試しに本プログラムを使わせていただきましたが、
  最近のradikoolの録音不可現象などが発生して以来、毎日の50番組以上の予約録音
  を本プログラムでも同様に実行するようにしています。
 ◯現象
 ・NHKらじるらじるを予約録音しています。
 ・FM、R1、R2を合わせて、毎日ほぼ50番組以上です。
  語学番組4カ国語で、英語は複数の番組。
  クラシックを中心に音楽番組。
  文化、教養番組
  など
 ◯予約時刻の指定
  実験として、期間を2通りやってみています。
  実験1は、2ヶ月以上、毎日。
  実験2は、最近2週間。
 ・実験1;番組の開始時刻
 ・実験2;番組の開始時刻と開始時刻の1分前
      これは、開始時刻を前倒しすれば失敗を防止できるかもしれない
      というねらいから実行しています。
 ◯録音結果
 ・実験1、実験2とも、頻繁に失敗します。
  失敗頻度;実験2の現状について、ここ2日間の実績です。
   22成功、34失敗(11月29日)
   23成功、42失敗(11月28日)
 ・失敗パターン
  (1)ダウンロードサイズが0バイトで、flv形式のまま。
  (2)ダウンロードサイズが数百kbで、m4a形式。
  (3)ダウンロードサイズが1〜数MB程度で、m4a形式。
 ・成功、失敗の傾向(当方の判断を含む)
  (1)早朝のR2の複数の連続する語学15分番組が一部失敗。
  (2)30分以上の番組は失敗する確率が高い。
  (3)ほぼ失敗する番組
     歌謡スクランブル(FM)
     ベストオブクラシック(FM)
     ウィークエンドサンシャイン(FM)
  (4)FMの18時からの夜のプレイリストは失敗する確率が高い。
  (5)R2の文化教養番組は稀にしか失敗しない。
  (6)実験2の場合、1分前の方が失敗率が低いが、失敗も多い。
     両方成功する場合もあるが、両方失敗も頻繁にある。
 ◯まとめ
 ・ubuntu(Linux)系でも、Radikoolの様に予約録音がほぼ成功する手段がほしいのですが、
  いかがでしょうか?
 ・らじるらじる側への接続失敗や録音中の通信エラーなどが発生した場合のリトライ
  などの対応策が必要なのでしょうか?
 ・失敗することがめったに無いRadikoolと何が違うのでしょうか?
 ◯予約内容(一部)
 #!/bin/sh
 ./radiru_rec.py -t "基礎英語10600" -n01 -d -r5 r2 11/28 05:59 16m
 ./radiru_rec.py -t "基礎英語10600" -n01 -d -r5 r2 11/28 06:00 15m
 ./radiru_rec.py -t "基礎英語20615" -n01 -d -r5 r2 11/28 06:14 16m
 ./radiru_rec.py -t "基礎英語20615" -n01 -d -r5 r2 11/28 06:15 15m
 ./radiru_rec.py -t "基礎英語30630" -n01 -d -r5 r2 11/28 06:29 16m
 ./radiru_rec.py -t "基礎英語30630" -n01 -d -r5 r2 11/28 06:30 15m
 ./radiru_rec.py -t "ラジオ英会話0645" -n01 -d -r5 r2 11/28 06:44 16m
 ./radiru_rec.py -t "ラジオ英会話0645" -n01 -d -r5 r2 11/28 06:45 15m
 ./radiru_rec.py -t "まいにちドイツ語0700" -n01 -d -r5 r2 11/28 06:59 16m
 ./radiru_rec.py -t "まいにちドイツ語0700" -n01 -d -r5 r2 11/28 07:00 15m
 ./radiru_rec.py -t "クラシックカフェ(再)0725" -n01 -d -r4 fm 11/28 07:24 116m
 ./radiru_rec.py -t "クラシックカフェ(再)0725" -n01 -d -r4 fm 11/28 07:25 115m
 ./radiru_rec.py -t "まいにちフランス語0730" -n01 -d -r5 r2 11/28 07:29 16m
 ./radiru_rec.py -t "まいにちフランス語0730" -n01 -d -r5 r2 11/28 07:30 15m
 ./radiru_rec.py -t "エンジョイ・シンプル・イングリッシュ" -n01 -d -r5 r2 11/28 08:59 16m
 ./radiru_rec.py -t "エンジョイ・シンプル・イングリッシュ" -n01 -d -r5 r2 11/28 09:00 15m
 ./radiru_rec.py -t "音楽遊覧飛行0920" -n01 -d -r4 fm 11/28 09:19 41m
 ./radiru_rec.py -t "音楽遊覧飛行0920" -n01 -d -r4 fm 11/28 09:20 40m
 ./radiru_rec.py -t "英会話タイムトライアル1215" -n01 -d -r5 r2 11/28 12:14 11m
 ./radiru_rec.py -t "英会話タイムトライアル1215" -n01 -d -r5 r2 11/28 12:15 10m
 ./radiru_rec.py -t "ラジオ英会話1225" -n01 -d -r5 r2 11/28 12:24 16m
 ./radiru_rec.py -t "ラジオ英会話1225" -n01 -d -r5 r2 11/28 12:25 15m
 ./radiru_rec.py -t "入門/実践ビジネス英語1240" -n01 -d -r5 r2 11/28 12:39 16m
 ./radiru_rec.py -t "入門/実践ビジネス英語1240" -n01 -d -r5 r2 11/28 12:40 15m
 ./radiru_rec.py -t "歌謡スクランブル1300" -n01 -d -r6 fm 11/28 12:59 61m
 ./radiru_rec.py -t "歌謡スクランブル1300" -n01 -d -r6 fm 11/28 13:00 60m
 ./radiru_rec.py -t "ワンポイントニュースで英会話1315" -n01 -d -r5 r2 11/28 13:14 6m
 ./radiru_rec.py -t "ワンポイントニュースで英会話1315" -n01 -d -r5 r2 11/28 13:15 5m
 ./radiru_rec.py -t "名曲スケッチ1350" -n01 -d -r5 r2 11/28 13:49 11m
 ./radiru_rec.py -t "名曲スケッチ1350" -n01 -d -r5 r2 11/28 13:50 10m
 ./radiru_rec.py -t "Japan_&_World_Update1400" -n01 -d -r5 r2 11/28 13:59 31m
 ./radiru_rec.py -t "Japan_&_World_Update1400" -n01 -d -r5 r2 11/28 14:00 30m
 ./radiru_rec.py -t "Japan_&_World_Update1410" -n01 -d -r2 r2 12/3 14:09 21m
 ./radiru_rec.py -t "Japan_&_World_Update1410" -n01 -d -r2 r2 12/3 14:10 20m
 ./radiru_rec.py -t "クラシックカフェ1400" -n01 -d -r4 fm 11/28 13:59 116m
 ./radiru_rec.py -t "クラシックカフェ1400" -n01 -d -r4 fm 11/28 14:00 115m
 ./radiru_rec.py -t "まいにちフランス語1430" -n01 -d -r5 r2 11/28 14:29 16m
 ./radiru_rec.py -t "まいにちフランス語1430" -n01 -d -r5 r2 11/28 14:30 15m
 ./radiru_rec.py -t "ワンポイントニュースで英会話1510" -n01 -d -r5 r2 11/28 15:09 6m
 ./radiru_rec.py -t "ワンポイントニュースで英会話1510" -n01 -d -r5 r2 11/28 15:10 5m
 ./radiru_rec.py -t "まいにちドイツ語1515" -n01 -d -r5 r2 11/28 15:14 16m
 ./radiru_rec.py -t "まいにちドイツ語1515" -n01 -d -r5 r2 11/28 15:15 15m
 ./radiru_rec.py -t "ラジオ英会話1545" -n01 -d -r5 r2 11/28 15:44 16m
 ./radiru_rec.py -t "ラジオ英会話1545" -n01 -d -r5 r2 11/28 15:45 15m
 ./radiru_rec.py -t "音の風景1555" -n01 -d -r5 fm 11/28 15:54 6m
 ./radiru_rec.py -t "音の風景1555" -n01 -d -r5 fm 11/28 15:55 5m
 ./radiru_rec.py -t "音楽遊覧飛行1600" -n01 -d -r4 fm 11/28 15:59 41m
 ./radiru_rec.py -t "音楽遊覧飛行1600" -n01 -d -r4 fm 11/28 16:00 40m
 ./radiru_rec.py -t "音の風景1620" -n01 -d -r5 r2 11/28 16:19 6m
 ./radiru_rec.py -t "音の風景1620" -n01 -d -r5 r2 11/28 16:20 5m
 ./radiru_rec.py -t "夜のプレイリスト1800" -n01 -d -r6 fm 11/28 17:59 51m
 ./radiru_rec.py -t "夜のプレイリスト1800" -n01 -d -r6 fm 11/28 18:00 50m
 ./radiru_rec.py -t "基礎英語11845" -n01 -d -r5 r2 11/28 18:44 16m
 ./radiru_rec.py -t "基礎英語11845" -n01 -d -r5 r2 11/28 18:45 15m
 ./radiru_rec.py -t "基礎英語21900" -n01 -d -r5 r2 11/28 18:59 16m
 ./radiru_rec.py -t "基礎英語21900" -n01 -d -r5 r2 11/28 19:00 15m
 ./radiru_rec.py -t "基礎英語31915" -n01 -d -r5 r2 11/28 19:14 16m
 ./radiru_rec.py -t "基礎英語31915" -n01 -d -r5 r2 11/28 19:15 15m
 ./radiru_rec.py -t "ベストオブクラシック1930" -n01 -d -r5 fm 11/28 19:29 101m
 ./radiru_rec.py -t "ベストオブクラシック1930" -n01 -d -r5 fm 11/28 19:30 100m
 -- [[darekasan]] &new{2016-11-29 (火) 21:47:22};
- すみません。直前の書込みにつきまして、名前を入力する前に長い本文をコピペして行毎に改行を挿入しようとしましたところ、名無しで送信されてしまいました。 -- [[darekasan]] &new{2016-11-29 (火) 21:51:02};
- イマイチよく分からないけど、可能性があるとしたらrtmpdumpのバージョンかなぁ? 複数の番組を同時に録音しているならPCの能力が絡んでくるのかも。 -- [[kojima]] &new{2016-11-30 (水) 13:38:48};
- コメントありがとうございます。rtmpdumpのバージョンは、 RTMPDump v2.4 です。 現在は1分ずらして、同時2個録音の設定ですが、来週同時複数はやめて実験してみましょう。過去にやっていて失敗が出ているのですが。皆さんは失敗は例外的にしか発生しないのでしょうか? -- [[darekasan]] &new{2016-11-30 (水) 18:12:23};
- 実はrtmpdump v2.4というのは公式にはreleaseされてなくて、git から最新版を引くしかない状態なので、可能ならgitからソースコードを入手してビルドし直してみるのも手かも。手元でも録音ミスは皆無ではないけど、1%(100回に1回)くらいなんで、通信状況依存かなぁ、、と思っているです。 -- [[kojima]] &new{2016-11-30 (水) 19:41:01};
- 確か、同じrtmpdump 2.4内でlibrtmp.so.0からso.1に上がっていたことがあって、librtmp.so.0だとダメダメだった記憶があるです。 -- [[kojima]] &new{2016-11-30 (水) 21:00:43};
- Kojima様のご助言に従い、ネットで参考情報を探索して、 操作例の通りに操作したところ、録音失敗が発生しなくなりました。 12月3日15時から5日14時までの65個の予約録音を全て成功。 Win7PCに加えてUbuntuPCでも確実に「NHKらじるらじる」を 予約録音で楽しむことが可能となりました。 Kojima様、ネット情報発信様に感謝申し上げます。 参考ページ;Qiita;rtmpdumpの安定性を向上させる; gitで開発版(master)の最新をとってきてビルドしましょう; http://qiita.com/yayugu/items/12c0ffd92bc8539098b8; -- [[darekasan]] &new{2016-12-05 (月) 14:10:59};
- はじめまして。Arch Linuxでもatコマンドを入れて動作しました。ラジオ好きなので便利なツールありがとうございます。ラジオ好きならBBCのiPlayerからコマンドラインでダウンロードできるget_iplayerも便利ですよ。https://github.com/get-iplayer/get_iplayer -- [[mori]] &new{2016-12-11 (日) 23:25:24};
- 9/4午後からHLSのみになったみたいで録音できなくなりました。http://www.nhk.or.jp/radio/config/config_web.xmlに録音すべきURLがあるので、rtmpdumpではなくffmpegで落とすように変更したら良さそうです。atコマンドでスクリプト決め打ちしてあると仕様変更の時に面倒ですねぇ。 -- [[こころ]] &new{2017-09-06 (水) 19:43:10};
- おなじく。 -- [[seiouken]] &new{2017-09-09 (土) 16:15:16};
- 録音スクリプトでffmpeg -loglevel error -i「hlsプレイリスト」-t 「録音時間(秒)」-bsf:a aac_adtstoasc -vn -acodec copy $m4afileみたいになるようにしたら録音できた。直接.m4aで落とせるので.flvから.m4aに抜き出す必要が無くなったよ。 -- [[こころ]] &new{2017-09-10 (日) 22:11:16};
- [[2017-09-12のページ:http://plamo.linet.gr.jp/index.html/index.php?diary%2FKojima%2F2017-09-12]]に新しいradiru_rec.pyを貼っておいたので、ご利用ください。 -- [[kojima]] &new{2017-09-12 (火) 17:22:54};

#comment

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS