FreeBSD 11.2上で rtmpdumpとffmpegを使って radiko.jp を自動録音していますが、今日、気が付いたら自動録音されていませんでした。
あれあれ?
手動で ffmpeg コマンドを発行してみたところ以下のメッセージが!
Shared object "libdav1d.so.1" not found, required by "libavcodec.so.58"
flv形式での録音は成功していて、flv→m4aフォーマット変換がライブラリが見つからず、スクリプトが失敗するようです。
昨日までは正常動作していたのに・・・・・
ffmpeg が突然エラーを吐くのは、決まって前日に pkg コマンドでパッケージメンテナンスを行った場合。最近では慣れてきました。
今回は、libavcodec が libdav1d.so.1 というライブラリを呼ぼうとして見つからない というエラーです。
パッケージ更新のログ /var/log/messages を確認してみると
Aug 14 00:05:05 server pkg: dav1d upgraded: 0.3.1 -> 0.4.0
確かに、dav1d ライブラリが更新されていますよ。
/usr/local/lib lrwxr-xr-x 1 root wheel 13 8月 8 10:22 libdav1d.so -> libdav1d.so.2 lrwxr-xr-x 1 root wheel 17 8月 8 10:22 libdav1d.so.2 -> libdav1d.so.2.0.0 -rwxr-xr-x 1 root wheel 757884 8月 8 10:22 libdav1d.so.2.0.0
libdav1d.so.1 というライブラリはありません。消されちゃったんでしょうね。
こういうライブラリは、旧バージョンと互換性を持たせて作られることが多いので、とりあえずシンボリックリンクを試してみることにしました。
lrwxr-xr-x 1 root wheel 17 8月 14 15:46 libdav1d.so.1 -> libdav1d.so.2.0.0
その結果、「Shared object “libdav1d.so.1” not found, required by “libavcodec.so.58″」のエラーは出なくなりました。
早く気づけて良かったです。