RaspberryPiでffmpegをビルドしてハードウェアデコーダ/エンコーダを試す

RaspberryPiでffmpegのMPEG2のハードウェアデコーダ(mpeg2_mmal)と、H.264のハードウェアエンコーダ(h264_omx)を使ってみたかったので試してみました。 が、aptでインストールできる3.2.10でmpeg2_mmalを使ってデコードすると解像度が320x240に固定されてしまうというバグを 見事に踏み抜いてしまったので結局自分でビルドすることになりました。

3.2.10で ERBラボのサンプルストリーム パケットサイズ188バイト版 をエンコードしたログ

$ time ffmpeg -fflags +discardcorrupt -c:v mpeg2_mmal -i isdbt188.ts -t 00:00:10 -c:a copy -bsf:a aac_adtstoasc -c:v h264_omx -b:v 4096k isdbt188.mp4
ffmpeg version 3.2 ...
more ...

RaspberryPi ZeroをOTGモードで使う

RaspberryPi Zeroに USB Stem を 取り付けてみました。

取り付けとRaspbianの準備に関しては PIMORONI と そこからリンクされている 公式Gist を参考にすれば簡単にできました。

Macで使う場合は、ドライバも必要ないしBonjourも動作しているのでなんの準備も必要なくSSHでつなぐことができました。 インターネット共有の設定をすればインターネットへ接続するのもOK。

ただ自分のLinuxの環境はGentooなのでドライバも無効になっていたし、Avahiも入っていなかったので少しハマりました。 まずカーネルの設定で CONFIG_USB_NET_CDCETHER を有効にするとRaspberryPiを認識できるようになります。

Device Drivers  --->
  Network device support  --->
    USB Network Adapters  --->
      Multi-purpose USB Networking Framework
        CDC Ethernet support (smart devices such as cable modems)

有効にした上で接続するとdmesgとifconfigにこのように出力されます。(なんかエラーでてるけど…)

$ dmesg
[ 1450.001875] usb 3-1 ...
more ...