Archive
VS ffmpeg
今まで貯めてきた映像は殆どエンコードせずに、 DVD 化してきたため、
やたら容量に無駄が出たのですが、 今年のF1 を録画するに当たって mp4 化して、
余裕が有れば HDD に保存することにしました。
そんなわけで、 ffmpeg の設定を適当なジングル映像で詰めていたのですが、
ffmpeg のインターレース解除って、結構乱れが目立ちますね。
で、詰めていった結果がこんな感じの設定。
ffmpeg -threads 3 -y -i “hoge.mpg” -pass 1 -passlogfile “Temphoge.mp4″ -bufsize 1M -r 29.97 -b 3.5M -maxrate 4M -qmax 40 -vcodec libx264 -acodec libfaac -ac 2 -ar 48000 -ab 256k -f mp4 “Temphoge.mp4″
ffmpeg -threads 3 -y -i “hoge.mpg” -pass 2 -passlogfile “Temphoge.mp4″ -bufsize 1M -r 29.97 -b 3.5M -maxrate 4M -qmax 40 -vcodec libx264 -acodec libfaac -ac 2 -ar 48000 -ab 256k -f mp4 “hoge.mp4″
3スレッドなのは、保険みたいな物。
長い長いエンコードがはじまるお。
行数のカウント
用途が用途だけに行数をカウントする処理を結構書いたりするのですが、
今まで file 関数で配列に入れて count 関数で取得という方法を主に使っていたんですよね。
最近になって、クローラーの改良時に実は foepn も結構早いんじゃね?
ファイルアクセスも減るんじゃね?という感じでベンチマークを取ってみました。
まずは、 file 関数を使った例。count も sizeof もエイリアスなので、どちらでもOK。
$buf = file(”hogehoge.dat”); //1001行のファイル
$count1 = count($buf);
unset($buf);
これは、1000回ループで 4.653011 秒という結果になりました。
一方 fopen を使ってカウントする例。
$fp = fopen(”hogehoge.dat”, “r”); //1001行のファイル
for ($count2=0;!feof($fp),fgets($fp);$count2++);
fclose($fp);
こちらは、 3.800635 秒とコンマ7程度早くなりました。
しかし、結局1000回実行してやっとコンマ7という結果でした。
早いには変わりないと思いますが…、まぁこんなもんなのかなぁ。
NAS化の地上絵
新鯖君
てなわけで、新鯖君を調理中。
SATA端子が充実。
ML115を買おうと思わなかったのは、AMD系と言うことも有るんだけど、
IDEが無いってのは過去の資産が使えないので結構痛いです。
IDEの空きポートが1つ、SATAの空きポートが5つあるので、
その気になればかなりのHDDを積むことが出来ます。
また、一般のATX電源が使えるので、電源容量の心配もありません。

ケースファンは自作で買うと高い山洋電気製を3つ搭載。
これはOEM専用の型番みたいです。
サイドパネルを明けるときは金具に注意しないと指にサックリ行きます。
というか、サックリ行きました\(^o^)/
また今度、もうちょっと鮮明な画像をうp予定
新鯖
==【配送内容1】====================
[1]Express5800/110Ge(C/1.80G(512)-80) NP8100-1447YP2Y (NEC)
商品コード: P812524391
販売価格 : 12,800円
(クーポン2,000円分適用済)
数量 : 1個
送料等: 400円
代引き手数料: 420円
送料無料: -400円
――――――――――――――
合 計: 13,220円
(うち消費税: 629円)
てなわけで、新鯖を手配。
Express5800/100Ge はCeleron 430 なんだけれども、
Pentium 4 換算で3GHz近いみたいなので、とりあえずは様子見。
メモリはまだ買ってないけど、8GB詰みたいなぁ。
あ、HDDも…。
PHPの気を付けたいところ
ファイルの中身を配列として読み込む file という便利関数があるんですが、
これにはちょっと使い時があります。
PHP には memory_limit という設定があり、この設定値を超えると
処理が出来ないため、エラーになってしまいます。
実は file 関数とこの設定値は結構リンクしていて、memory_limit をバケツに例えると
バケツに対してバケツの容量以下の水を扱うには良いのですが、
バケツに対して、25mプール一杯の水を注ごうとするとあふれてしまうのと同じように下記のエラーになってしまいます。
Allowed memory size of xxx bytes exhausted (tried to allocate xxx bytes)
つまり、あまりにも大きいデータを読み込む時に file 関数は向いていないのです。
こういった場合、どうしたらいいのか?
答えは簡単で、 fopen でファイルを開いて fgets すれば良いだけです。
fopen はファイルポインタですから、使用した時点ではファイルの内容は読み込みません。
fgets を使用してはじめて読み込むわけですが、 fgets は指定バイト数もしくはEOFまでの読み込みであり、
巨大なデータでも行端で切り刻んで読み込むことが出来るため、前述のようなエラーにはならなかったりします。
file_get_contents も file と同じようなものと考えて組んでいかないと変なところでエラーが出てしまうので、
使い所には注意するべきですね。
あと、 PHP は一度スカラー変数として定義したものは、スカラー変数としてしか使えないので、
<?
$hoge = 1234;
$hoge[0] = 5678;
?>
というようなものを書くと Cannot use a scalar value as an array というエラーになりますよん。
見積もり
The Hunter
超マイナーゲーのThe Hunter。
どんなゲームかというと、朝方に鹿さんを銃で撃つために探しに行くゲーム。
一応、無料ベータなのですが、申し込みからかなり経ってVIP Codeの記載されたメールが来ました。
↓4亀の記事
リアルさがウリのオンライン狩猟シム「The Hunter」,まもなくβテスト
http://www.4gamer.net/games/071/G007177/20080918049/
2時間やって、まだ1頭しか仕留められてないけど、おもしろい。
MGS3みたいなジャングルではないけど、森を散策するゲーム楽しいな。
並列クローラー
cURL関数の説明をちょっと読んだら面白そうだったので、クローラーの取得部分を並列化してみました。
これで、単線だったローカル線がいきなり、複々線化してさらに高架も建設したような感じに成長。
気になる取得数は3000スレ/hourをもうすぐ超えるのではないかというほど。
同時処理数をあんまり多くするとセッションがドンドン食われるので、
その辺りは負荷と兼ね合うようHTTPの標準的な数値に調整。
これでクローラーのメジャーバージョンはv6になった。
# Blu-ray マイスター検定クイズでも95%を超えたので、
# マイスター認定証が貰えるらしい。 現在109人中 16位だそうで。



