プログラミングの最近のブログ記事

Natalっていうと、今はProject Natalが先にでるわな。

最近再びbermei氏の曲がループしだした。CampanellaとSoulSの2枚が
延々って感じに。たまに対象aも。
Amazonを見たらanNinaのアルバムが去年の年末に出てた。
なんてこった。あの時期論文書いててなぁ・・・。

試しに新宿のゲマズいったら売って無かった、なんてこった。
結局Amazonで頼む。

natal.JPG
















感想としては、対象a/ロートシルトRh-が好きなら外れはないと思う。
特に、子午線はロートシルトRh-が好きな人にはお勧め。
肥えた太陽みたいな変な曲もある。

歌詞は迷うところ。憂愁というより陰鬱な曲なら、
やはりinterface氏に分があると思った。

今考えると、夢神楽(っていう同人CD+色々なのが昔あった)とか、
メンバー凄いよなぁ。気付けばテレビアニメのOP/EDで歌ってるし。

お勧め曲は迷うところ。子午線かシメオンの海。気分に依って変わりそうだ。

そしてAmazonで一緒にこんなのも3dmath.jpg買う。






















・実例で学ぶゲーム3D数学(オライリー)
2Dデカルトあたりからオイラー角・ポリゴンetc。
ゲーム開発のための数学・物理学入門より良いという評価もあったので
こちらに。日本語に直すと、向こうのユーモアがまったく面白くないんだが、
なんとなく英語ライクなニュアンスで楽しむことにする。

iPhoneは現状Flashに対応してないため、ニコニコ動画をSafariから
見ることが出来ないのは周知である。
一応公式のアプリが開発されているとのアナウンスがあったが、現状
まだ出てきてない。
http://www.itmedia.co.jp/news/articles/0810/30/news063.html(itmedia)

一方、iPhoneにはQuickTimeが載っていて、SafariからWeb上のmp3やmp4などの
動画や音声ファイルをストリーム再生が出来る。(DLは出来ない)
見たい動画を公開サーバー上に置けば、iTunesで同期することなく
そのファイルを見ることが可能になる。
これを利用して、自分で用意したサーバーでダウンロード&エンコードの
キャッシュ動作をさせて、公開Webアプリケーションからアクセスする
mmNicoβ、mmNicoβキャッシュサービスがある。

http://moto-maka.net/touch/mmnicohelp/index.html
(mmNicoβサポートページ)

実は以前からPSPのWifiで同様に、サーバーで再エンコードをしてPSP側で
ダウンロードしPCを経由しなくても済む仕組みを用意したいと考えていた。
そこで、今回はiPhone、PSP、MP3それぞれに変換する仕組みを
perl+ffmpeg作ってみた。

nico.PNG

















perlを書いた経験がまったく無かったので、
コード量は全然無いのになかなか難儀な事に。
なのでソースはちょっと見せられるレベルじゃないんで公開しませんが、流れだけ。
基本はmmNicoβcsと一緒で、リクエストを受け付けたらその
ファイルをDLしてffmpegに渡してデコードするといった感じです。

1.フォームから動画ID(sm~)をCGIスクリプトにPOSTする。
複数のフォーマットに対応する場合はそれも併せて送る。

2.フォームの入力を調べて、動画IDと対応機種(mp3やiphone等)をそれぞれ
変数に代入しておく。

3.forkで子プロセスを生成。(ポイント?
forkする理由は、動画データのダウンロードとffmpegのエンコードに
時間がかかるため、タイムアウトしてしまう事を防ぐ関係から。
http://www.nabe.bne.jp/programing/backgraund.html(参考URL)

4.親プロセスはリクエストを受け付けたことを通知して終了する。

5.子プロセスは動画IDに基づいて動画をDLする。
perlでのDLの方法は以下サイトのソースを参考に。
http://yusukebe.com/tech/archives/20070803/124356.html
http://blog.livedoor.jp/dankogai/archives/50885358.html
http://blog.livedoor.jp/dankogai/archives/50900305.html

6.if-elsif-if文でフォーマット毎に分岐

7.systemでffmpegを呼び出しエンコード。
この時、エンコード先は公開www鯖になるようにパスを設定する。

8.変換済みリストhtmlにエンコードが済んだファイルのパスとリンクを追加

分かり辛いですがこんな感じです。
ちなみに、一般会員の場合混雑中は当然エコノミーになります。
必要なのはApache、Perl、ffmpeg、libfaac(AACライブラリ)、
libx264(H.264エンコーダ)、libmp3lame(lame・MP3エンコーダ)など。

もう少しコード整理が出来たら公開するかもしれません。
サポートは一切しません...セキュリティとかエラー処理が考慮されてないので
もし試してみる奇特な方がいたら自分で追加した方が良いと思います。
てか、mmNicoβあるから需要なさそうだ。

ちなみに、Sempron LE-1100だと途轍もなく遅くて残念な感じですw
PenDC E5x00とかAthlonX2くらいあればボチボチ使えそうな感じがします。
MP3は割と現実的に使えそうな感じです。

もひとつ、subversionでffmpegの最新版をcheckoutしたソースから
コンパイルしたものと、libx264の最新版ソースからコンパイルした
組み合わせを利用した時、特にエコノミーモードのflvをH.264に変換した場合、
libx264がnon monotone timestamps~というエラーを
吐いて止まることがあります。
このエラーについては以下のようにソースを変更し、コンパイルを
し直してみてください。

ffmpeg/libavformat/utils.c
2570行付近
if(st->cur_dts && st->cur_dts != AV_NOPTS_VALUE && st->cur_dts >= pkt->dts){
av_log(NULL, AV_LOG_ERROR, "error, non monotone timestamps %"PRId64" >= %"PRId64"\n",
 st->cur_dts, pkt->dts);
削除 return -1;
追加 //return -1;
}
if(pkt->dts != AV_NOPTS_VALUE && pkt->pts != AV_NOPTS_VALUE && pkt->pts < pkt->dts){
av_log(NULL, AV_LOG_ERROR, "error, pts < dts\n");


http://www.abclinuxu.cz/blog/mirek/2008/3/ffmpeg-patch-pro-chybu-error-non-monotone-timestamps(より)

エラーが発生した場合の戻り値return -1;をコメントアウトするだけです。
エラーを無視するので、生成する動画データがおかしくなってる
可能性がありますが、iPhoneやPSP等での再生は問題ありませんでした。
ただ、デコーダーやエンコーダーによっては弾くファイルが出来る可能性もあります。


そろそろ、ちょっとコメント欄解放して様子みてみます。
だめそうなら、再度しめるかも。
デジタル変換した加速度値を送信する関数を作る。

http://www008.upp.so-net.ne.jp/funfly/h8_3.htm

ほとんどこちらのサイトにある通りで、H8/3048のコードを3694用の
レジスタに変更するくらい。
クロック周りが変わってるので、ボーレートの設定はルネサスにある
3694のハードウェアマニュアルを参考にする。

helloworld.PNG














一文字送信と、文字列送信用の二つの関数を用意してみた。
実際のデータはX,Y,Z+αで構造体にして、バイナリデータとして扱おうかと
思ってるので、一文字送信(バイト送信)を使ってバイナリ送信の関数を
作った方がいいかもしれないな。
ただ、エンディアンの違いは注意しないと...。
(論文用の下調べしてた頃これにハマった)

このアーカイブについて

このページには、過去に書かれたブログ記事のうちプログラミングカテゴリに属しているものが含まれています。

前のカテゴリはコミックです。

次のカテゴリはメモです。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

Powered by Movable Type 4.23-ja