at_takuya.sasaki
2015年11月1日 18時39分
概要
Armadillo-840に接続したUSBカメラからの画像を動画としてLCDに表示しつつ、ボタン押下時の静止画をLCDに表示するデモです。 一定時間内の動画を avi形式の動画ファイルに保存することもできます。
機能説明
Armadillo-840にUSBカメラを接続してArmadillo-840を起動すると、液晶画面の左側に352×288サイズで動画表示を行います。
イメージ図:
------------------------------------------------
動画表示 静止画表示
+------------------+ +------------------+
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
+------------------+ +------------------+
------------------------------------------------
Armadillo-840液晶拡張ボードのスイッチを押すと、それぞれ以下の機能が実行されます。
SW1 : 静止画キャプチャ
ボタン押下時の静止画を右側に表示しつつ、/home/ftp/pubに JPEGファイルを保存します。
最大10枚までのJPEGファイルを保存できます。
SW2 : 過去に撮影したJPEGファイルを参照できます。
SW3 : 録画を開始します。
SW4を押すまでの間、/home/ftp/pubにJPEGファイルを連続して保存し続けます。
*どのくらい録画し続けられるかはRAMの容量に依存します。(未検証)
SW4 : 録画を停止します。
JPEGファイルの保存を終了し、ffmegを使ってavi形式のファイルに変換します。(フレームレートは25fps)
変換後はJPEGファイルを削除します。
イメージファイル/ソースコード
以下にアップロードしております。
URL | http://www.atmark-techno.com/~fae/demo/a840/Camera/
ユーザ名 | 840camera
パスワード | helloarmadillo
実行方法
1. 上記からlinux.bin.gz/romfs.img.gzをダウンロードしてUSBメモリに保存してください。
2. Armadillo-840を起動します
3. ログインしてUSBメモリを差します。
[root@armadillo840-0 (ttySC2) ~]# usb 1-1: new high-speed USB device number 3 using rmobile-ehci-driver scsi0 : usb-storage 1-1:1.0 scsi 0:0:0:0: Direct-Access UFD 2.0 Silicon-Power8G 1.00 PQ: 0 ANSI: 4 sd 0:0:0:0: [sda] 15308799 512-byte logical blocks: (7.83 GB/7.29 GiB) sd 0:0:0:0: [sda] Write Protect is off sd 0:0:0:0: [sda] No Caching mode page found sd 0:0:0:0: [sda] Assuming drive cache: write through sd 0:0:0:0: [sda] No Caching mode page found sd 0:0:0:0: [sda] Assuming drive cache: write through sda: sda1 sd 0:0:0:0: [sda] No Caching mode page found sd 0:0:0:0: [sda] Assuming drive cache: write through sd 0:0:0:0: [sda] Attached SCSI removable disk
4. Enterを押してから、moutします。
[root@armadillo840-0 (ttySC2) ~]# mount -t vfat /dev/sda1 /mnt FAT-fs (sda1): utf8 is not a recommended IO charset for FAT filesystems, filesystem will be case sensitive!
5. netflashでイメージを書き換えます
[root@armadillo840-0 (ttySC2) ~]# netflash -bknusr /dev/flash/kernel /mnt/linux.bin.gz [root@armadillo840-0 (ttySC2) ~]# netflash -bknusr /dev/flash/userland /mnt/romfs.img.gz
6. Armadillo-840にUSBカメラを接続した後、rebootします
[root@armadillo840-0 (ttySC2) ~]# reboot
7. ログイン後に、デフォルトのQMLサンプルアプリを停止します。
その後、/etc/configの内容を、上書き更新します。
[root@armadillo840-0 (ttySC2) ~]# killall qmlscene [root@armadillo840-0 (ttySC2) ~]# flatfsd -w
8. 以下のコマンドでサンプルを起動できます。
[root@armadillo840-0 (ttySC2) ~]# export QT_QPA_EGLFS_DISPLAY=1 [root@armadillo840-0 (ttySC2) ~]# export QT_QPA_EGLFS_WIDTH=800 [root@armadillo840-0 (ttySC2) ~]# export QT_QPA_EGLFS_HEIGHT=480 [root@armadillo840-0 (ttySC2) ~]# export QT_QPA_EGLFS_HIDECURSOR=1 [root@armadillo840-0 (ttySC2) ~]# camera_widget &
ビルド方法
1. パッチについて
1.1. SWとキーの関連付け
以下のフォーラムにある各SWとキーとの関連付けを修正したパッチを適用しています。
https://users.atmark-techno.com/node/1116
パッチの適用方法は以下の通りです。
atmark@atde5:~/atmark-dist$ patch -p1 < ~/atmark-dist-20150223-a840-geninput-fixed.patch atmark@atde5:~/linux-3.4-at12$ patch -p1 < ~/linux-3.4-at12-a840-sw-key-change.patch
1.2 ffmpeg
ffmpegをAtmark Distに入れるために、以下のブログの手順を実行しています。
https://users.atmark-techno.com/blog/750/1218
ただしSW3、SW4に割り当てている動画保存の機能が必要なければ、標準イメージに1.1のパッチを適用しただけでも問題ありません。
以上