lt raspberry piで動画配信
DESCRIPTION
第弐回大統一デビアン勉強会( #gumdebianjp )のLT のスライドです. http://gum.debian.or.jp/2013/node/496TRANSCRIPT
Raspberry Pi でリアルタイム動画配信-ひよこch 配信-
KenichiroMATOHARA(@matoken) http://matoken.org/
自己紹介
● KenichiroMATOHARA(@matoken)http://matoken.org/
● 千葉でサーバ管理とかやってましたが3月から鹿児島で就農!
● まさに畑違いに.● でもこれまでの経験を生かして行けたらと思っています
“新型ロケット”機体載せた車両が国道で立ち往生
イプシロンロケット試験機による惑星分光観測衛星(SPRINT-A)の打上げ
平成25年8月22日(木)
Raspberry Pi でリアルタイム動画配信-ひよこch 配信-
きっかけ
● 卵用に鶏も飼っています● 有精卵を預けて孵してくれるところがある● 40個預けて37個孵る● ひよこ可愛い!
● Raspberry Pi もwebcam もある● 配信してみよう
ひよこch 配信(してました)justin.tv/matoken
Raspberry Pi ?
● 手のひらサイズのLinux ボード● 英国でコンピュータ教育向けに作られた.● 値段も$25(model A) / $35(model B)と安い● CPU は ARM を採用しており Linux のイメージが提供されている
– 標準のOS のRasdebian はDebian Wheezy ベース(今はJessie もあるぽい)
– (*BSD 等他の OS を動かしている人も)
● USB x2(model A はx1 )や RJ-45(model Bのみ)や GPIO がついていて色々遊べる.
● HDMI/コンポジット出力なのでTV に映せる.(一般のご家庭でも)
配信方法
● ブラウザ + Flash は重い● Webcamstudio 以前かじって重い&不安定だった
● 最近のffmpeg は普通にRTMP が使える– RTMP : Real Time Messaging Protocol
– Adobe Flash のストリーミングプロトコル– Ustream.tv/Justin.tv/Radoko とかとか
早速試す
● 配信サービスはJustin.tv を選択(RaspberryPi で完結できる)
● Raspberry Pi にはWebCam(UVC が楽)とWiFi アダプタPLANEX GW-USHYPER300(r8712u) を接続
– ひよこは離れの小屋にいるのでRJ-45 が無い
RasPi -+-- USB1 –- Wifi )))) AP -- Justin.tv | +-- USB2 -- WebCam --( (o> piyo ( )
ffmpeg でRTMP をサーバに投げる(Justin.tv の場合)
● 160x120 で投げてみる.マイクはないので音声は投げていない.
$ padsp ffmpeg -f video4linux2 -s 160x120 -r 15 -i /dev/video0 -vcodec libx264 -f flv "rtmp://live.justin.tv/app/live_xxxxxx_xxxxxxxx"
live_xxxxxx_xxxxxxxx 部分は,Justin.tv にlogin した状態で http://ja.justin.tv/broadcast/adv_other#fmle にアクセスして設定ファイルをダウンロード.そのファイルの中の <stream> タグの中身を書きます.
※Justin.tv はRTMP を投げるだけで配信開始
ffmpeg でRTMP をサーバに投げる(Ustream.tv の場合)
● ビデオソースをX のデスクトップにしてみている例.音声もあり.
$ ffmpeg -r 15 -s 800x600 -f x11grab -i :0.0 -f alsa -i default -acodec libmp3lame -vcodec libx264 -b 300k -ar 22050 -ab 48k -threads 4 -vsync 1 -y -f flv 'rtmp://x.xxxxx.fme.ustream.tv/ustreamVideo/xxxx/xxxxxxxxxxxxx flashver=FME/3.0\20(compatible;\20FMSc/1.0)'
太線部分のRTMP のURL は,ダッシュボードから配信したい番組のリモートからRTMP URL とストリームキーを結合してつくる.
※Ustream.tv はffmpeg でデータを流し始めた後web管理画面で配信を行わないといけない.
※Raspberry Pi では未だ試していない.PC で確認済み.
Raspberry Pi でJustin.tv への配信結果…
● frame=39659 fps= 1 q=17.0 size= 279396kB time=37567.14 bitrate= 60.9kbits/s dup=0 drop=64
160x120 でも1fps とか><
cpu が足りない><
procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----
r b swpd free buff cache si so bi bo in cs us sy id wa
2 0 0 302380 12464 68668 0 0 0 0 4082 244 91 9 0 0
2 0 0 302324 12464 68672 0 0 0 0 4053 190 99 1 0 0
1 0 0 302372 12464 68668 0 0 0 4 4067 204 95 5 0 0
1 0 0 302372 12464 68668 0 0 0 0 4058 128 100 0 0 0
2 0 0 302208 12464 68668 0 0 0 0 4047 188 92 8 0 0
1 0 0 302372 12464 68668 0 0 0 0 4089 151 99 1 0 0
1 0 0 302364 12464 68668 0 0 0 0 4125 172 96 4 0 0
1 0 0 302364 12472 68668 0 0 0 68 4049 140 97 3 0 0
1 0 0 302372 12472 68668 0 0 0 0 4047 172 97 3 0 0
1 0 0 302372 12472 68668 0 0 0 0 4047 116 100 0 0
クロックアップを試みる
● Raspberry Pi の設定コマンドから
$ sudo raspi-config
overclock Configure overclocking
で一番上のTurbo にしてみる&reboot …
frame= 174 fps= 2 q=19.0 size= 658kB time=51.14 bitrate= 105.4kbits/s dup=0 drop=55 p=40
しかし2fps><
とりあえず運用
● よく切断されるようになる(ffmpeg が落ちる)
– Shell Script でffmpeg を無限ループにした● あるときから全然配信できなくなる(ffmpeg が起動して配信開始前にffmpeg が落ちる)
– 電源付きUSB ハブ経由でカメラ&WiFi を繋いだら安定した( Raspberry Pi のUSB は140mA しか電流が流れません>< )
実用度
● 1, 2fps とはいえひよこの状態がいつでも見られる
● 温度計(物理) で温度が確認できたり● 餌や水が減ったのがリモートで解ったり
– ひよこは日々成長するので餌の量がどんどん増える
● 案外実用的
これから
● ハードウェアエンコードできるようにしたいですが….– いくつか情報をもらっていますが今のところうまく行っていません
● 画面上に温度なども合成したい.– 温度センサから温度管理もしたい(ヒーターの制御も)
● 次のひよこがやって来るまでにUpdate を…
孵卵器から出た直後
食欲が旺盛になってきた3日令
猫が興味津々過ぎてヤバイ
あの頃の可愛さはどこへ…