o2tの日記

京都でIT技術者として働くo2tの日記。phpやpythonネタが多いです。

iBeaconについて

iBeacon Technologyとは、iBeaconが出すUUID/Major/Minorの値を取得して、その距離を測ることができる、今後注目の技術です。

 

「たったそれだけしかできない」とも思えますが、それをうまく使うことでスマートフォンと物理空間をつないで様々なサービスができるのでは、と考えられています。

 

まずは、以下に参考になりそうなURLを載せておきたいと思います。

 

アップルが普及を狙う「iBeacon」とは何か? その基本を押さえる

http://ascii.jp/elem/000/000/899/899293/

 

iBeacon Technologyを用いた超小型ビーコン端末『Beacon USB』を販売! 使用時の突起物サイズは僅か6mmと省スペースで、あらゆる所に設置 ~技適取得、各国電波法認証、送信出力変更可能~

http://www.atpress.ne.jp/view/45443

 

Beacon USB (Tricolor-France-)

iBeaconの発信装置がAmazonで3個12,000円で手に入るようになりました。

 

Appleから新言語「Swift」もリリースされましたし、今後ますますスマートフォン向けの開発が多くなりそうです。

マルチキャストストリーミングが必要となった経緯

マルチキャストストリーミングが必要となった経緯について。

 

仕事の関係で、Linux環境で1台(サーバ)のデスクトップをMAX140台のクライアントに同時配信する必要が出てきたため。

 

当初は、専用のアプリケーションを購入しようと思っていたが、見積をとってみると500万近くかかる、ということで却下した。また、OSSでも探してみたがうまく行かなかったため、自作することとなった。

 

参考)MultiVNC http://sourceforge.jp/projects/multivnc/

 

当初から「手間をかけず」構築し、「シンプル」につかえることを念頭において考えた結果、FFMpegにたどり着く。

 

http://d.hatena.ne.jp/hycon/20100923/1285226128

 

しかし、色々面倒な感じだったのでもう少しGoogle先生に質問してみた結果、VLCでストリーミングが出来る、という情報に辿り着いた。

 

http://www.wikihow.com/Use-VLC-to-Stream-Audio-and-Video-to-Multiple-Computers-on-Your-Network-Using-Multicast

 

やってみると、結構いい感じで出来たので、それらを管理する仕組みを考えることに。

 

いままでPHPばかり使ってきたが、海の向こうではPythonが人気、というのもあって、Pythonで開発しようと思い立った。

 

次回は、コード的な所をまとめて書く予定。

vlcでデスクトップをストリーミングする

pythonネタではありませんが、OSSの動画プレーヤーのvlcについて書きたいと思います。

 

vlcでストリーミング

vlcは無料の動画再生ソフトと思われがちですが、動画再生だけでなく様々な利用方法がります。

その中でも、特筆なのは「動画配信」機能です。

 

今回はその動画配信機能を用いて、デスクトップを動画で、マルチキャストストリーミングする方法をご説明します。各プラットフォームでファイルパス等は少し変わりますが、基本的にマルチプラットフォームですよ。

 

■用意するもの

  • 配信元PC(今回はubuntu
  • 配信先PC(今回はubuntu、何台あっても負荷は変わりません)

■手順

1.配信元PCで以下のコマンドを実行

cvlc screen:// :screen-fps=15 :screen-caching=30 --sout "#transcode{vcodec=mp4v,vb=800,scale=1}:rtp{mux=ts, dst=239.255.0.1, port=5004, sdp=sap://, name="ServerScreen"}"

 

2.配信先PCで以下のコマンドを実行

cvlc rtp://@239.255.0.1

 

詳しい解説は次回ご説明します。

pythonで日本語コメントを書きたい

知っている人にはあたりまえだけど、初心者はハマるポイントだと思います。

#!/usr/bin/env python
# -*- coding: utf-8 -*-

こんな感じで pythonのパスのあとに、文字コードを指定します。

 

その他、日本語で出力したいなどは、またのちほど。

pythonでプロセスをkillする時の作法

初めてpythonと格闘しているo2tです。

 

さて、いまpythonをつかって、Linuxでプロセスを管理するようなプログラムを作成しています。

 

プロセスを落とすとき「os.kill(pid, signal.SIGUSR1)」を使っていますが、これだとプロセスがゾンビ<defunct>となって残ってしまっています。

 

どのように対処すべきなのか、pythonのお作法を勉強中です。