ffmpegでらじるらじる
我が家で受信できるNHK-FMの電波はマルチパスがひどく、人の音声のサ行が濁ったり、ピアノなどの音にフェージングがついたりする。ポップスだとフェージングは全然わからないのだが、クラシックやジャズなどの楽器の音がはっきりわかるものだと目立つ。
家から見て放送局と反対側に大きな建物があるので、マルチパスの主原因はこれだと思う。テレビがアナログの時代はゴーストがVHF帯でひどく、ゴーストリダクションチューナー付きのハードディスクレコーダーが必要だった。FMチューナーだとアキュフェーズの40万円のチューナーでも買ってこないとマルチパスリダクションは手に入らないので、チューナーでなんとかするのはお財布的に厳しい。
マルチパスなら前後比の大きい位相差給電式のアンテナだということで、2階の部屋のロフトの手摺にアンテナを設置してある。設置した当時(数年前)はたしかにマルチパスの影響は減ったのだが、2年ほど前からまた気になるようになった。たぶん放送局から家までの経路でビルなどができて反射の状況が変わったのだと思う。
FMアンテナの位置を1 mほどずらしたら、サ行の濁りやフェージングが少し減って聞きやすくなったので、今はこの位置で聞いているが、完全になくなったわけではない。
そこで、らじるらじるである。聞くだけならブラウザで再生すればいいのだが、メモリープレーヤーに転送したり、CD-RWに焼いて車で聞いたりしたい(車のオーディオが古くてMDか光学ディスクを使わないと音を持っていけない)ので、データで取りたい。
以下のサイトを参考にして、ffmpegで録音するようにした。ffmpegは、以前Macportsでgnumericをインストールしたときに入っていたのでこれを利用。
https://qiita.com/yuppejp/items/d0a49bb03be02c303e4d
https://riocampos-tech.hatenablog.com/entry/20170911/download_radiru_m3u8
上の方のサイトのシェルスクリプトをほぼ丸パクリで使わせてもらった(ただし第1や第2放送は聞かないので名古屋と大阪のFMを引数で選べるようにした)。
ターミナルでシェルスクリプトを直接実行すると問題なく動作した。
次にcrontabに書き込んでタイマー録音のテスト。ものぐさなのでCronniXを使って書き込み。crontabにはシェルスクリプトをフルパスで記述したので問題なく動くはず・・・なのだが録音されない。よく見ると、シェルスクリプトは実行されているのだが・・・ということはffmpegの呼び出しに問題が?
ffmpegはMacportsのものなので、/opt/local/binにインストールされている。ここにコマンドサーチパスを通すという手もあるのだが、今回は/usr/local/binにシンボリックリンクを置いてターミナルから簡単に使えるようにしていた。
ネットを検索すると、cronで実行するときは/bin, /sbin, /usr/binのコマンドは見るけど/usr/local/binは見ないとのこと。で、/usr/binにffmpegのシンボリックリンクを作るとcronでタイマー実行ができるようになった。
普段使っているHigh Sierraの入ったMBP13"(2009)でうまく行ったので、家族と共用のMBP15"(2017) Mojaveでも同じ設定をしようとしたら、こちらは/usr/binにシンボリックリンクを作れない。この症状は見覚えがあったので改めて検索すると、SierraだかHigh Sierraから導入されたシステム整合性保護(SIP)が働いているとのこと。そういえばMBP13"の方は、High Sierra patchを当てるためにSIPを解除してあったのだった。
MBP15"の方は、シェルスクリプト中のffmpegの呼出しをフルパスで行うことにして解決。
Mac本体はシステム環境設定の省エネルギーでスリープ解除のスケジュールをしておき、crontabの設定で自動タイマー録音ができる。設定したユーザでログインしていれば、画面表示がログイン画面であっても問題なく動作した。ひょっとしたらrootのcrontabに書いておけばログインしていなくても動作するかもしれないが、未確認。
| 固定リンク
「Mac OS X」カテゴリの記事
- Mac版LibreOffice 7.1の言語パックのインストールエラー(2021.05.08)
- macOS 11.x BigSurでウェルネスリンク通信ソフト(2021.05.07)
- MRTの暴走(2020.10.25)
- 4GB以上のaiffファイル(2020.07.24)
- ffmpegでらじるらじる(2020.06.27)
コメント