2014年11月29日土曜日

マウスのホイールを使った後にCTRLキーを押すと縮小、拡大する。

Win8が出た辺りからLogicool製マウスのホイールを動かしてないのにCTRLキーを押すとWEBページが縮小・拡大されるという現象があって、OSの不具合か何かかと思ってずっとガマンしてきたんだけど、いよいよフラストレーション爆発。
ロジクールのマウス3つ買って3つとも同じ現象がでたからロジクールやめようと思いながら色々設定をいじってみたら、

SetPointのマウスの項目にある 
 ポインタの加速を「なし」
 スマートムー部を有効にする「チェックなし」

にしたら解決。

どうもONにした状態だとページスクロールを滑らかになるように細かく連続して動いてるようで、
その時にCTRLキーを押すと縮小・拡大されてしまうだった。
まあ、CTRLキーを多様するユーザーは少ないとみてこのような仕様にしたんだろうな。。

2014年11月28日金曜日

Rasberry Piで Mpeg2→Mpeg4へトランスコードする・続


gstreamerを使ってみて思ったのこと。設定がむずかしい。。
画像が乱れる問題とかもあるし、いっその事omxmpeg2videodec、omxh264encを抜き出してMpeg2→Mpeg4へトランスコードするツールを作ろうかと思ってたら
omxtxというツールが2年前に作られていたようだ。

https://github.com/arjenv/omxtx/

ソースコードは1つだけだから、時間がある時に解析しようと思う。

それ用の解析資料は残しておく。


デインタレースは出来ないようなので、4分の1スケールに縮小しちゃおうかと思うけど、
地デジの解像度は1440x1080iだから

 100% 1440x1080 実寸画質 約5.6GB/時間
 50% 720x540   DVD画質 約1.4GB/時間
 25% 360x270   CD画質  約350MB/時間


つまりCD画質になってしまう。
これならワンセグをそのまま保存してるのと変わりなくなってしまうので、
インターレースは残したまま縮小せずにトランスコードする方法を考える。


次回はOMXTXをそのまま使ってみる編。



参考ページ
http://ricky-tee.blogspot.jp/2012/10/raspberry-pi-as-hardware-assisted-h264.html
https://harrybuttle.wordpress.com/2013/08/05/hardware-transcoding-on-the-raspberry-pi/
http://www.raspberrypi.org/forums/viewtopic.php?f=70&t=25022


2014年11月26日水曜日

Raspberry Pi用にGStreamer 1.4をコンパイルする

Gstreamer1.0だとブロックノイズや格子が気になるので、最新版を自前で用意することにしたときのメモ。
DebianのUnstableからソース持ってきてビルドでも良かったけど、乗っているやり方そのままやることにした。


