はじめに

久しぶりにFreeBSDでTVをキャプチャしようと、ffmpegをportsから導入したのですが、デフォルトの構築ではbktrドライバが利用できないffmpegが構築されてしまうことに気がつきました。

しばらくMakefileとにらめっこしていたのですが、どうもports自体のbktrドライバ検出ロジックに不備があり、KNOBを追加した程度ではbktrドライバに対応したffmpegを構築できなさそうです。

数時間の試行錯誤の後、bktrドライバに対応したffmpegを構築する方法を編み出したので、このページで紹介します。

bktrソースコードの展開

ffmpegのportsは以下の2ファイルを探してインクルードを試みるようなので、この2つのヘッダファイルと依存するファイルをあらかじめ用意する必要があります。

/usr/src/sys/dev/bktr/ioctl_bt848.h
/usr/src/sys/dev/bktr/ioctl_meteor.h

「sysinstall」を利用して、「/usr/src」以下にソースコード全てを展開してください。

ffmpegのソースコード取得とconfigure

続いて、以下のようにffmpegのソースコードの取得と、configureを実行します。

ports経由でのffmpegのソースコード取得とconfigure
$ cd /usr/ports/multimedia/ffmpeg
$ make configure

「config.mak」の編集

本来ならば、上記のconfigureでbktr demuxerを構築する設定がconfig.makファイルに追加される筈なのですが、うまく追加されないため、手で以下の記述を追記します。

「./work/ffmpeg-0.5/config.mak」への追記
CONFIG_BKTR_DEMUXER=yes

「CONFIG_XXXX_DEMUXER=yes」の記述が列挙されている箇所に追記するといいと思います。

「config.h」の編集

本来ならば、上記のconfigureでbktr demuxerを構築する設定がconfig.hファイルに追加される筈なのですが、うまく追加されないため、手で以下の記述を変更します。

「./work/ffmpeg-0.5/config.h」の変更(変更前)
#define HAVE_DEV_BKTR_IOCTL_BT848_H 0
#define HAVE_DEV_BKTR_IOCTL_METEOR_H 0
#define CONFIG_BKTR_DEMUXER 0
「./work/ffmpeg-0.5/config.h」の変更(変更後)
#define HAVE_DEV_BKTR_IOCTL_BT848_H 1
#define HAVE_DEV_BKTR_IOCTL_METEOR_H 1
#define CONFIG_BKTR_DEMUXER 1

実際には、それぞれのdegineの記述位置は上記のように並んではいませんので、テキスト内検索を掛けて見つけてください。
単に「0」を「1」に変更しているだけです。

bktrドライバのヘッダへのシンボリックリンクの作成

続いて、portsの内部からbktrドライバのヘッダを参照できるよう、以下のようにシンボリックリンクを張ります。

bktrドライバのヘッダを参照する為のシンボリックリンクの作成
$ cd ./work/ffmpeg-0.5
$ ln -s /usr/src/sys/dev dev
$ cd ../../

ffmpegの構築

上記までで構築の準備は完了です、以下のようにしてffmpegを構築してください。

ffmpegの構築
$ make install

構築後、以下のようにしてffmpegがbktrドライバに対応しているか確認してください。

bktrへの対応状況の確認
$ ffmpeg -formats | grep bktr

 D  bktr            video grab

上記のような表示がされれば、bktr対応のffmpegが正しく構築されています。
お疲れ様でした。


あなたの探し物は見つかりましたか?
まさにこれだ
参考になった
ちょっと違う
これじゃない

何かメッセージがあればお願いします

このメッセージを非公開にする

ご注意

・頂いたメッセージは管理者のチェックの後、公開されます。
・メッセージの公開を希望されない場合には、「このメッセージを非公開にする」にチェックを入れてください。
・管理者が不適切と判断したメッセージは公開しませんので、予めご了承ください。


まだ評価がありません

表示できるメッセージはありません。