ブログ

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

at_takuya.sasaki
2014年8月9日 16時33分

以下の環境で、USBカメラからの画像をLCDに表示しつつ、USBメモリにH.264形式でエンコードしてファイル保存をしてみました。

Armadillo-840液晶モデル開発セット

保存用の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をかましているせいか、640480では LCD表示にもたつきが見られました。なので、今回は640360で取り込みました。 (USBカメラによっては640*360に対応していない場合もあります。)

フレームレートやエンコード品質調整などをすることで改善するかもしれません。

[15.6.2. ビデオのエンコード]
https://manual.atmark-techno.com/armadillo-840/armadillo-840_product_manual_ja-1.3.0/ch15.html#sct.acm.encode.video

以上