久しぶりにFreeBSDでTVをキャプチャしようと、ffmpegをportsから導入したのですが、デフォルトの構築ではbktrドライバが利用できないffmpegが構築されてしまうことに気がつきました。
しばらくMakefileとにらめっこしていたのですが、どうもports自体のbktrドライバ検出ロジックに不備があり、KNOBを追加した程度ではbktrドライバに対応したffmpegを構築できなさそうです。
数時間の試行錯誤の後、bktrドライバに対応したffmpegを構築する方法を編み出したので、このページで紹介します。
ffmpegのportsは以下の2ファイルを探してインクルードを試みるようなので、この2つのヘッダファイルと依存するファイルをあらかじめ用意する必要があります。
/usr/src/sys/dev/bktr/ioctl_bt848.h
/usr/src/sys/dev/bktr/ioctl_meteor.h
続いて、以下のようにffmpegのソースコードの取得と、configureを実行します。
$ cd /usr/ports/multimedia/ffmpeg $ make configure
本来ならば、上記のconfigureでbktr demuxerを構築する設定がconfig.makファイルに追加される筈なのですが、うまく追加されないため、手で以下の記述を追記します。
CONFIG_BKTR_DEMUXER=yes
「CONFIG_XXXX_DEMUXER=yes」の記述が列挙されている箇所に追記するといいと思います。
本来ならば、上記のconfigureでbktr demuxerを構築する設定がconfig.hファイルに追加される筈なのですが、うまく追加されないため、手で以下の記述を変更します。
#define HAVE_DEV_BKTR_IOCTL_BT848_H 0 #define HAVE_DEV_BKTR_IOCTL_METEOR_H 0 #define CONFIG_BKTR_DEMUXER 0
#define HAVE_DEV_BKTR_IOCTL_BT848_H 1 #define HAVE_DEV_BKTR_IOCTL_METEOR_H 1 #define CONFIG_BKTR_DEMUXER 1
実際には、それぞれのdegineの記述位置は上記のように並んではいませんので、テキスト内検索を掛けて見つけてください。
単に「0」を「1」に変更しているだけです。
続いて、portsの内部からbktrドライバのヘッダを参照できるよう、以下のようにシンボリックリンクを張ります。
$ cd ./work/ffmpeg-0.5 $ ln -s /usr/src/sys/dev dev $ cd ../../
上記までで構築の準備は完了です、以下のようにしてffmpegを構築してください。
$ make install
構築後、以下のようにしてffmpegがbktrドライバに対応しているか確認してください。
$ ffmpeg -formats | grep bktr D bktr video grab
上記のような表示がされれば、bktr対応のffmpegが正しく構築されています。
お疲れ様でした。
・頂いたメッセージは管理者のチェックの後、公開されます。
・メッセージの公開を希望されない場合には、「このメッセージを非公開にする」にチェックを入れてください。
・管理者が不適切と判断したメッセージは公開しませんので、予めご了承ください。
まだ評価がありません |
表示できるメッセージはありません。