Step1.コンパイル環境の構築
http://pastebin.com/S1zGK9kP

  1. sudo apt-get update && sudo apt-get upgrade -y --force-yes
  2. sudo apt-get install -y --force-yes build-essential autotools-dev automake autoconf libtool autopoint libxml2-dev zlib1g-dev libglib2.0-dev pkg-config bison flex python git gtk-doc-tools libasound2-dev libgudev-1.0-dev libxt-dev libvorbis-dev libcdparanoia-dev libpango1.0-dev libtheora-dev libvisual-0.4-dev iso-codes libgtk-3-dev libraw1394-dev libiec61883-dev libavc1394-dev libv4l-dev libcairo2-dev libcaca-dev libspeex-dev libpng-dev libshout3-dev libjpeg-dev libaa1-dev libflac-dev libdv4-dev libtag1-dev libwavpack-dev libpulse-dev libsoup2.4-dev libbz2-dev libcdaudio-dev libdc1394-22-dev ladspa-sdk libass-dev libcurl4-gnutls-dev libdca-dev libdirac-dev libdvdnav-dev libexempi-dev libexif-dev libfaad-dev libgme-dev libgsm1-dev libiptcdata0-dev libkate-dev libmimic-dev libmms-dev libmodplug-dev libmpcdec-dev libofa0-dev libopus-dev librsvg2-dev librtmp-dev libslv2-dev libsndfile1-dev libsoundtouch-dev libspandsp-dev libx11-dev libxvidcore-dev libzbar-dev libzvbi-dev liba52-0.7.4-dev libcdio-dev libdvdread-dev libmad0-dev libmp3lame-dev libmpeg2-4-dev libopencore-amrnb-dev libopencore-amrwb-dev libsidplay1-dev libtwolame-dev libx264-dev
  3.                                    
  4. cd ~
  5. mkdir packages
  6. cd packages
  7. mkdir gstreamer-1.2
  8. cd gstreamer-1.2
  9. git clone git://anongit.freedesktop.org/git/gstreamer/gstreamer
  10. git clone git://anongit.freedesktop.org/git/gstreamer/gst-plugins-base
  11. git clone git://anongit.freedesktop.org/git/gstreamer/gst-plugins-good
  12. git clone git://anongit.freedesktop.org/git/gstreamer/gst-plugins-bad
  13. git clone git://anongit.freedesktop.org/git/gstreamer/gst-plugins-ugly
  14. git clone git://anongit.freedesktop.org/git/gstreamer/gst-libav
  15. git clone git://anongit.freedesktop.org/git/gstreamer/gst-omx
  16. git clone https://github.com/thaytan/gst-rpicamsrc.git
  17. cd gstreamer
  18. ./autogen.sh
  19. sudo make
  20. sudo make install
  21. cd ../gst-plugins-base
  22. ./autogen.sh
  23. sudo make
  24. sudo make install
  25. cd ../gst-plugins-good
  26. ./autogen.sh
  27. sudo make
  28. sudo make install
  29. cd gst-plugins-ugly
  30. ./autogen.sh
  31. sudo make
  32. sudo make install
  33. cd ../gst-libav
  34. sudo ./autogen.sh
  35. sudo make
  36. sudo make install
  37. sudo apt-get install -y --force-yes libusb-1.0
  38. cd ../gst-plugins-bad
  39. export LD_LIBRARY_PATH=/usr/local/lib/ path
  40. sudo LDFLAGS='-L/opt/vc/lib' CPPFLAGS='-I/opt/vc/include -I/opt/vc/include/interface/vcos/pthreads -I/opt/vc/include/interface/vmcs_host/linux' ./autogen.sh
  41. sudo make CFLAGS+="-Wno-error"
  42. sudo make install
  43. cd ../gst-omx
  44. LDFLAGS='-L/opt/vc/lib' CPPFLAGS='-I/opt/vc/include -I/opt/vc/include/IL -I/opt/vc/include/interface/vcos/pthreads -I/opt/vc/include/interface/vmcs_host/linux' ./autogen.sh --with-omx-target=rpi
  45. sudo make CFLAGS+="-Wno-error"
  46. sudo make install
  47. cd ../gst-rpicamsrc
  48. ./autogen --prefix=/usr --libdir=/usr/lib/arm-linux-gnueabihf/
  49. make
  50. sudo make install




参考リンク
http://lists.freedesktop.org/archives/gstreamer-openmax/2013-March/000724.html
http://direct.raspberrypi.org/forums/viewtopic.php?t=83225&p=588493
http://tnishinaga.hatenablog.com/entry/2014/05/11/224944

Raspberry pi でMpeg2→Mpeg4へトランスコードする

RaspberryPiでハードウェアエンコードも可能だという事がわかったので、さっそくやってみることにした。


Step1.必要なファイルをインストールする

$ sudo sh -c "echo 'deb http://vontaene.de/raspbian-updates/ . main' >> /etc/apt/sources.list"
$ gpg --recv-keys 0C667A3E
$ gpg -a --export 0C667A3E | sudo apt-key add -
$ sudo aptitude update

