2009/09/30

identicon.pyの準備

identicon.pyを使いたい。
of + openCVの中におきたい気持ちがあったけど、時間がなかったのでとりあえず
外部プログラムとしてidenticon.pyを使ったpythonスクリプトで画像を吐きだしている。
ちなみにPicasaへのアップロードもpythonで組んでいるのでofで統合はしばらく先になりそう。
PILをインストールしていることが、前提なのでportでPILを入れる。

identicon.pyはここを参照
http://yappo.ne.jp/share/wiki/lang/python/misc
http://bulkya.blogdb.jp/share/browser/lang/python/misc/identicon.py

使い方はこんな感じ
from identicon import render_icon
icon = render_icon(0xDEADBEAF, 96)
あとはicon.save('%08x.png' % code, 'PNG')とかでファイル書き出し完了

[セットアップ]Mac PortでPILのインストール

まずマシンのPyhonのバージョンチェック

/Library/Python/

にバージョンごとにディレクトリがあるのでチェック
OSX 10.5.8では2.3と2.5が入っている。デフォルトでは2.5が呼ばれる
確認はとりあえず -hでみる
python -h
usage: /System/Library/Frameworks/Python.framework/Versions/2.5/Resources/Python.app/Contents/MacOS/Python [option] ... [-c cmd | -m mod | file | -] [arg] ...
2.5で大丈夫。
portでPILを探す。
port install PILは間違い。

とりあえず探す。
port search pil
py-pil
py25-pil
py26-pil
があるみたいのので、当然同じバージョン2.5を入れる。
sudo port install py25-pil

既にOpenCVなどをインストール済みなので、一発ですぐインストール終了。
ここでいきなり
python

>>>import PIL
としてもPILがないとおこられます。
portで入れたPILがきちんと呼ばれるようにシンボリックリンクを張る。
ln -s /opt/local/var/macports/software/py25-pil/1.1.6_0/opt/local/lib/python2.5/site-packages/PIL /Library/Python/2.5/site-packages/PIL


これでもう一度pythonを対話モードで起動してimportを行って確認する。
python

>>>import PIL
>> import PIL.Image
>>> import PIL.ImageFilter
>>> dir(PIL)
['Image', 'ImageFilter', 'ImageMode', 'ImagePalette', '__builtins__', '__doc__', '__file__', '__name__', '__path__', '_imaging']

ちゃんと呼べてるようです。

ここら辺を参考にしました。
MacにPython Imaging Library (PIL)をインストールする
Mac OS X 10.5にPILを入れる(MacPorts)

毎回ありがとうはてなさん

PIL1no


2009/09/16

phpのバックグラウンドで外部処理を実行する

ここを参考にhttp://www.stackasterisk.jp/tech/php/php02_02.jsp


system("/home/user/sh/convert.php $arg1 $arg2 > /dev/null &");


「> /dev/null &」をバックグランドで処理を実行することになる。

通常処理はこっち。

system("/home/user/sh/convert.php $arg1 $arg2 &");

これだとconvert.phpの処理に1分かかったら、レスポンスも1分待たないといけない。

2009/09/04

Soft Bankの動画の仕様

ソフトバンクの動画仕様はここを参照する。
動画機能貧弱すぎます。機種ごとの折り合いが取れる仕様がこれみたい
http://creation.mb.softbank.jp/others/movie_about.html

2009/09/03

mp4box古い携帯電話向けの分割処理

古い携帯電話へ動画の再生を対応させる時は動画のサイズがよく問題になります。
各社、各端末ごとに再生できる動画サイズは微妙に違っていたりします。
大体の目安として176x144の縦横で200KB以下というものがあります。
縦横のサイズはffmpegなどで変換時に設定すれば終わりですが、
任意のサイズ辺りで分割する処理にはmp4boxが良いようです。

mp4boxでサイズでファイルを分割するには下記実行します。

mp4box -split-size 190 input.3gp


完全に均等に190KBにはならないので注意が必要です。
ファイル内のランダムアクセスポイント(sync samples)の配置により、出力ファイルは指定サイズより小さいことがある。

http://agehatype0.blog50.fc2.com/blog-entry-195.html
だそうです。しかし指定サイズを超えることは無いのでこれで十分です。


http://agehatype0.blog50.fc2.com/blog-entry-195.html

phpで大きいファイルのダンプ

phpでファイルサイズの大きいもの、動画や音声ファイルなどをfopen,fread.echoで出力するときに30MB前後で出力が終わってしまうことがあります。
恐らくphpiniのmemory_limitの32MBに引っかかっているのだと思いますが、エラーが出ないのでなんともいえません。

下記のようにflush(),ob_flush()で出力することで回避できます。
flush()していないと、phpのコードが全て実行されてからブラウザの描画が始まるので、
どこかでメモリの制限が行われていると出力されないのだと思う。


header('Content-Length: '.filesize($filename));
header('Content-Type: '. $contentype);
//キャッシュを有効に
header('Pragma: Private');
header('Cache-Control: Private');
header('Expires: '.gmdate('D, d M Y H:i:s',time() + 1800) . ' GM

$handle = fopen($filename,'r');

if ($handle) {
while (!feof($handle)) {
echo fread($handle, 4096);
flush();
ob_flush();
}
fclose($handle);
}
die();

Flash Playerからも接続も確認できました。

2009/09/02

携帯電話の動画再生ページ

携帯電話で動画を再生するには、まず動画を3gp(docomo,softbank)もしくは3gp2(au)の形式に変換しておく必要がある。変換はffmpegなどを使って行います。
次にサイトに埋め込む際にも注意が必要です。キャリアごとに埋め込みの方法が違います。
auは下記のようにobjectとして埋め込みます

standby="動画ダウンロード (オブジェクトダウンロードを起動する為のリンク部分文字)">





auの参考ページ

DocomoとSoft Bankはともに3gp形式ですが、埋め込みタグが違います。
Docomo
Docomoの動画はiモーションと呼ばれす。iモーションはobjectタグを使用することで再生の制御などを行うことができます。
詳しくはドコモのサイトへ
http://www.nttdocomo.co.jp/service/imode/make/content/imotion/mp4/about/index.html

【例1】再生制限がない場合
iモーション

【例2】3回まで再生可能とする場合



FOMAコマーシャル

再生する


Soft Bankは普通にaタグで動画ファイルを設定するだけ?
Soft Bankのサイトにはコンテンツ作成についての情報が無いので不明です。

http://www.marguerite.jp/Nihongo/WWW/Mobile/Video.html


http://cgi15.plala.or.jp/~uniphi/pyuki/wiki.cgi?%B7%C8%C2%D3%B5%A1%BC%EF%28%C6%B0%B2%E8%29%2FSoftbank


http://mpweb.sytes.net/complete/pc/mobile-movie.php