RPi(Arch Linux)でmjpg_streamerのビルドにつまづいた

どもどもー

 

例のラジコンの件です。

ソフトウェアはほぼ完成しているのに、回路ができていないという非常に謎い状態ですw

文化祭は明後日、今日中にでも完成させなくては・・・

 

今回のラジコンにはカメラも搭載し、コントロールページから確認できるようにしようと思っています。

ここ数日、できるだけ負荷の少なくかつ遅延のすくないストリーミング配信方法を探っていたところ、mjpg_streamerが負荷も少なく遅延も数秒程度で優秀ということがわかりました。

(ちなみにffmpeg+ffserverでは5秒以上の遅延が発生、さらにx264を使い出すと驚きの重さでしたので常用は不可と判断しました。)

しかしこのmjpg_streamer、インストールに躓いたのでメモです。

 

mjpg_streamerはAURにあったので、RaspberryPiにABSを入れて、makepkgでパッケージ生成をすることにしましたが・・・

なんと、ソース内でインクルードされているファイルのファイル名が変わっているため、パッケージは生成されるものの、一部ライブラリがコンパイルできていませんでした。

仕方ないので、一部コードを書き換えることで対処しました。

 

// 関係ありそうなパッケージのインストール
$ sudo pacman -S base-devel abs file

// AURからmjpg_streamerのtarballを持ってくる
$ wget https://aur.archlinux.org/packages/mj/mjpg-streamer/mjpg-streamer.tar.gz
$ tar zxvf mjpg-streamer.tar.gz
$ cd mjpg-streamer

// ソースをダウンロード、解凍
$ wget http://downloads.sourceforge.net/project/mjpg-streamer/mjpg-streamer/Sourcecode/mjpg-streamer-r63.tar.gz
$ tar zxvf mjpg-streamer-r63.tar.gz
$ cd mjpg-streamer-r63

// ソースコード内のlinux/videodev.hをlinux/videodev2.hに書き換える
$ grep -rl "linux/videodev.h" . | xargs sed -i 's|'linux/videodev.h'|'linux/videodev2.h'|g'

// A:アーキテクチャを無視、c:パッケージ生成後クリーン、s:依存パッケージのインストールオプションを指定してmakepkg
$ cd ../
$ makepkg -Acs

// 生成されたパッケージをインストール
$ sudo pacman -U mjpg-streamer-r63-4-armv6h.pkg.tar.xz

これでmjpg-streamerがちゃんとインストールできました。

 

実際に使ってみます。/dev/video0に接続したカメラの映像を、320x184で8080番ポートから配信する例です。

mjpg_streamer -i "input_uvc.so -d /dev/video0 -r 320x184 -f 2 -y" -o "output_http.so -w /usr/share/mjpeg-streamer/www -p 8080"

マシンの8080ポートにブラウザからアクセスすると、こんな感じに見ることができます。

また、このように記述してhtmlにimgタグを使って埋め込むこともできました。

<img src="http://MachineIP:Port/?action=stream" />

さて、あとは急いで回路を作って組み立てなければ・・・

ではでは〜

進行状況的な

どーもです

RaspberryPiで遠隔ラジコン計画がかなり進んだので報告しようかと。

 

まず、モーター制御には重要なPWM制御です。

これには、wiringPiに付属するgpioコマンドを使いました。

なお、PWMが使えるのはGPIO18pinのみです。(ソフトウェアでの制御を組めば他のpinでもPWM制御をすることができます)

// GPIO18をPWMpinとして設定
$ gpio -g mode 18 pwm

// range(0〜1024)でPWM出力
$ gpio -g pwm 18 range

 

これを使って、ShellScriptでLEDの輝度制御をしてみました。

ディレイは入れてません。

#!/bin/zsh

gpio -g mode 18 pwm
i=0
while :
do
    while [ $i -lt 1024 ]
    do
        i=`expr $i + 10`
        gpio -g pwm 18 $i
    done
    while [ $i -gt 1 ]
    do
        i=`expr $i - 10`
        gpio -g pwm 18 $i
    done
done

 

このgpioコマンドをNoe.jsから動かしてみます。

このサイトを参考にさせてもらいました。

Raspberry Piに接続したフルカラーLEDをNode.jsから制御する - 人と技術のマッシュアップ

 

また、TA7291Pを使い、DCモーターの制御もしてみました。

プログラム及び回路はまだ試作段階なので、後日うpということで。

 

ではでは〜

GentooInstallBattle!をした

どーもども

 

2013/10/1(Tue)のこと、なんかTwitterでやたら#gentooinstallbattleタグが飛んでいたんですよね。

何があったのかはよくわかってませんが、『俺も参加しなければいけないっ!!!』という衝動に駆られたのでGentooをインストールしました。

 

Gentooのインストールは昨年何度か試しましたが、カーネルのブートには成功するもののXの起動がうまく行かず放置、

目玉機能の一つでもあるUSEフラグを「気持ち悪い」と言い出してしまう始末・・・

 

ですが今回、うまく行ったのでメモも兼ねて記事にすることにしました。

 

それではとさいぬのくだらないtweetとスクショと共にお楽しみくださいw

また、この記事では「gentooのインストール方法」にはあまり触れませんのでご了承ください。

Read More »