$ apt-get install libgstreamer1.0-0 libgstreamer1.0-0-dbg libgstreamer1.0-dev liborc-0.4-0 liborc-0.4-0-dbg liborc-0.4-dev liborc-0.4-doc gir1.2-gst-plugins-base-1.0 gir1.2-gstreamer-1.0 gstreamer1.0-alsa gstreamer1.0-doc gstreamer1.0-omx gstreamer1.0-plugins-bad gstreamer1.0-plugins-bad-dbg gstreamer1.0-plugins-bad-doc gstreamer1.0-plugins-base gstreamer1.0-plugins-base-apps gstreamer1.0-plugins-base-dbg gstreamer1.0-plugins-base-doc gstreamer1.0-plugins-good gstreamer1.0-plugins-good-dbg gstreamer1.0-plugins-good-doc gstreamer1.0-plugins-ugly gstreamer1.0-plugins-ugly-dbg gstreamer1.0-plugins-ugly-doc gstreamer1.0-pulseaudio gstreamer1.0-tools gstreamer1.0-x libgstreamer-plugins-bad1.0-0 libgstreamer-plugins-bad1.0-dev libgstreamer-plugins-base1.0-0 libgstreamer-plugins-base1.0-dev
$ gst-inspect-1.0 | grep omx
omx: omxmpeg2videodec: OpenMAX MPEG2 Video Decoder
omx: omxmpeg4videodec: OpenMAX MPEG4 Video Decoder
omx: omxh263dec: OpenMAX H.263 Video Decoder
omx: omxh264dec: OpenMAX H.264 Video Decoder
omx: omxtheoradec: OpenMAX Theora Video Decoder
omx: omxvp8dec: OpenMAX VP8 Video Decoder
omx: omxmjpegdec: OpenMAX MJPEG Video Decoder
omx: omxvc1dec: OpenMAX WMV Video Decoder
omx: omxh264enc: OpenMAX H.264 Video Encoder
pi@raspberrypi ~/gstreamer-1.0 $ gst-inspect-1.0 | grep fbdevsink
fbdevsink: fbdevsink: fbdev video sink



Step2.MPEG2のライセンスキーの購入
http://www.raspberrypi.com/mpeg-2-license-key/


Step3.ハードウェアエンコード
 ネット上より参考に見つけたやり方。
gst-launch-1.0 \
filesrc location=daitosho_PV.mpg  ! progressreport ! mpegpsdemux name=demuxer demuxer. ! queue ! \
mpegaudioparse ! mad ! audioresample ! audioconvert dithering=0 ! voaacenc bitrate=196000 ! mux. \
mp4mux  name=mux ! filesink location=hoge.mp4 demuxer. ! queue ! \
mpegvideoparse ! omxmpeg2videodec ! videoconvert ! \
omxh264enc target-bitrate=6000000 control-rate=variable ! video/x-h264,stream-format=byte-stream,profile=high ! \
h264parse ! mux.


これをやればうまく行くんだろうけど、目的は容量削減ではなく、
chromebookがMpeg2の再生に対応していないので、再生できるようにMpeg4へトランスコードすることである。
それとせっかくのRaspberryPiがハードウェアエンコードとデコードが使えるので、これらを使えるようにする。

やり方
1.TSファイルから必要な情報のみ取り出す。
  (これだけで、90%くらいに縮む。 21MB→19MB)
 $ tssplitter_lite src.ts dst.ts -1  (SIDはTS毎異なる)

2.TSファイルを分割する。(MPEG2動画とAAC音声に分ける)
 $ ffmpeg -y -i dst.ts -acodec copy dst.aac -vcodec copy -an dst.m2v

3.動画をMPEG2→MPEG4に変換する。
 $ gst-launch-1.0 filesrc location=a.m2v ! mpegvideoparse ! omxmpeg2videodec ! videoconvert ! omxh264enc ! filesink location=test.mp4

4.MPEG4とAACファイルをそのまま結合する。
 $ ffmpeg -i out.mp4 -i a.aac -vcodec copy -acodec copy output.mp4
 (最終結果で2.3MB、おおよそ10分の1)

これでMpeg4ファイルが完成してとてもコンパクトになったが、
インターレースの格子がひどいのでStep3は見直しが必要である。






○TSファイルから必要なデータのみ抽出
 wget http://hp.vector.co.jp/authors/VA038175/download/tssplitter_lite.zip
unzip tssplitter_lite.zip
cd tssplitter_lite
make all
cd tssplitter_lite
sudo cp tssplitter_lite /usr/local/bin/

使い方:tssplitter_lite source.ts dest.ts [SID]

 SIDの調べ方は、
  ffmpeg -i source.ts
 を実行して、Mepg2Videoになっている一番上にある番号が使うSID(1056など)



参考URL

http://theiopage.blogspot.jp/2013/04/enabling-hardware-h264-encoding-with.html

2014年11月25日火曜日

ChromebookでSkype、2chmateなどのAndroidアプリを使えるようにする方法

ネット上でいろんなやり方があって散見しているのでまとめてみた。

