ブログ

Armadillo-840+USBカメラで、LCD表示とH.264エンコードを同時実行する

at_takuya.sasaki
2014年8月9日 16時33分
以下の環境で、USBカメラからの画像をLCDに表示しつつ、USBメモリにH.264形式で
エンコードしてファイル保存をしてみました。

Armadillo-840液晶モデル開発セット
kernel      :  linux-3.4-at9
userland  : atmark-dist-20140602
USBカメラ: BUFFALO BSWHD06M http://buffalo.jp/product/multimedia/web-camera/bswhd06m/

保存用のUSBメモリをマウントします。
[root@armadillo840-0 (ttySC2) ~]# mount -t vfat /dev/sda1 /mnt
H.264エンコーダを有効にします。
[root@armadillo840-0 (ttySC2) ~]# echo "encoder" > /sys/devices/platform/acm.0/codec
GStreamerを実行します。
[root@armadillo840-0 (ttySC2) ~]# gst-launch-1.0 -e v4l2src device="/dev/video0" \
! videoconvert ! video/x-raw,width=640,height=360,format=NV12,framerate=30/1 ! tee name=t \
t. ! queue ! videoconvert ! fbdevsink device=/dev/fb1 \
t. ! queue ! acmh264enc ! queue ! qtmux ! filesink location=/mnt/output.mp4
環境によってはデバイスファイル(/dev/video*、/dev/fb*)が異なるので気を付けてください。 USBカメラがNV12で出力できないのでvideoconvertをかましているせいか、640*480では LCD表示にもたつきが見られました。なので、今回は640*360で取り込みました。 (USBカメラによっては640*360に対応していない場合もあります。) フレームレートやエンコード品質調整などをすることで改善するかもしれません。 [15.6.2. ビデオのエンコード] http://manual.atmark-techno.com/armadillo-840/armadillo-840_product_manual_ja-1.3.0/ch15.html#sct.acm.encode.video 以上