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をかましているせいか、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
以上