いろんなサイトに書かれていることなので知っているかもしれませんが、

AndroidアプリはAndroid用なので、そのままChromebookでは使えません。
 使えるようにするには、変換する必要があります。

変換するやり方は色々あるのですが、個人的に一番楽だと思った方法はスマホとChromebook両方使う方法です。

簡単にやり方を説明すると、スマホ・タブレット側でアプリの変換作業を行ってGoogleドライブに保存して、Chromebook側でダウンロードしてインストールする方法です。
この作業にはスマホ・タブレット、Chromebook側にARchronというアプリをインストールする必要があるので、これから実際にアプリを動作するところまで説明したいと思います。


・事前準備<Archonインストール>

~Chromebook側~

Step1.ChromeOSのバージョン情報を調べる
 まず自分の使っているPCがIntel 32bit/64bit,ARMなのか知る必要があります。

  デスクトップ右下にある時計部分をクリック設定→ChromeOSについて

 を開くとそこに情報がのっています。


Step2.ARChonのダウンロードとインストール
2-1.ARChonのダウンロード
 ARChonダウンロードサイトはここ。↓

 ZIPファイル形式で配布されてるので、あらかじめ慣れている環境でSDカードに展開しておくとChromebook上でフォルダ指定するだけになるので楽かも。

2-2.Chromebookに拡張機能ARChonをインストールする。
 用意できたらChromebook上のブラウザを開いて、URL入力部分に「chrome://extension」と入力するとChrome拡張機能画面を開く。

 一番上のところにチェックボックスで「デベロッパーモード」にチェックを入れる。

 次に表示された「パッケージ化されていない拡張機能を読み込む」を選択して、先ほど展開しARChronフォルダを指定するとインストールされる。

※これからインストールするAndroidアプリもChrome拡張機能なので、同じやり方でインストールします。

~スマホ・タブレット側~

Step1.スマホ・タブレットにARChonインストール
 スマホかタブレット上のPlayストアから「ARChon Packager」「Googleドライブ」をインストールする。 


これで準備完了。

次はAndroidアプリをChromebookで使えるようにする変換作業とGooleDrive経由でイメージコピーする方法です。

・ChromebookにAndroidアプリのインストール

~スマホ・タブレット側~
Step1.AndroidアプリのChrome拡張機能用に変換する
 「ARChon Packager」を起動して変換したいアプリ選択。
 英語のメッセージがいくつか出てくるけどそのまま「次へ」を押していき、Finishボタンが出たところで共有でGoogleドライブにZipファイルを置く。


~Chromebook側~
Step1.Chromebook側:Googleドライブにアプリをコピー
 ChromebookでGoogleドライブを起動して、Zipファイルをどこかに展開。
 (あとでごちゃごちゃしないように、専用フォルダを作っておくと良いです)

Step2.インストール
 ARChonをインストールした時と同じように、「Chrome機能拡張」画面を開いて「パッケージ化されていない拡張機能を読み込む」を選択して、先ほど展開しARChronフォルダを指定する。


これで完了。

変換したAndroidアプリを指定してもうまくインストールできてない方は、ARChronがインストールできてないか、Androidアプリが使えないのかどちらかだと思います。

試しにやってみたのがSkypeと2chmate。
Chromebook用の専用アプリじゃないので、まともに動かすにはいろいろコツが必要でした。

・Skype
 ログインはMicrosoftアカウントだとログインできないが、Skypeアカウントだとなぜかログインできる。

・2chmate
 起動しただけだとドルイド画面のまま。右クリックとかすると板一覧が表示される。

こんな感じです。
きっと他のアプリも似た感じだと思うので、今後のバージョンアップに期待してます。

2014年11月17日月曜日

raspberry Pi でまず最初にやるOS設定


1. アップデート
>sudo rpi-update
>sudo apt-get update
>sudo apt-get upgrade
>sudo raspi-config
>sudo apt-get install vim


