So-net無料ブログ作成
検索選択

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 の環境が出来た。


タグ: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で再生してみると、全部のファイルが問題なく再生出来ることを確認した。
再生するソフトの問題なのかな?

タグ:Raspberry Pi
メッセージを送る

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。