Raspberry Pi で Tensorflow [Raspberry Pi]
Raspberry Pi で Deep Learning の Tensorflow を動かしてみる。
まずはインストール
ここを見て、Raspberry Pi で動くバイナリパッケージのダウンロードの仕方を見ておく。
Python3 が入っているので Python3用のパッケージをダウンロードする。
% wget https://github.com/samjabrahams/tensorflow-on-raspberry-pi/releases/download/v1.1.0/tensorflow-1.1.0-cp34-cp34m-linux_armv7l.whl
そしてインストールしてみると、
% sudo pip3 install tensorflow-1.1.0-cp34-cp34m-linux_armv7l.whl
tensorflow-1.1.0-cp34-cp34m-linux_armv7l.whl is not a supported wheel on this platform.
エラーになった。
どうやらダウンロードしたパッケージは Python3.4 用だけど、
インストールされている Python は Python3.5 ということが判明。
ソースからビルドしてもいいけど、今の目的は「とりあえず使ってみる」なので、
Python2.7用のバイナリパッケージを使うことにしてみた。
ダウンロードしてインストールする。
% wget https://github.com/samjabrahams/tensorflow-on-raspberry-pi/releases/download/v1.1.0/tensorflow-1.1.0-cp27-none-linux_armv7l.whl
% sudo pip install tensorflow-1.1.0-cp27-none-linux_armv7l.whl
今度は問題なくインストール完了。
インストール方法を見てみると、下記もやっておけと書いてあるので、やっておく。
% sudo pip uninstall mock
% sudo pip install mock
動くか確認
hello_tf.py というファイルを作って、期待通り動くかを確認する。
% vi hello-tf.py
======
#hello-tf.py
import tensorflow as tf
import multiprocessing as mp
core_num = mp.cpu_count()
config = tf.ConfigProto(
inter_op_parallelism_threads = core_num,
intra_op_parallelism_threads = core_num )
sess = tf.Session(config=config)
hello = tf.constant('hello tensorflow')
print sess.run(hello)
a = tf.constant(10)
b = tf.constant(32)
print sess.run(a+b)
======
そして実行
% python hello-tf.py
下記のように表示されれば問題なく動いたことになる。
hello tensorflow
42
サンプルの画像分類を試す
Tensorflowにサンプルで用意されている画像分類を試してみる。
既に学習まで終わった状態で提供されているので、すぐに動かして試してみることが出来る。
ただ、ネットで少し検索するとTensorflowをインストールすると
~/tensorflow/tensorflow/models/image/imagenet/classify_image.py ファイルが出来ていると
書いてあるが探してみても見つからない。
どうやらTensorflow 1.1 ではパッケージには同梱されていない様子。
よって、gihubから
classify_image.py をダウンロードしてきた。
% mkdir imagenet
% cd imagenet
% wget https://raw.githubusercontent.com/tensorflow/models/master/tutorials/image/imagenet/classify_image.py
初めの1回目は学習済みデータのダウンロードが行われてから、パンダの画像を使って
パンダと認識するかが実行される。
% python classify_image.py
>> Downloading inception-2015-12-05.tgz 100.0%
Successfully downloaded inception-2015-12-05.tgz 88931400 bytes.
giant panda, panda, panda bear, coon bear, Ailuropoda melanoleuca (score = 0.89107)
indri, indris, Indri indri, Indri brevicaudatus (score = 0.00779)
lesser panda, red panda, panda, bear cat, cat bear, Ailurus fulgens (score = 0.00296)
custard apple (score = 0.00147)
earthstar (score = 0.00117)
89%の確率でパンダであると認識できた。
学習済みデータは Raspberry Pi を再起動すると消えてしまうので、ローカルに移動して
実行できるか試してみる。
% mv /tmp/imagenet/ .
% python classify_image.py --model_dir imagenet/ --image_file imagenet/cropped_panda.jpg
これで、ローカルにある学習データを使って画像の分類が出来た。
ネットからいくつか画像データをダウンロードして、試してみた。
猫画像
% python classify_image.py --model_dir imagenet/ --image_file cat_1.jpg
Egyptian cat (score = 0.49180)
tiger cat (score = 0.25432)
tabby, tabby cat (score = 0.14356)
lynx, catamount (score = 0.03078)
mouse, computer mouse (score = 0.01840)
49%で Egyptial cat と認識した。
飛行機雲 その1
% python classify_image.py --model_dir imagenet/ --image_file jet_cloud_1.jpg
airliner (score = 0.77991)
wing (score = 0.04719)
warplane, military plane (score = 0.03326)
space shuttle (score = 0.02544)
missile (score = 0.00422)
78%で airliner。5%で wing。3%でwarplane と認識された。
飛行機雲 その2
% python classify_image.py --model_dir imagenet/ --image_file jet_cloud_2.jpg
airliner (score = 0.38874)
wing (score = 0.03683)
ski (score = 0.03144)
hook, claw (score = 0.02940)
warplane, military plane (score = 0.02702)
39%で airliner。4%で wing。3%でski と認識された。
飛行機雲は分類にもなくて、学習データにもないんだろうな・・・
まずはインストール
ここを見て、Raspberry Pi で動くバイナリパッケージのダウンロードの仕方を見ておく。
Python3 が入っているので Python3用のパッケージをダウンロードする。
% wget https://github.com/samjabrahams/tensorflow-on-raspberry-pi/releases/download/v1.1.0/tensorflow-1.1.0-cp34-cp34m-linux_armv7l.whl
そしてインストールしてみると、
% sudo pip3 install tensorflow-1.1.0-cp34-cp34m-linux_armv7l.whl
tensorflow-1.1.0-cp34-cp34m-linux_armv7l.whl is not a supported wheel on this platform.
エラーになった。
どうやらダウンロードしたパッケージは Python3.4 用だけど、
インストールされている Python は Python3.5 ということが判明。
ソースからビルドしてもいいけど、今の目的は「とりあえず使ってみる」なので、
Python2.7用のバイナリパッケージを使うことにしてみた。
ダウンロードしてインストールする。
% wget https://github.com/samjabrahams/tensorflow-on-raspberry-pi/releases/download/v1.1.0/tensorflow-1.1.0-cp27-none-linux_armv7l.whl
% sudo pip install tensorflow-1.1.0-cp27-none-linux_armv7l.whl
今度は問題なくインストール完了。
インストール方法を見てみると、下記もやっておけと書いてあるので、やっておく。
% sudo pip uninstall mock
% sudo pip install mock
動くか確認
hello_tf.py というファイルを作って、期待通り動くかを確認する。
% vi hello-tf.py
======
#hello-tf.py
import tensorflow as tf
import multiprocessing as mp
core_num = mp.cpu_count()
config = tf.ConfigProto(
inter_op_parallelism_threads = core_num,
intra_op_parallelism_threads = core_num )
sess = tf.Session(config=config)
hello = tf.constant('hello tensorflow')
print sess.run(hello)
a = tf.constant(10)
b = tf.constant(32)
print sess.run(a+b)
======
そして実行
% python hello-tf.py
下記のように表示されれば問題なく動いたことになる。
hello tensorflow
42
サンプルの画像分類を試す
Tensorflowにサンプルで用意されている画像分類を試してみる。
既に学習まで終わった状態で提供されているので、すぐに動かして試してみることが出来る。
ただ、ネットで少し検索するとTensorflowをインストールすると
~/tensorflow/tensorflow/models/image/imagenet/classify_image.py ファイルが出来ていると
書いてあるが探してみても見つからない。
どうやらTensorflow 1.1 ではパッケージには同梱されていない様子。
よって、gihubから
classify_image.py をダウンロードしてきた。
% mkdir imagenet
% cd imagenet
% wget https://raw.githubusercontent.com/tensorflow/models/master/tutorials/image/imagenet/classify_image.py
初めの1回目は学習済みデータのダウンロードが行われてから、パンダの画像を使って
パンダと認識するかが実行される。
% python classify_image.py
>> Downloading inception-2015-12-05.tgz 100.0%
Successfully downloaded inception-2015-12-05.tgz 88931400 bytes.
giant panda, panda, panda bear, coon bear, Ailuropoda melanoleuca (score = 0.89107)
indri, indris, Indri indri, Indri brevicaudatus (score = 0.00779)
lesser panda, red panda, panda, bear cat, cat bear, Ailurus fulgens (score = 0.00296)
custard apple (score = 0.00147)
earthstar (score = 0.00117)
89%の確率でパンダであると認識できた。
学習済みデータは Raspberry Pi を再起動すると消えてしまうので、ローカルに移動して
実行できるか試してみる。
% mv /tmp/imagenet/ .
% python classify_image.py --model_dir imagenet/ --image_file imagenet/cropped_panda.jpg
これで、ローカルにある学習データを使って画像の分類が出来た。
ネットからいくつか画像データをダウンロードして、試してみた。
猫画像
% python classify_image.py --model_dir imagenet/ --image_file cat_1.jpg
Egyptian cat (score = 0.49180)
tiger cat (score = 0.25432)
tabby, tabby cat (score = 0.14356)
lynx, catamount (score = 0.03078)
mouse, computer mouse (score = 0.01840)
49%で Egyptial cat と認識した。
飛行機雲 その1
% python classify_image.py --model_dir imagenet/ --image_file jet_cloud_1.jpg
airliner (score = 0.77991)
wing (score = 0.04719)
warplane, military plane (score = 0.03326)
space shuttle (score = 0.02544)
missile (score = 0.00422)
78%で airliner。5%で wing。3%でwarplane と認識された。
飛行機雲 その2
% python classify_image.py --model_dir imagenet/ --image_file jet_cloud_2.jpg
airliner (score = 0.38874)
wing (score = 0.03683)
ski (score = 0.03144)
hook, claw (score = 0.02940)
warplane, military plane (score = 0.02702)
39%で airliner。4%で wing。3%でski と認識された。
飛行機雲は分類にもなくて、学習データにもないんだろうな・・・
Raspberry Pi で RetroPie を動かし、X68kのエミュレーターを起動する [Raspberry Pi]
Rasberry Pi に RetroPie を入れて遊んでみた
RetroPie というのはいろんなエミュレータをパッケージして、
一つのランチャーから各種エミュレータを実行できるものです。
しかもPS3のコントローラが使えます。
今回は、RetroPieのインストールからX68kエミュのインストールと、
Human68k の起動までを試してみます。
インストール
RetroPie のサイトからイメージをダウンロードする。
https://retropie.org.uk/ から、Raspberry Pi 2 用のイメージをダウンロードします。
ダウンロードしたファイルはgzipファイルなので、7-zipなどで解凍します。
自分は、Windowsマシンに Bash on Ubuntsu on Windows をインストールしてあるので、
gzip -d *.img.gz で解凍しました。
microSDにイメージを書き込む
http://www.si-linux.co.jp/techinfo/index.php?DD%20for%20Windows
ここにある DD for Windows を使って、解凍したイメージファイルをSDに書き込みます。
注意点は、管理者権限で実行すること。
RetroPieの起動と設定
microSDをRaspberry Piへセットして、
テレビ、キーボードとPS3のコントローラを接続して、電源を接続します。
RetroPieのロゴが表示され、しばらくするとemulation stationが起動します。
ゲームパッドの設定
初回は、ゲームパッドの設定画面が表示されるので、
https://cloud.githubusercontent.com/assets/10035308/22185413/f10f27de-e099-11e6-97a4-ecbbc82c9e46.png
を参考にして、ボタンを割り当てていきます。
最後はHotkeysの設定をします。Selectボタンを割り当てておけばいいです。
Hotkeysと他のボタンの同時押しで、エミュレータの終了など各コマンドを実行できます。
https://retropie.org.uk/docs/First-Installation/#configure-controllers
を参考にしてください。
ファイルシステムの拡張
大きめのmicroSDを使っても、はじめは解凍したイメージファイルまでの領域しか使えないので、
すべての容量を使えるように拡張します。
emulation stationのトップ画面でRetroPieに合わせ(はじめはこのメニューしか選べないですが)
Aボタンを押し、その後 RASPI CONFIG を選択します。
次に 7 Advanced Options を選択、
次に A1 Expand FileSystem を選択すると、
ファイルシステムが拡張されます。
その後トップメニューへ戻り、STARTボタンを押し、QUITを選択、RESTART SYSTEMを選択して、
再起動します。
ロケーションの設定
RetroPieメニューから、RASPI CONFIG -> 4 Localisation Options -> I1 Change Locale -> Ja_JP.UTF-8 UTF-8を追加する、
次の画面では、en_GB.UTF-8 UTF-8を選択しておきます。
次に、RetroPieメニューに戻り、4 Localisation Options -> I2 Change Timezoneを選択し、
ASIA->TOKYO を選択します。
次にまたRetroPieメニューに戻り、4 Localisation Options -> I3 Change Keyboard Layoutを選択、
Generic 105-key (Intel) PC -> Other -> Japanese -> Japanese -> The default for the keyboard layout -> No compose keyを選択、
RetroPieメニューに戻り、4 Localisation Options -> I4 Change Wi-Fi Countryを選択、
JP Japanを選択する。
ここで一度再起動しました。
パスワードの変更
デフォルトのユーザー pi は パスワード raspberry が設定されているので、
パスワードを変更します。
RetroPieメニューから、RASPI CONFIG -> 1 Change User Password でパスワードを変更します。
WiFiの設定
RetroPieメニュー面から、WIFIを選択し、
1 Connect to WiFi networkを選択、
すると接続可能なSSIDが表示されるので接続したいSSIDを選択し、
SSIDのパスワードを入力します。
パッケージのアップデート
RetroPieメニューから RETROPIE SETUPを選択し、
U Update all installed packages を選択し、YESを選択するとアップデートが始まります。
しばらくすると終了するので、再起動します。
SAMBAの設定
必要なROMファイルなどをRetroPieへ持ってくるために、Windowsマシンからフォルダーを共有するために、
SAMBAの設定をします。
RetroPieメニューから RETROPIE SETUP -> C Configuration / tools -> 828 samba - Configure Samba ROM Shares
-> 1 Install RetroPie Samba shares と選択し、OKを押すと完了です。
これでWindowsマシンのExplorerから "\\retropie" へアクセスできるようになります。
ユーザー名パスワードを入力する画面が出たら、pi / 設定したパスワード を入力します。
もし、 "\\retropie" でアクセス出来ない場合は、"\\ipアドレス" でアクセスできます。
lr-px68kのインストール
x68kのエミュであるlr-px68kをインストールする。
まだ実験的なパッケージでソースからビルドする必要がある。
しかもX68000のBIOSやHuman68kはシャープが公開しているので、それを利用する。
RetroPieメニューからRetroPie SETUPを選択、
-> Manage packages
-> Manage experimental packages
-> lr-px68k
-> Update from source
これだけで、ソースのダウンロードからビルドまでが自動で行われる。
終わったら再起動する。
PC上で、X68000用のファイルをダウンロードする。
サイトは http://www.retropc.net/x68000/person/fsharp.htm
ROMは http://www.retropc.net/x68000/software/sharp/x68bios/index.htm
Human68kは http://www.retropc.net/x68000/software/sharp/human302/
必要なファイルは
cgrom.dat
iplrom.dat
iplromco.dat
iplromxv.dat
iplrom30.dat
HUMAN302.XDF
ダウンロードしたファイルをRetroPieへSAMBAを介して持っていく。
上5つのROMファイルは \\retropie\bios\keropi へ配置する。
ファイル名はすべて小文字にしておく。
HUMAN302.XDFは、 \\retropie\roms\x68000 へ配置します。
RetroPie では X68000 のROMファイルの拡張子は .dim/.DIM のみが有効になっているが .XDF も利用できるので設定する。
RetroPie の画面からSTARTボタンを押し、QUIT-> QUIT EMULATION STATION を選んでEmulation Stationを終了する。
$ sudo nano /etc/emulationstation/es_system.cfg
と入力して、エディタを起動し、
x68000 の拡張子(extension)の部分に、".XDF" を追加する。
その後 $ emulationstation と入力することで、再起動する。
すると今までトップメニューでは RetroPie しか選択できなかったのが、X68000 が追加される。
X68000 を選択すると、HUMAN302 というファイルが見れるので、それを選択すると、
エミュレーターが起動し、Human68k が起動する。
キーボードから dir などのコマンドを入力すると動くのが確認できる。
ちなみに、
F12キー : ディスクイメージの入れ替えやリセットなど
select+STARTボタン : エミュレーターの終了
が行える。
ただし、HUMAN302.XDF ファイルを別名でコピーして、
そのイメージをドライブ1 で設定し、
% format b:
としてみたが、うまくフォーマットできなかった。
もう少し遊んでみよう。
RetroPie というのはいろんなエミュレータをパッケージして、
一つのランチャーから各種エミュレータを実行できるものです。
しかもPS3のコントローラが使えます。
今回は、RetroPieのインストールからX68kエミュのインストールと、
Human68k の起動までを試してみます。
インストール
RetroPie のサイトからイメージをダウンロードする。
https://retropie.org.uk/ から、Raspberry Pi 2 用のイメージをダウンロードします。
ダウンロードしたファイルはgzipファイルなので、7-zipなどで解凍します。
自分は、Windowsマシンに Bash on Ubuntsu on Windows をインストールしてあるので、
gzip -d *.img.gz で解凍しました。
microSDにイメージを書き込む
http://www.si-linux.co.jp/techinfo/index.php?DD%20for%20Windows
ここにある DD for Windows を使って、解凍したイメージファイルをSDに書き込みます。
注意点は、管理者権限で実行すること。
RetroPieの起動と設定
microSDをRaspberry Piへセットして、
テレビ、キーボードとPS3のコントローラを接続して、電源を接続します。
RetroPieのロゴが表示され、しばらくするとemulation stationが起動します。
ゲームパッドの設定
初回は、ゲームパッドの設定画面が表示されるので、
https://cloud.githubusercontent.com/assets/10035308/22185413/f10f27de-e099-11e6-97a4-ecbbc82c9e46.png
を参考にして、ボタンを割り当てていきます。
最後はHotkeysの設定をします。Selectボタンを割り当てておけばいいです。
Hotkeysと他のボタンの同時押しで、エミュレータの終了など各コマンドを実行できます。
https://retropie.org.uk/docs/First-Installation/#configure-controllers
を参考にしてください。
ファイルシステムの拡張
大きめのmicroSDを使っても、はじめは解凍したイメージファイルまでの領域しか使えないので、
すべての容量を使えるように拡張します。
emulation stationのトップ画面でRetroPieに合わせ(はじめはこのメニューしか選べないですが)
Aボタンを押し、その後 RASPI CONFIG を選択します。
次に 7 Advanced Options を選択、
次に A1 Expand FileSystem を選択すると、
ファイルシステムが拡張されます。
その後トップメニューへ戻り、STARTボタンを押し、QUITを選択、RESTART SYSTEMを選択して、
再起動します。
ロケーションの設定
RetroPieメニューから、RASPI CONFIG -> 4 Localisation Options -> I1 Change Locale -> Ja_JP.UTF-8 UTF-8を追加する、
次の画面では、en_GB.UTF-8 UTF-8を選択しておきます。
次に、RetroPieメニューに戻り、4 Localisation Options -> I2 Change Timezoneを選択し、
ASIA->TOKYO を選択します。
次にまたRetroPieメニューに戻り、4 Localisation Options -> I3 Change Keyboard Layoutを選択、
Generic 105-key (Intel) PC -> Other -> Japanese -> Japanese -> The default for the keyboard layout -> No compose keyを選択、
RetroPieメニューに戻り、4 Localisation Options -> I4 Change Wi-Fi Countryを選択、
JP Japanを選択する。
ここで一度再起動しました。
パスワードの変更
デフォルトのユーザー pi は パスワード raspberry が設定されているので、
パスワードを変更します。
RetroPieメニューから、RASPI CONFIG -> 1 Change User Password でパスワードを変更します。
WiFiの設定
RetroPieメニュー面から、WIFIを選択し、
1 Connect to WiFi networkを選択、
すると接続可能なSSIDが表示されるので接続したいSSIDを選択し、
SSIDのパスワードを入力します。
パッケージのアップデート
RetroPieメニューから RETROPIE SETUPを選択し、
U Update all installed packages を選択し、YESを選択するとアップデートが始まります。
しばらくすると終了するので、再起動します。
SAMBAの設定
必要なROMファイルなどをRetroPieへ持ってくるために、Windowsマシンからフォルダーを共有するために、
SAMBAの設定をします。
RetroPieメニューから RETROPIE SETUP -> C Configuration / tools -> 828 samba - Configure Samba ROM Shares
-> 1 Install RetroPie Samba shares と選択し、OKを押すと完了です。
これでWindowsマシンのExplorerから "\\retropie" へアクセスできるようになります。
ユーザー名パスワードを入力する画面が出たら、pi / 設定したパスワード を入力します。
もし、 "\\retropie" でアクセス出来ない場合は、"\\ipアドレス" でアクセスできます。
lr-px68kのインストール
x68kのエミュであるlr-px68kをインストールする。
まだ実験的なパッケージでソースからビルドする必要がある。
しかもX68000のBIOSやHuman68kはシャープが公開しているので、それを利用する。
RetroPieメニューからRetroPie SETUPを選択、
-> Manage packages
-> Manage experimental packages
-> lr-px68k
-> Update from source
これだけで、ソースのダウンロードからビルドまでが自動で行われる。
終わったら再起動する。
PC上で、X68000用のファイルをダウンロードする。
サイトは http://www.retropc.net/x68000/person/fsharp.htm
ROMは http://www.retropc.net/x68000/software/sharp/x68bios/index.htm
Human68kは http://www.retropc.net/x68000/software/sharp/human302/
必要なファイルは
cgrom.dat
iplrom.dat
iplromco.dat
iplromxv.dat
iplrom30.dat
HUMAN302.XDF
ダウンロードしたファイルをRetroPieへSAMBAを介して持っていく。
上5つのROMファイルは \\retropie\bios\keropi へ配置する。
ファイル名はすべて小文字にしておく。
HUMAN302.XDFは、 \\retropie\roms\x68000 へ配置します。
RetroPie では X68000 のROMファイルの拡張子は .dim/.DIM のみが有効になっているが .XDF も利用できるので設定する。
RetroPie の画面からSTARTボタンを押し、QUIT-> QUIT EMULATION STATION を選んでEmulation Stationを終了する。
$ sudo nano /etc/emulationstation/es_system.cfg
と入力して、エディタを起動し、
x68000 の拡張子(extension)の部分に、".XDF" を追加する。
その後 $ emulationstation と入力することで、再起動する。
すると今までトップメニューでは RetroPie しか選択できなかったのが、X68000 が追加される。
X68000 を選択すると、HUMAN302 というファイルが見れるので、それを選択すると、
エミュレーターが起動し、Human68k が起動する。
キーボードから dir などのコマンドを入力すると動くのが確認できる。
ちなみに、
F12キー : ディスクイメージの入れ替えやリセットなど
select+STARTボタン : エミュレーターの終了
が行える。
ただし、HUMAN302.XDF ファイルを別名でコピーして、
そのイメージをドライブ1 で設定し、
% format b:
としてみたが、うまくフォーマットできなかった。
もう少し遊んでみよう。
Raspberry Pi で IchigoJam [Raspberry Pi]
専用ハードで動くBASICインタプリタのIchigoJamが欲しいなと前から思ってところへ、
(IchigoJam はこちら)
Raspberry Pi 上で IchigoJam が動くというのを聞いたので試してみた。
https://ichigojam.github.io/RPi/ からラズパイ用のファイルをダウンロードして、
解凍したファイルをFAT32でフォーマットした SDcard にコピーする。
その SDcard をラズパイにセットしてラズパイの電源をOnすると、
すぐに IchigoJam の画面が出た。
そのまま簡単なプログラムを書いて RUN すると、プログラムが動いた。
(写真はなぜかさかさま)
昔の電源ONでBASICインタプリタが立ち上がるMSXを思い出して、とても楽しい。
よく、雑誌に載ってたプログラムを入力して、改造して遊んでたころを思い出す。
この IchigoJam はネットには繋がらないけどラズパイのI/Oピンにもアクセスできるらしいし、
このままでプログラムを5つは保存しておける。
BASICの入門として子供に使わせるのも楽しいだろうか?
(IchigoJam はこちら)
Raspberry Pi 上で IchigoJam が動くというのを聞いたので試してみた。
https://ichigojam.github.io/RPi/ からラズパイ用のファイルをダウンロードして、
解凍したファイルをFAT32でフォーマットした SDcard にコピーする。
その SDcard をラズパイにセットしてラズパイの電源をOnすると、
すぐに IchigoJam の画面が出た。
そのまま簡単なプログラムを書いて RUN すると、プログラムが動いた。
(写真はなぜかさかさま)
昔の電源ONでBASICインタプリタが立ち上がるMSXを思い出して、とても楽しい。
よく、雑誌に載ってたプログラムを入力して、改造して遊んでたころを思い出す。
この IchigoJam はネットには繋がらないけどラズパイのI/Oピンにもアクセスできるらしいし、
このままでプログラムを5つは保存しておける。
BASICの入門として子供に使わせるのも楽しいだろうか?
Windows10 で bash on Ubuntu [Windows10]
Windows10 上で Linuxのバイナリがそのまま動くという、bash on Ubuntu を試してみた。
インストール
最初は Windows上でLinux Subsystemの有効化を行う。
スタートメニュー->右クリック->"プログラムと機能"
->左側のメニューで "Windowsの機能の有効化または無効化"
->"Windows Subsystem for Linux (Beta) をチェック
->再起動
開発者モードの有効化
スタートメニュー->設定->更新とセキュリティ
->左側のメニューで"開発者向け"
->"開発者モード" をチェック
インストール
コマンドプロンプトを起動して bash を実行する。
bash
"y" と入力するとインストールされる。
ここのインストールでしばらく時間がかかる。
ユーザー作成になるので、ユーザー名とパスワードを入力する。
これでインストールは完了
lsb_release -a とすると、
Ubuntu 14.04.5
と出た
host名の設定
sudo vi /etc/hosts
1行目の後ろに自分のhost名を追加する。
リポジトリの変更
デフォルトでは海外のサーバーの設定されているので、日本のサーバーへ変更する。
sudo vi /etc/apt/sources.list
ubuntu.com を ftp.jaist.ac.jp/pub/Linux へ変更する。
パッケージのアップデート
sudo apt-get update
sudo apt-get upgrade
Git のインストール
sudo apt-get install git
gcc のインストール
sudo apt-get install build-essential libtool automake autoconf pkg-config
gcc -v
4.8.4 が入っている
インストールが完了したら、スタートメニューに Bash on Ubuntu on Windows が追加される。
ここで、Webサーバーなどなどが動かせるらしい。
インストール
最初は Windows上でLinux Subsystemの有効化を行う。
スタートメニュー->右クリック->"プログラムと機能"
->左側のメニューで "Windowsの機能の有効化または無効化"
->"Windows Subsystem for Linux (Beta) をチェック
->再起動
開発者モードの有効化
スタートメニュー->設定->更新とセキュリティ
->左側のメニューで"開発者向け"
->"開発者モード" をチェック
インストール
コマンドプロンプトを起動して bash を実行する。
bash
"y" と入力するとインストールされる。
ここのインストールでしばらく時間がかかる。
ユーザー作成になるので、ユーザー名とパスワードを入力する。
これでインストールは完了
lsb_release -a とすると、
Ubuntu 14.04.5
と出た
host名の設定
sudo vi /etc/hosts
1行目の後ろに自分のhost名を追加する。
リポジトリの変更
デフォルトでは海外のサーバーの設定されているので、日本のサーバーへ変更する。
sudo vi /etc/apt/sources.list
ubuntu.com を ftp.jaist.ac.jp/pub/Linux へ変更する。
パッケージのアップデート
sudo apt-get update
sudo apt-get upgrade
Git のインストール
sudo apt-get install git
gcc のインストール
sudo apt-get install build-essential libtool automake autoconf pkg-config
gcc -v
4.8.4 が入っている
インストールが完了したら、スタートメニューに Bash on Ubuntu on Windows が追加される。
ここで、Webサーバーなどなどが動かせるらしい。
Windows10 でffmpegをコンパイル [ffmpeg]
Windows10 でffmpegをコンパイルする。
ffmpegでAACエンコーディングするには自分でコンパイルする必要があったので、コンパイルメモ。
あまりメモを残していなかったので、メモがない部分は省略。
ffmpeg 3.0 からは緩和されてるらしいので、コンパイルは不要かも。
1. mingw64 をインストールして、コンパイルする環境を整える。
2. Windows版git環境をインストールする。
3. fdk-aac のコンパイル&インストール。
4. faac のコンパイル&インストール。
5. lame のコンパイル&インストール。
6. openh264 のコンパイル&インストール。
7. opus のコンパイル&インストール。
8. xvidcore のコンパイル&インストール。
9. x264 のコンパイル&インストール。
10. ffmpeg のコンパイル&インストール。
1. mingw64 をインストールして、コンパイルする環境を整える。
省略
pkgconfig の設定とか
make の設定とか
いろいろ設定したと思うけど覚えてない
2. Windows版git環境をインストールする。
省略
3. fdk-aac のコンパイル&インストール。
ソースのダウンロード
wget http://sourceforge.net/projects/opencore-amr/files/fdk-aac/fdk-aac-0.1.4.tar.gz
コンパイル
cd fdk-aac-0.1.4
./configure --prefix=/mingw/x86_64-w64-mingw32 --host=x86_64-w64-mingw32 --disable-shared
make
インストール
make install
4. faac のコンパイル&インストール。
ソースのダウンロード
wget http://downloads.sourceforge.net/faac/faac-1.28.tar.bz2
wget http://abechin.sakura.ne.jp/sblo_files/k-tai-douga/ffmpeg/faac-1.28.diff
コンパイル
cd faac-1.28
patch -p1 < ../faac-1.28.diff
./bootstrap
./configure --prefix=/mingw/x86_64-w64-mingw32 --host=x86_64-w64-mingw32
make
インストール
make install
5. lame のコンパイル&インストール。
省略
6. openh264 のコンパイル&インストール。
省略
7. opus のコンパイル&インストール。
省略
8. xvidcore のコンパイル&インストール。
省略
9. x264 のコンパイル&インストール。
ソースのダウンロード
git clone http://git.videolan.org/git/x264.git
コンパイル
./configure --prefix=/mingw/x86_64-w64-mingw32 --host=x86_64-w64-mingw32 --enable-static
make
インストール
make install
10. ffmpeg のコンパイル&インストール。
ソースのダウンロード
git clone git://source.ffmpeg.org/ffmpeg.git
コンパイル
PKG_CONFIG_PATH=/mingw/x86_64-w64-mingw32/lib/pkgconfig \
./configure --arch=x86_64 --target-os=mingw32 --enable-runtime-cpudetect \
--enable-nonfree --enable-gpl --enable-version3 --enable-libmp3lame \
--enable-libfdk-aac --enable-libopus --enable-libopenh264 --enable-libx264 \
--enable-libx265 --enable-libxvid \
--enable-w32threads --disable-ffserver --disable-ffplay --disable-ffprobe \
--disable-debug --extra-ldflags=-static --extra-cflags="-mtune=core2 \
-mfpmath=sse -msse" --optflags="-O2 -finline-functions"
make
これで ffmpeg.exe が出来ているので、任意のディレクトリにコピーして使う。
ffmpegでAACエンコーディングするには自分でコンパイルする必要があったので、コンパイルメモ。
あまりメモを残していなかったので、メモがない部分は省略。
ffmpeg 3.0 からは緩和されてるらしいので、コンパイルは不要かも。
1. mingw64 をインストールして、コンパイルする環境を整える。
2. Windows版git環境をインストールする。
3. fdk-aac のコンパイル&インストール。
4. faac のコンパイル&インストール。
5. lame のコンパイル&インストール。
6. openh264 のコンパイル&インストール。
7. opus のコンパイル&インストール。
8. xvidcore のコンパイル&インストール。
9. x264 のコンパイル&インストール。
10. ffmpeg のコンパイル&インストール。
1. mingw64 をインストールして、コンパイルする環境を整える。
省略
pkgconfig の設定とか
make の設定とか
いろいろ設定したと思うけど覚えてない
2. Windows版git環境をインストールする。
省略
3. fdk-aac のコンパイル&インストール。
ソースのダウンロード
wget http://sourceforge.net/projects/opencore-amr/files/fdk-aac/fdk-aac-0.1.4.tar.gz
コンパイル
cd fdk-aac-0.1.4
./configure --prefix=/mingw/x86_64-w64-mingw32 --host=x86_64-w64-mingw32 --disable-shared
make
インストール
make install
4. faac のコンパイル&インストール。
ソースのダウンロード
wget http://downloads.sourceforge.net/faac/faac-1.28.tar.bz2
wget http://abechin.sakura.ne.jp/sblo_files/k-tai-douga/ffmpeg/faac-1.28.diff
コンパイル
cd faac-1.28
patch -p1 < ../faac-1.28.diff
./bootstrap
./configure --prefix=/mingw/x86_64-w64-mingw32 --host=x86_64-w64-mingw32
make
インストール
make install
5. lame のコンパイル&インストール。
省略
6. openh264 のコンパイル&インストール。
省略
7. opus のコンパイル&インストール。
省略
8. xvidcore のコンパイル&インストール。
省略
9. x264 のコンパイル&インストール。
ソースのダウンロード
git clone http://git.videolan.org/git/x264.git
コンパイル
./configure --prefix=/mingw/x86_64-w64-mingw32 --host=x86_64-w64-mingw32 --enable-static
make
インストール
make install
10. ffmpeg のコンパイル&インストール。
ソースのダウンロード
git clone git://source.ffmpeg.org/ffmpeg.git
コンパイル
PKG_CONFIG_PATH=/mingw/x86_64-w64-mingw32/lib/pkgconfig \
./configure --arch=x86_64 --target-os=mingw32 --enable-runtime-cpudetect \
--enable-nonfree --enable-gpl --enable-version3 --enable-libmp3lame \
--enable-libfdk-aac --enable-libopus --enable-libopenh264 --enable-libx264 \
--enable-libx265 --enable-libxvid \
--enable-w32threads --disable-ffserver --disable-ffplay --disable-ffprobe \
--disable-debug --extra-ldflags=-static --extra-cflags="-mtune=core2 \
-mfpmath=sse -msse" --optflags="-O2 -finline-functions"
make
これで ffmpeg.exe が出来ているので、任意のディレクトリにコピーして使う。
Raspberry Pi 2 WheezyからJessieへアップデート [Raspberry Pi]
Raspberry Pi のOSが Debian 7 Wheezy から Debian 8 Jessie に更新されたということなので、
アップデートしてみた。
アップデートには3時間以上かかるので、時間に余裕がある時にした方がいいです。
1.Wheezy の状態で最新に更新して再起動する。
% sudo apt-get update
% sudo apt-get upgrade
% sudo apt-get dist-upgrade
% sudo reboot
2.apt の参照先を Jessie に変更する。
wheezy となっているところを jessie に書き換える。
% sudo vi /etc/apt/sources.list
deb http://mirrordirector.raspbian.org/raspbian/ jessie main contrib non-free rpi
3.アップデート(ここに3時間以上かかる) して再起動する。
% sudo apt-get update
% sudo apt-get upgrade
% sudo apt-get dist-upgrade
% sudo reboot
アップデート中に、sshやapacheやsambaなどの設定を初期値に戻すか聞かれるので、Y/N で設定しておく。
4.不要なパッケージを削除して、念のために再起動する。
% sudo apt-get autoremove
% sudo apt-get autoclean
% sudo reboot
5.確認
% hostnamectl
Operating System: Raspbian GNU/Linux 8 (jessie)
jessie と出ているので成功。
6.apacheの設定
apache が動いているはずなのに http://(ラズパイのIP)/ にアクセスしても forbbiden となってうまく表示されない。
apache のログ(/var/log/apache2/error.log) を見ると、下記のようなエラーが出ていた。
AH01630: client denied by server configuration: (Directory名)
apache が 2.2系から2.4系に変わっているために設定方法を変える必要があるようだ。
% su -
% cd /etc/apache2
まずは "ServerName" を設定しておく。
% vi apache2.conf
ServerName 適当な名前
次にドキュメントディレクトリの設定。
"allow from all" の設定は "Require all granted" に変える必要がある。
% vi sites-enabled/000-default.conf
<Directory />
Options FollowSymLinks
AllowOverride None
Require all granted
</Directory>
("<"">"は全角で書いてあるが、半角で書くこと)
apacheを再起動する。
% apachectl restart
ブラウザから http://(ラズパイのIP)/ にアクセスして、Webページが表示されることを確認した。
7.その他
samba, minidlna(DLNAサーバー) など、アクセスできることを確認したところ、
問題なく動いていることが分かった。
アップデートしてみた。
アップデートには3時間以上かかるので、時間に余裕がある時にした方がいいです。
1.Wheezy の状態で最新に更新して再起動する。
% sudo apt-get update
% sudo apt-get upgrade
% sudo apt-get dist-upgrade
% sudo reboot
2.apt の参照先を Jessie に変更する。
wheezy となっているところを jessie に書き換える。
% sudo vi /etc/apt/sources.list
deb http://mirrordirector.raspbian.org/raspbian/ jessie main contrib non-free rpi
3.アップデート(ここに3時間以上かかる) して再起動する。
% sudo apt-get update
% sudo apt-get upgrade
% sudo apt-get dist-upgrade
% sudo reboot
アップデート中に、sshやapacheやsambaなどの設定を初期値に戻すか聞かれるので、Y/N で設定しておく。
4.不要なパッケージを削除して、念のために再起動する。
% sudo apt-get autoremove
% sudo apt-get autoclean
% sudo reboot
5.確認
% hostnamectl
Operating System: Raspbian GNU/Linux 8 (jessie)
jessie と出ているので成功。
6.apacheの設定
apache が動いているはずなのに http://(ラズパイのIP)/ にアクセスしても forbbiden となってうまく表示されない。
apache のログ(/var/log/apache2/error.log) を見ると、下記のようなエラーが出ていた。
AH01630: client denied by server configuration: (Directory名)
apache が 2.2系から2.4系に変わっているために設定方法を変える必要があるようだ。
% su -
% cd /etc/apache2
まずは "ServerName" を設定しておく。
% vi apache2.conf
ServerName 適当な名前
次にドキュメントディレクトリの設定。
"allow from all" の設定は "Require all granted" に変える必要がある。
% vi sites-enabled/000-default.conf
<Directory />
Options FollowSymLinks
AllowOverride None
Require all granted
</Directory>
("<"">"は全角で書いてあるが、半角で書くこと)
apacheを再起動する。
% apachectl restart
ブラウザから http://(ラズパイのIP)/ にアクセスして、Webページが表示されることを確認した。
7.その他
samba, minidlna(DLNAサーバー) など、アクセスできることを確認したところ、
問題なく動いていることが分かった。
タグ:Raspberry Pi
Raspberry Pi 2 に Ruby on Rails の環境を [Raspberry Pi]
Raspberry Pi 2 に Ruby on Rails の環境を設定してみる。
インストールする環境は下記の予定
Ruby 2.2系
Rails 4.2系
まずは今入ってる Ruby のバージョンを確認する。
% ruby -v
ruby 1.9.3p194 (2012-04-20 revision 35410) [arm-linux-eabihf]
Rubyが古いので新しいバージョンをインストールする。
その前に必要なライブラリとsqlite3のインストールをする
% sudo apt-get install libreadline-dev
% sudo apt-get install sqlite3 ruby-dev libsqlite3-dev libsqlite3-ruby
rbenv のインストール
% mkdir /mnt/hdd1/data/src/rbenv
% cd ~
% ln -s /mnt/hdd1/data/src/rbenv .rbenv
% git clone https://github.com/sstephenson/rbenv.git ~/.rbenv
インストールしたrbenvにPATHを通す
% vi ~/.bashrc
export PATH="$HOME/.rbenv/bin:$PATH"
eval "$(rbenv init -)"
% source ~/.bashrc
ruby-buildをインストールする
% git clone https://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build
rubyのインストール
% rbenv install -l
とするとインストールできるバージョン一覧が出るので、その中から2.2.5をインストールすることにした。
% export MAKE_OPTS="-j4"
% rbenv install 2.2.5
インストールに1時間ほどかかる
% rbenv versions
とすることで、2.2.5 がインストールされたことが分かる。
2.2.5をデフォルトのバージョンに設定する。
% rbenv global 2.2.5
確認
% ruby -v
ruby 2.2.5p319 (2016-04-26 revision 54774) [armv7l-linux-eabihf]
完了
bundlerをインストール
% rbenv exec gem install bundler
Railsをインストール
% gem install rails --no-ri --no-rdoc
% rails -v
Rails 4.2.6
と表示された。
これでRailsのインストールが完了。
テスト: myapp というアプリを作って動くことを確認する
% mkdir /mnt/hdd1/data/src/rails
% cd /mnt/hdd1/data/src/rails
% rails new myapp
% cd myapp
% rails s
とするとエラーが出た。therubyracer というものが見つからないらしい。
therubyracerを有効化する。
% vi Gemfile 下記の部分のコメントを削除して有効にする。
gem 'therubyracer', platforms: :ruby
% bundle install
ここでまたしばらく時間がかかる。
終わったらサーバーを起動する。ネット越しにアクセスするので、-bオプションを使用する。
% rails s -b 0.0.0.0
エラーが出なかったので、PCのブラウザからアクセスしてみる。
http://ipアドレス:3000/
なにやら動いているらしい画面が出たので、成功したらしい。
CTRL+C で停止する。
DBの処理が動くことを確認する。
% rails generate scaffold User user_id name:string
% rake db:migrate
サーバーを起動
% rails s -b 0.0.0.0
またPCのブラウザからアクセスして確認する
http://ipアドレス:3000/users
なにやら画面が出て動いてるらしい。
これでRuby on Rails の環境が出来た。
インストールする環境は下記の予定
Ruby 2.2系
Rails 4.2系
まずは今入ってる Ruby のバージョンを確認する。
% ruby -v
ruby 1.9.3p194 (2012-04-20 revision 35410) [arm-linux-eabihf]
Rubyが古いので新しいバージョンをインストールする。
その前に必要なライブラリとsqlite3のインストールをする
% sudo apt-get install libreadline-dev
% sudo apt-get install sqlite3 ruby-dev libsqlite3-dev libsqlite3-ruby
rbenv のインストール
% mkdir /mnt/hdd1/data/src/rbenv
% cd ~
% ln -s /mnt/hdd1/data/src/rbenv .rbenv
% git clone https://github.com/sstephenson/rbenv.git ~/.rbenv
インストールしたrbenvにPATHを通す
% vi ~/.bashrc
export PATH="$HOME/.rbenv/bin:$PATH"
eval "$(rbenv init -)"
% source ~/.bashrc
ruby-buildをインストールする
% git clone https://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build
rubyのインストール
% rbenv install -l
とするとインストールできるバージョン一覧が出るので、その中から2.2.5をインストールすることにした。
% export MAKE_OPTS="-j4"
% rbenv install 2.2.5
インストールに1時間ほどかかる
% rbenv versions
とすることで、2.2.5 がインストールされたことが分かる。
2.2.5をデフォルトのバージョンに設定する。
% rbenv global 2.2.5
確認
% ruby -v
ruby 2.2.5p319 (2016-04-26 revision 54774) [armv7l-linux-eabihf]
完了
bundlerをインストール
% rbenv exec gem install bundler
Railsをインストール
% gem install rails --no-ri --no-rdoc
% rails -v
Rails 4.2.6
と表示された。
これでRailsのインストールが完了。
テスト: myapp というアプリを作って動くことを確認する
% mkdir /mnt/hdd1/data/src/rails
% cd /mnt/hdd1/data/src/rails
% rails new myapp
% cd myapp
% rails s
とするとエラーが出た。therubyracer というものが見つからないらしい。
therubyracerを有効化する。
% vi Gemfile 下記の部分のコメントを削除して有効にする。
gem 'therubyracer', platforms: :ruby
% bundle install
ここでまたしばらく時間がかかる。
終わったらサーバーを起動する。ネット越しにアクセスするので、-bオプションを使用する。
% rails s -b 0.0.0.0
エラーが出なかったので、PCのブラウザからアクセスしてみる。
http://ipアドレス:3000/
なにやら動いているらしい画面が出たので、成功したらしい。
CTRL+C で停止する。
DBの処理が動くことを確認する。
% rails generate scaffold User user_id name:string
% rake db:migrate
サーバーを起動
% rails s -b 0.0.0.0
またPCのブラウザからアクセスして確認する
http://ipアドレス:3000/users
なにやら画面が出て動いてるらしい。
これでRuby on Rails の環境が出来た。
タグ:Raspberry Pi
Raspberry Pi 2 mp4 ハードウェアエンコード [Raspberry Pi]
Raspberry Pi 2 にはmp4のハードウェアエンコーダーが入ってるので、動画変換が速くなるはず、
を試してみました。
ffmpegではまだ対応していないようなので、libav を試してみた。
まずは、faac,fdk-aacエンコーダーとx264エンコーダーのインストールはffmpegの時にインストールしているので、こちらを参照 。
libav ソースのダウンロードとコンパイル
git clone git://github.com/libav/libav
cd libav
./configure --prefix=/usr/local --enable-gpl --enable-nonfree --enable-libfdk-aac --enable-libfaac --enable-libx264 --enable-omx-rpi --enable-mmal
make -j 2
./avconv -codecs > codecs.txt
で codecs.txt ファイルに h264_omx が入っていることを確認した。
DEV.LS h264 H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10 (decoders: h264 h264_mmal ) (encoders: libx264 h264_omx )
動画変換テスト
変換テストに用意した元データは約1分のtest.ts
まずは、libx264 での変換は、
CPU400%使って13分以上かかった。
time ../src/libav/avconv -i test.ts -c:v libx264 -b:v 2000k -c:a libfdk_aac -b:a 48k -ac 2 -y test_libx264.mp4
real 13m16.522s
PID PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
2590 20 0 640m 368m 8128 S 394.7 39.8 1:35.10 avconv
次はハードウェアデコーダーを使う h264_omx で変換してみたところ、
CPU130%しか使っていないのに1分半で変換が終わった。
ただし、TVでこのファイルを再生するとアスペクト比がおかしくて、4:3で再生している。
time ../src/libav/avconv -i test.ts -c:v h264_omx -b:v 2000k -c:a libfdk_aac -b:a 48k -ac 2 -y test_h264_omx.mp4
real 1m31.210s
PID PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
2634 20 0 219m 39m 7728 S 130.2 4.2 0:28.47 avconv
アスペクトの調整をしようと -sar 4:3 を追加してみる。
結果変わらず。
time ../src/libav/avconv -i test.ts -sar 4:3 -c:v h264_omx -b:v 2000k -c:a libfdk_aac -b:a 48k -ac 2 -y test_sar_h264_omx.mp4
real 1m35.739s
PID PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
2667 20 0 217m 37m 7844 R 123.3 4.0 0:14.24 avconv
-aspect 16:9 を試してみるが、結果変わらず。
time ../src/libav/avconv -i test.ts -aspect 16:9 -c:v h264_omx -b:v 2000k -c:a libfdk_aac -b:a 48k -ac 2 -y test_aspect_h264_omx.mp4
real 1m33.503s
PID PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
2705 20 0 221m 41m 7832 R 128.8 4.5 0:20.26 avconv
いつものiPhone用 1280x720 16:9 に変換してみると、 -aspect 16:9 -s 1280x720
TVで見るとアスペクト比がちゃんと表示された。
ただし、時間が8分半かかってしまう。
-s オプションを指定すると時間が延びるというブログを見たが、その通りになった。
time ../src/libav/avconv -i test.ts -aspect 16:9 -c:v h264_omx -b:v 2000k -s 1280x720 -c:a libfdk_aac -b:a 48k -ac 2 -y test_aspect_h264_omx.mp4
real 8m25.143s
PID PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
2744 20 0 217m 37m 7868 R 104.5 4.0 0:41.68 avconv
他に -sar 16:9 や -sar 1:1 を試してみるが、TVで見るとアスペクト比があってない結果となった。
ハードウェアエンコーディングはうまく動いているように見えるけど、
いまいちアスペクト比が合わないので、もう少し調整が必要そう。
-s オプションのサイズ変換をして変換時間がもう少し速ければいいんだけどな。
iPhoneのVLCで再生してみると、全部のファイルが問題なく再生出来ることを確認した。
再生するソフトの問題なのかな?
を試してみました。
ffmpegではまだ対応していないようなので、libav を試してみた。
まずは、faac,fdk-aacエンコーダーとx264エンコーダーのインストールはffmpegの時にインストールしているので、こちらを参照 。
libav ソースのダウンロードとコンパイル
git clone git://github.com/libav/libav
cd libav
./configure --prefix=/usr/local --enable-gpl --enable-nonfree --enable-libfdk-aac --enable-libfaac --enable-libx264 --enable-omx-rpi --enable-mmal
make -j 2
./avconv -codecs > codecs.txt
で codecs.txt ファイルに h264_omx が入っていることを確認した。
DEV.LS h264 H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10 (decoders: h264 h264_mmal ) (encoders: libx264 h264_omx )
動画変換テスト
変換テストに用意した元データは約1分のtest.ts
まずは、libx264 での変換は、
CPU400%使って13分以上かかった。
time ../src/libav/avconv -i test.ts -c:v libx264 -b:v 2000k -c:a libfdk_aac -b:a 48k -ac 2 -y test_libx264.mp4
real 13m16.522s
PID PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
2590 20 0 640m 368m 8128 S 394.7 39.8 1:35.10 avconv
次はハードウェアデコーダーを使う h264_omx で変換してみたところ、
CPU130%しか使っていないのに1分半で変換が終わった。
ただし、TVでこのファイルを再生するとアスペクト比がおかしくて、4:3で再生している。
time ../src/libav/avconv -i test.ts -c:v h264_omx -b:v 2000k -c:a libfdk_aac -b:a 48k -ac 2 -y test_h264_omx.mp4
real 1m31.210s
PID PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
2634 20 0 219m 39m 7728 S 130.2 4.2 0:28.47 avconv
アスペクトの調整をしようと -sar 4:3 を追加してみる。
結果変わらず。
time ../src/libav/avconv -i test.ts -sar 4:3 -c:v h264_omx -b:v 2000k -c:a libfdk_aac -b:a 48k -ac 2 -y test_sar_h264_omx.mp4
real 1m35.739s
PID PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
2667 20 0 217m 37m 7844 R 123.3 4.0 0:14.24 avconv
-aspect 16:9 を試してみるが、結果変わらず。
time ../src/libav/avconv -i test.ts -aspect 16:9 -c:v h264_omx -b:v 2000k -c:a libfdk_aac -b:a 48k -ac 2 -y test_aspect_h264_omx.mp4
real 1m33.503s
PID PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
2705 20 0 221m 41m 7832 R 128.8 4.5 0:20.26 avconv
いつものiPhone用 1280x720 16:9 に変換してみると、 -aspect 16:9 -s 1280x720
TVで見るとアスペクト比がちゃんと表示された。
ただし、時間が8分半かかってしまう。
-s オプションを指定すると時間が延びるというブログを見たが、その通りになった。
time ../src/libav/avconv -i test.ts -aspect 16:9 -c:v h264_omx -b:v 2000k -s 1280x720 -c:a libfdk_aac -b:a 48k -ac 2 -y test_aspect_h264_omx.mp4
real 8m25.143s
PID PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
2744 20 0 217m 37m 7868 R 104.5 4.0 0:41.68 avconv
他に -sar 16:9 や -sar 1:1 を試してみるが、TVで見るとアスペクト比があってない結果となった。
ハードウェアエンコーディングはうまく動いているように見えるけど、
いまいちアスペクト比が合わないので、もう少し調整が必要そう。
-s オプションのサイズ変換をして変換時間がもう少し速ければいいんだけどな。
iPhoneのVLCで再生してみると、全部のファイルが問題なく再生出来ることを確認した。
再生するソフトの問題なのかな?
タグ:Raspberry Pi
Raspberry Pi 2 Windows10のインストール [Raspberry Pi]
前のブログ でPCにWindows10をインストールしたのは、
こっちをやりたいためでした。
ということで、Raspberry Pi 2 に Windows10 をインストールしてみました。
まず、必要なもの
・Raspberry Pi 2
・MicroSD 8GB以上:Linux用とは別に準備しました
・USBキーボード
・USBマウス
・有線LANケーブル
・電源ケーブルとHDMIケーブル:Linuxで使ってるものと同じ
・Windows10 の入っているPC
まずは、Windows10のPCで作業する
http://go.microsoft.com/fwlink/?LinkId=619755 から"IOT Core RPi.ISO" をダウンロードする。(クリックするとダウンロードを開始します)
その後、そのISOファイルをダブルクリックすると、ISOファイルがWindows10にマウントされる。
(Windows10ってOS標準でISOファイルのマウントに対応してるんだね)
"Windows_10_IoT_Core_RPi2.msi" というファイルがあるので、ダブルクリックしてインストールする。
インストールが完了すると、
"WindowsIoTImageHelper" というツールがインストールされるので、それを起動する。
新しく準備したMicroSDをWindows10 PCに挿して、
Refresh
-> Select the SD card
-> Select the image(.ffu)
-> "C:\Program Files (x86)\Microsoft IoT\FFU\RaspberryPi2\flash.ffu" を選択
-> Flash
とすることで、Raspberry Pi 2 用Windows10 をMicroSDにコピーされる。
Raspberry Pi 2 で作業
上のMicroSD、USBキーボード、USBマウス、HDMIケーブル、有線LANケーブルを繋いだ後に、
最後に電源ケーブルを繋ぐと電源が入る。
-> 5分後に "Welcome Windows 10 IoT Core" と表示されるので、待つ
-> さらに3分後に言語セレクト画面が出るので、"日本語"を選択
-> 次へ
でWindows10が立ち上がった。
試しに一度Shutdownをして、再度起動すると1分程度でWindows10が起動する。
起動した画面は普通のWindowsの画面ではなくて、
ホスト名と、IPアドレスが表示されてて、あとはシャットダウンとかの電源メニューだけ。
これでRaspberry Pi 2 でWindows10が動くところまで来たので、
次回は、簡単なプログラムを作って、Raspberry Pi 2 で動かすところの予定。
こっちをやりたいためでした。
ということで、Raspberry Pi 2 に Windows10 をインストールしてみました。
まず、必要なもの
・Raspberry Pi 2
・MicroSD 8GB以上:Linux用とは別に準備しました
・USBキーボード
・USBマウス
・有線LANケーブル
・電源ケーブルとHDMIケーブル:Linuxで使ってるものと同じ
・Windows10 の入っているPC
まずは、Windows10のPCで作業する
http://go.microsoft.com/fwlink/?LinkId=619755 から"IOT Core RPi.ISO" をダウンロードする。(クリックするとダウンロードを開始します)
その後、そのISOファイルをダブルクリックすると、ISOファイルがWindows10にマウントされる。
(Windows10ってOS標準でISOファイルのマウントに対応してるんだね)
"Windows_10_IoT_Core_RPi2.msi" というファイルがあるので、ダブルクリックしてインストールする。
インストールが完了すると、
"WindowsIoTImageHelper" というツールがインストールされるので、それを起動する。
新しく準備したMicroSDをWindows10 PCに挿して、
Refresh
-> Select the SD card
-> Select the image(.ffu)
-> "C:\Program Files (x86)\Microsoft IoT\FFU\RaspberryPi2\flash.ffu" を選択
-> Flash
とすることで、Raspberry Pi 2 用Windows10 をMicroSDにコピーされる。
Raspberry Pi 2 で作業
上のMicroSD、USBキーボード、USBマウス、HDMIケーブル、有線LANケーブルを繋いだ後に、
最後に電源ケーブルを繋ぐと電源が入る。
-> 5分後に "Welcome Windows 10 IoT Core" と表示されるので、待つ
-> さらに3分後に言語セレクト画面が出るので、"日本語"を選択
-> 次へ
でWindows10が立ち上がった。
試しに一度Shutdownをして、再度起動すると1分程度でWindows10が起動する。
起動した画面は普通のWindowsの画面ではなくて、
ホスト名と、IPアドレスが表示されてて、あとはシャットダウンとかの電源メニューだけ。
これでRaspberry Pi 2 でWindows10が動くところまで来たので、
次回は、簡単なプログラムを作って、Raspberry Pi 2 で動かすところの予定。
Windows10へのアップデート [Windows]
3台あるPCのうち、Windows8.1 のマシンをWindows10 へアップデートしてみた。
Windows10へのアップデートの予約をしておいたのが、
アップデート可能になったからアップデートしてみた。
他の2台は Windows7 と Vista。
7と8.1は無料で10へアップデート出来るけど、Vistaからは無料アップデート出来ないのでパッケージで
買ってこようか、検討中。
ということで、Windows8.1から10へアップデートしてみた。
WindowsUpdateを使って10へアップデートする。
アップデートは特に何事もなく終了。
立ち上がってみると、前からインストールしていたソフトなど、そのままの状態で
Windows10になった。
見た目が変わったのは、壁紙とスタートメニューかな。
コントロールパネルは、"スタート"->"Windowsシステムツール"に移動したみたい。
普段スリープをよく使うPCなので、ちゃんと動作するかを確認してみた。
"スタート"->"電源"->"スリープ"
にするが、スリープなったかならないかですぐに立ち上がってしまう。
"コントロールパネル"->"セキュリティとメンテナンス" を見ると、
メンテナンスの部分にマウスドライバーの更新が必要なことが書いてたので、更新した。
その後再起動して、スリープにしてみる。
今度はファンも止まったし、スリープ状態になったみたい。
と思いきや、1分くらいすると勝手に起動した。
"コントロールパネル"->"デバイスマネージャ"
->"ネットワークアダプタ"->LANのアダプタで右クリック->プロパティ
->"電源の管理"タブ
"Magic Packetでのみコンピュータのスタンバイ状態を解除できるようにする" をチェックする
その後スリープにしてみる。
今度は勝手に起動しなくなった。
WOL(Wakeup On Lan)を使って、Linuxサーバーから起動テストも問題なくOK。
これで問題なさそう。
一応、いくつか最新版のソフトに更新しといた。
・AMDのビデオカードのドライバを最新版に更新した。
・AVG AntiVirus 2015 Free版を最新版にした。
・iTunesを最新版に更新。
デバイスマネージャをよく見ると、
Marvell 91xx Config ATA Device
でビックリマークが出ていた。
下のURLからWindows7用のドライバをインストールした。
http://www.gigabyte.jp/products/product-page.aspx?pid=3239&dl=1#driver
Marvell RAID Driver (SATA3) for AHCI Mode
motherboard_driver_marvell_ahci.exe
Marvell Console Driver (SATA3)
motherboard_driver_marvell_console.exe
Windows10へのアップデートは環境もそのまま引き継がれるし、簡単に終わってしまった。
ただ、クリーンインストールし直した方が動作が速いという話も聞く。
一度、アップデートで環境を引き継いでアップデートした後にアクティベートしておけば、
クリーンインストールしてもライセンスは引き継げるらしいので、もう一台のPCは
それをやってみようっと。
Windows10へのアップデートの予約をしておいたのが、
アップデート可能になったからアップデートしてみた。
他の2台は Windows7 と Vista。
7と8.1は無料で10へアップデート出来るけど、Vistaからは無料アップデート出来ないのでパッケージで
買ってこようか、検討中。
ということで、Windows8.1から10へアップデートしてみた。
WindowsUpdateを使って10へアップデートする。
アップデートは特に何事もなく終了。
立ち上がってみると、前からインストールしていたソフトなど、そのままの状態で
Windows10になった。
見た目が変わったのは、壁紙とスタートメニューかな。
コントロールパネルは、"スタート"->"Windowsシステムツール"に移動したみたい。
普段スリープをよく使うPCなので、ちゃんと動作するかを確認してみた。
"スタート"->"電源"->"スリープ"
にするが、スリープなったかならないかですぐに立ち上がってしまう。
"コントロールパネル"->"セキュリティとメンテナンス" を見ると、
メンテナンスの部分にマウスドライバーの更新が必要なことが書いてたので、更新した。
その後再起動して、スリープにしてみる。
今度はファンも止まったし、スリープ状態になったみたい。
と思いきや、1分くらいすると勝手に起動した。
"コントロールパネル"->"デバイスマネージャ"
->"ネットワークアダプタ"->LANのアダプタで右クリック->プロパティ
->"電源の管理"タブ
"Magic Packetでのみコンピュータのスタンバイ状態を解除できるようにする" をチェックする
その後スリープにしてみる。
今度は勝手に起動しなくなった。
WOL(Wakeup On Lan)を使って、Linuxサーバーから起動テストも問題なくOK。
これで問題なさそう。
一応、いくつか最新版のソフトに更新しといた。
・AMDのビデオカードのドライバを最新版に更新した。
・AVG AntiVirus 2015 Free版を最新版にした。
・iTunesを最新版に更新。
デバイスマネージャをよく見ると、
Marvell 91xx Config ATA Device
でビックリマークが出ていた。
下のURLからWindows7用のドライバをインストールした。
http://www.gigabyte.jp/products/product-page.aspx?pid=3239&dl=1#driver
Marvell RAID Driver (SATA3) for AHCI Mode
motherboard_driver_marvell_ahci.exe
Marvell Console Driver (SATA3)
motherboard_driver_marvell_console.exe
Windows10へのアップデートは環境もそのまま引き継がれるし、簡単に終わってしまった。
ただ、クリーンインストールし直した方が動作が速いという話も聞く。
一度、アップデートで環境を引き継いでアップデートした後にアクティベートしておけば、
クリーンインストールしてもライセンスは引き継げるらしいので、もう一台のPCは
それをやってみようっと。
タグ:Windows10