2. 不要サービス無効化
[root@ms03 ~]# pico /etc/inittab
# /sbin/getty invocations for the runlevels.
#
# The "id" field MUST be the same as the last
# characters of the device (after "tty").
#
# Format:
#  :::
#
# Note that on most Debian systems tty7 is used by the X Window System,
# so if you want to add more getty's go ahead but skip tty7 if you run X.
#
# コンソールは使用可能とするのでtty1は生かし、tty2~tty6をコメント行に変更
1:2345:respawn:/sbin/getty --noclear 38400 tty1
# 2:23:respawn:/sbin/getty 38400 tty2
# 3:23:respawn:/sbin/getty 38400 tty3
# 4:23:respawn:/sbin/getty 38400 tty4
# 5:23:respawn:/sbin/getty 38400 tty5
# 6:23:respawn:/sbin/getty 38400 tty6


3.Swap停止
>sudo apt-get install chkconfig
>sudo chkconfig dphys-swapfile off


4.ログファイルの整理



3.リモートデスクトップ環境を入れる
>sudo apt-get install xrdp

4.Sambaインストール
>sudo apt-get install samba

UUIDを調べる
sudo blkid /dev/sda1 



参考URL:
 http://www.pc-links.com/blog/raspberrypi/ramdisk/






2014年11月13日木曜日

chromebookでネットワーク上の共有フォルダにアクセスする

今までWin7デスクトップPCを起動して散らかったデスクトップ(PC内部とリアルの話)を見ながら楽しいネットライフを過ごしていたのだが、
ChromeBookを買って以来、デスクトップPCを起動する時間がめっきり減った。

便利さといえばWindowsのが圧倒的でいわゆる何でも屋。
オンラインゲームからちょっと怪しげなツールも動かせて便利だし、今まで買ったハードウェアも充実している。
Chromebookはそういった事はできないけど、きれいなデスクトップにきれいな文字でいつでも使えて、起動の遅さなどの鬱陶しさもなく快適。これは体感しないとわからないかなと思う。


ここから表題の話。
2014年11月現在のChromeOSではSambaは使えない。
つまり家にNAS環境があるのにネットワーク共有フォルダが参照できないのである。
これは不便なのでどうにかして使えるようにしたい。


調べてみるとやり方は2つあって
crouton上でSambaを入れてアクセスできるようにする方法。
②すでに入っているCifsを利用する。

①は作業の手間が多いので、
参照URLだけ残しておく。

②は非常に簡単にできるが、いつかのアップデートで使えなくなる可能性はあるので注意。

Step1. Chromeブラウザ上でCTRL+ALT+Tキーを押してコマンドプロンプトを開く。
Step2. shell [enter]キー
Step3. sudo vim /usr/local/etc/fstab を開く

//192.168.11.138/hdd2tb /home/chromeos/user/Downloads/Network/hdd2tb cifs username=guest,iocharset=utf8,defaults 0 0

環境に合わせて設定して保存。

Step4. sudo mountcifs start

以上、で共有フォルダにアクセスできる。

2014年11月5日水曜日

署名がないデバイスドライバのインストール方法(win8)

海外サイトでドライバー署名を無効にする方法を見つけたから日本語の用語に置き換えた。

デスクトップ右のチャーム内の「設定」を選ぶ。
画面下の「PCの詳細設定」を選ぶ。
「全般」を選ぶ。
「PCの起動をカスタマイズする」の「今すぐ再起動」をクリック。
この後青い画面が出てくる
「トラブルシューティング」を選択
「詳細オプション」を選択
「Windowsのスタートアップ設定」を選択すると、
「ドライバー署名を強制しない」などが並んでいる画面が出る。
「再起動」ボタンをクリック。

再起動の途中で「詳細ブートオプション」の黒い画面になる。
ここで「ドライバー署名の強制を無効にする」を選ぶ。

単にドライバー署名がないというだけなら、これで解決できるような気がする。
F8でブートメニューに入るのはWin8では使えなくなったそうだ。
その代わりに、Shift+F8をつかえ、と書かれていた。けどそれはうまくいかなかった。

2014年11月4日火曜日

rasbbery piでNFCカードを読み込む

rasbbery pi でNFCカードリーダーをつなげて読み込みする実験する前段階の情報あつめ。

どうもlibpcscliteというものを使うと読めるらしい。

ライブラリの場所は
  /usr/lib/arm-linux-gnueabihf/libpcsclite.so.1.0.0

もう少し情報収集しようと思う。

http://qiita.com/takanemu/items/1e6ef1207e5261040f05

http://d.hatena.ne.jp/imaiworks/20130618/1371588611

Androider