2007-07-10
シリアルポートを扱うのは簡単だ
2007-07-04
iPhoneのrootアカウントのパスワードがクラックされた
2009年11月5日追記:二年前のこの記事が、にわかにPV数を得ている。何故かというと、こういう事があったからだ。間違えてここに飛んできた人の為の便宜を図るために、リンクしておく。
ロック解除のiPhoneを人質に、「身代金」の要求騒ぎ - ITmedia News
http://www.hackint0sh.org/forum/showthread.php?t=1323
rootアカウントのパスワードは、"alpine"
mobileアカウントのパスワードは、"dottie"
パスワードのセンスを褒め称えるべきだろうか? ちなみに、パスワードは古き良きDESでハッシュされているらしい。今となっては懐かしい暗号だ。クラックには、John the Ripperで15秒だったとか。
まあ、iPhoneは携帯である。マルチユーザなどといった使い方は想定していないし、そもそもiPhoneのシェル上から、rootにログインする方法がない。iPhoneにはターミナルなどないし、セキュリティ上の問題になることも無い。rootアカウントへのログインはまだ試みられていないようだが、そもそもUIが動くのかどうか疑問のようだ。
2007-07-01
FLV ファイル
2007-06-30
2007-06-27
mencoder doesn't support vp7 well
mencoderでVP7のエンコードをしてみようと思ったのだが、どうもうまくいかない。
まず、vfw2mencでエンコードの設定を保存しようとしたのだが、保存したファイルを、mencoderで読み込ませようとすると失敗する。設定ダイアログを開くことはできるので、手動でエンコードしようとしたが、これもうまくいかない。エンコードはできるのだが、再生できない。不思議に思って出力されたAVIファイルを調べてみると、どうもFourCCの値がおかしい。VP70であるべきなのに、変な値になっている。そもそも、可読域ではない値だ。バイナリエディタでVP70に修正してみると、あっさりと再生できた。
問題は、ffourccオプションが働かないとはどういうことだろう。何のためのfourcc強制オプションだ。
肝心のVP7の画質だが、かなりのっぺりとした結果になる。ウェーブレットでもかけたような感じだ。恐らくアニメなどをエンコードするにはいいと思われる。FLVの動画コーデックの指定には4ビットが使われており、現在6種類のコーデックをサポートしている。つまり、まだ10個分空きがあるのだ。もし、FLVでサポートして欲しいとしたら、何を望むだろう。H264、VP7などだろうか。
なお、今回思わぬ発見をした。mplayerでVP6を再生するとやけにブロックノイズが目立つが、これはffmpegのVP6の独自実装のデコーダのためである。vp6vfw.dllでデコードするためには、-vc vp6 と指定してやれば良い。2007-06-25
2007-06-20
危険なセキュリティソフトウェア
2007-06-17
How do i encode ローゼンメイデン風アンパンマン
2007-06-11
Human's ear is stupid
2007-06-05
how do i get rid of disgusting interlace
追記:自動改行に頼っていた古い記事を整形。内容は結構古いので、今はどうなっているか分からない。
ソー、ディスタイム、ウィーアーゴーイングトゥトークアバウトデインターレース。
さて、インターレス解除の方法であるが、その前にひとつ、どうしても言わなければならないことがある。
曰く、「完璧を求めるならば、アナログなディスプレイで見ればいい」
本当に、これに尽きる。完璧なデインターレス方法などない。最良の方法とは、最初からインターレスなソースを用いないことだ。とは言え、入手可能な最良のソースがインターレスを含んでいることは往々にしてあることだ。なんとかして、インターレスは除かねばならない。
さて、mencoderに詳しくない者は、ひょっとしたら、mencoder以外でインターレスを解除しているかも知れぬ。ところが、mencoderには、最強のインターレス解除方法も備わっているのだ。早速見ていこう。
インターレスを解除するには、vf 引数、つまりビデオフィルタを使う。最も単純なのは、ppから始まる一連のフィルタだ。たとえば、pp=lbはLinear Blendであるし、pp=liはLinear Interpolationだ。基本的にこれらを使う。個人的には、PP系の中では、Cublic Interpolationがお勧めだ。これらは組み合わせて使うことも出来る。たとえば、pp=ci,pp=l5は、キューブリックインターポレーションの後に、ローパスフィルタをかけている。
PP以外のデインターレスフィルタはどうかというと、こちらはより賢い方法を採用している。たとえば、動画が実際より3/2フレーム数の多い、テレシネであった場合、逆テレシネを利用して、実に効果的にインターレスの解除が行える、pullupやfilmdintなどだ。もちろん、このフィルタを利用するには、テレシネ動画で無ければならないのだが。
さて、テレシネ動画でない場合、どうすればいいのか。ここで、かなり汎用的に使えて、性能のいいフィルタがある。yadif(Yet Another DeInterlace Filterの略)というフィルタだ。この性能はすばらしい。たいていの場合で、困ることはない。使い方だが、1フレーム毎に処理したいならば、yadif=0を使う。1フィールド毎に処理したいならば、yadif=1を使う。2や3は、spatial interlacingを行わない、0や1のことだ。yadif=1を使う場合は、framestep等を使い、フレームを脱落させるか、あるいは出力するFPSを倍にしないと、泣きを見ることになる。フレームがフィールド単位に分離されているからだ。単純に2倍になる。
さて、更なる高みを目指したい人は続きを読んで欲しい。最強のフィルタがある。その名はmcdeintだ。これは、動き補正をしつつインターレスを解除を行うという、恐ろしいフィルタだ。何が恐ろしいといって、物凄く遅い。現状のどんなCPUを使っても、エンコードのFPSは一桁を切るだろう。0.1、0.01の世界にまで落ち込む。
使い方は次の通り、
yadif=3,mcdeint=2,framestep=2
mcdeintは、それ自体でフィールド分離機能を持っていないので、フィールドを分離する、tfields=1や、yadif=1, yadif=3などを一緒に使わなければならない。そして、FPSが倍になっているので、単純にフレームを脱落させ、元のFPSに戻すか、FPSを倍にしなければならない。なお、mcdeint=3ならば、さらに遅くなる。これは劇的に遅いが、最強だ。
2007-06-04
ふと思った
2007-05-26
高部真規子裁判長のおかげで、日本国内においてネットワークストレージが違法と相成りました
http://headlines.yahoo.co.jp/hl?a=20070525-00000119-mai-soci
これはどんなサービスかというと、ユーザが、自分の持っているCDを、MYUTAの提供するサーバにアップロードでき、そのユーザの携帯電話に落とすことができるというものだ。記事やプレスリリースを見る限り、ユーザ個人だけで完結するサービスのようで、他のユーザの音楽を落とせるサービスではないようだ。
東京地裁の「高部真規子」裁判長がだした判決のようだ。こんなもので訴えるJASRACもJASRACだが、判決を出す高部真規子も高部真規子だ。もはやこれはJASRACがどうとかいう問題を通り越してあきれてしまう。なんという裁判長。これはすばらしい。日本国内では、ネットストレージサービスが違法になってしまった。この解釈で行くと、Webサーバ、POP3サーバなどのレンタルは違法になってしまうだろう。
なんという判決だろう。これはまずい。
しかし、ぐぐってみたところ、この高部真規子という人間、恐ろしくトンデモ判決を多数出しているようだ。 あの有名な、松下がヘルプの機能で一太郎を訴えた裁判も、この高部真規子が出したらしい。 裁判官ってどうやって罷免させられるのだろう。2007-05-19
FLV file structure
2007-05-17
how to change console's font?
2007-05-13
一度生を受け、滅せぬ物のあるべきか
思へば、此世は常の住処にあらず。草葉に置く白露、水に宿る月より猶あやし。金谷に花を詠じ、栄花は先立て、無常の風に誘はるゝ。南楼の月をもてあそぶ輩も、月に先立つて、有為の雲に隠れり。人間五十年、化天の内を比ぶれば、夢幻のごとくなり。一度生を受け、滅せぬ物のあるべきか。これを菩提の種と思ひ定めざらんは、口惜しかりき次第ぞ
有名なところを超口語訳
つーか、人間ってせいぜい50年しか生きられねーよ。最下層の天使でさえも、八百年ぐらいはいきるっつーのによぅ。生まれたらそりゃ当然死ぬんだよ。これが定めか。なんつーこった
幸若舞『敦盛』(全文)
http://www.ikedakai.com/atsumori.html
2007-05-12
動画サイトの未来
ひろゆき氏、「ニコニコ」ヒットでも「動画は“来て”ない」
http://www.itmedia.co.jp/news/articles/0705/11/news117.html
まあ、PV数だけは無駄に稼いでいるが、大赤字だろう。トラフィックが膨大だからといって、広告料も上げてくれるわけではない。それもあるのだが、日本の動画の特徴が気になるところだ。ほとんどがアニメである。確かに、アニメといえば日本なのだが、それは所詮、作られたコンテンツである。自分で動画を作ってあげようという人が、あまりにも少ない。たとえば、YouTubeで最も人気の高い動画は何かというと。
つまり、個人が作った動画というのがほとんどない。たとえば有名なUnreal Gamer(キーボードクラッシャー)の動画は、狙って作られたものである。この少年が、別の動画でなにやら話しているものも、アップロードされている。こちらは普通に話しているだけなので、あまり人気はないが。
これは、誰でも作れるのだ。しかし、日本人はこういう動画を作ろうとしない。既存のアニメをいかに画質良くエンコードしてニコニコに上げるかにはこだわっても、自前でいかに面白い動画を作るかについては、まったく考慮しない。まあ、かく偉そうなことをいうからには、自分で作って見なければならない。そんなわけで一連の動画をここにリンクしておく。
2007-05-09
how do i use mencoder for two pass encoding
what niconico wiki's mencoder batch file doing?
前回、mplayerとmencoderについての概要を説明した。今回は、ニコニコ動画のまとめWikiにある、mencoderのバッチファイルが何をしているかを説明してみる。なお、今回は、mencoderのドキュメントを参照しつつ、読んで欲しい。 http://www.mplayerhq.hu/DOCS/man/en/mplayer.1.html
これが、FLV4enc_D&D.batの中身である。1パスの、重要な部分だけを抜き出してある。基本的に、最後のmencoderが重要なのだ。このバッチファイルは、FLVにエンコードして、ニコニコにうpするための、最小限のことだけをしている。これを理解して、自分で変更できるようになれば、さらに画質や音質を上げられるだろう。
まず最初のFORMAT変数には、-ofオプションを使い、どのフォーマットで出力するかが指定されている。明示的にflvを指定してもいいのだが、このバッチファイルではそれはしていない。次に、-lavfoptsオプションを使い、出力する動画が、Bフレームを使用していないことを明示している。現在、mencoderではBフレームの出力がサポートされていないからである。 VCODEC変数で、コーデックを指定している、これは、vfw(Video For Windows)を使う。つまり、vp6vfw.dllのことだ。次に続く-xvfwoptsオプションで、読み込むDLLファイルを指定している。また、コーデックの設定ダイアログを開くようにしている。コーデックの設定を自動化する方法があるのだが、それは2パスエンコードのときに説明するつもりだ。
余談だが、mencoderで、とうとう2パスエンコードができるようになったのだ。パッチがいつ、公式のMLに投げられるのか、不明ではあるが、diffは確保したので、いざとなればなんとでもなるだろう。私もUNIX環境のプログラミングを勉強すべきだろうか。
次は音声である。このバッチファイルは、いかなる動画ソースからでも、ニコニコに受け付けられるFLVを作成することを目的としているので、音声はエンコードされる。もし、自前でエンコードした音声がある場合、それを単にコピーすれば、再エンコードされずに、音質がよくなるだろう。FLVコンテナでは、無圧縮PCM、ADPCM、mp3をサポートしている。また、マイクで録音する際に、Nellymoser codecを使用しているようだが、このコーデックの仕様はよく分からない。現在のところ、オープンソースのデコーダーも見当たらない。 mp3へのエンコードは、-oacオプションで、mencoderに組み込まれているmp3lameを利用している。また、FLVコンテナは、 44.1kHz 22.05kHz 11.025kHzのいずれかのサンプリングレートでなければならないようなので、トラブルを防ぐために、-afオプションで、44.1kHzにリサンプルしている。ただし、このリサンプルは、次のEXTOPTで設定されている。ここが個人的に好きではないので、私の自前のバッチファイルでは、変更しているが。
さて、いよいよEXTOPT変数だ。ここにはまず、-vfオプションが指定されている。これは、ビデオフィルタという意味で、文字通りフィルタだ。 まず、flip、これは、VP6のデコーダであるVP6Fが上下反転した出力をするので、workaroundとして入れてある。最初から上下反転したフレームにしておけば、さらに上下反転して、意図通りにデコードされるという寸法だ。しかし、なぜこんなあまのじゃくな仕様なのだろう その次に、動画を512x384にスケーリングする。この解像度でなければ、SIMLEは再エンコードをしてしまうからだ。次に、-swsオプションで、スケーリングのアルゴリズムを設定してる。現在のところ11種類のアルゴリズムが実装されている。9というのは、lanczosアルゴリズムである。非常に品質のいいアルゴリズムとして有名だ。ほとんどの場合はこれでいいのだが、たとえばドット絵、ファミコンやスーパーファミコンなどの動画をエンコードするときは、4のnearest neighborがお勧めかもしれない。もちろん、エンコードする過程でかなり劣化するし、元ソースの画質にも影響されるので、どちらがいいかは、好みの問題ではある。また、先に説明したように、ここで音声リサンプルのための-afオプションが指定されている。 そのあとは、出力と入力のファイルを指定しているだけだ。
PS. やはり、バッチファイルを修正した。-afオプションと、%INPUT%にダブルクオーテーションがついているのを修正した。ダブルクオーテーションは、INPUT変数自体に含めるべき。
what is mplayer and mencoder and why i have to use them?
mplayerと、mencoderについて、説明を試みる。なお、これはニコニコ動画に動画をアップロードすることを前提に書いている。
mplayerとは、恐ろしく高機能な動画プレイヤーである。かなりの数の動画を再生できる。何がすごいのかというと、すべて自前でデコードしていることだ。しかし、もともとはLinux用のプログラムであり、Windowsで使う上では、必ずしも使い勝手や画質がいいとは言いがたい。基本はCUIである。ではなぜ、これがニコニコ動画にアップロードする上で、最適なのか。それは、mencoderの存在である。 mencoderは、mplayerとほぼおなじコマンドラインオプションを持っている。mplayerはプレイヤーであるし、mencoderはエンコーダーだ。 ニコニコ動画には、FLV形式の動画を直接アップロードできる。このとき、600kbpsで40MBの範囲に収まっていれば、再エンコードされずに、そのまま使われる。この制限は、かなり厳しい。
FLVというコンテナには、いくつかの動画形式を格納できるが、その中でも極めて、低ビットレートに置いても画質が優れているのが、On2 TecnologyのVP62だ。H263もそれなりにいいのだが、600kbps以下という厳しい制限では、VP62が圧勝してしまう。
さて、VP62にエンコードするには、ffmpegでエンコードするか、On2 Tecnologyのvfw(Video For Windows)コーデックである。vp6vfw.dllを使うしかない。ffmpegに実装されているエンコーダーはあまりよろしくないので、本家のvp6vfw.dllを使うことになる。mencoderは、それ自体で多数の動画形式へエンコードできるのだが、vfwコーデックを使うことも出来る。そのため、非常に使い勝手がいい。ちなみに、x86 Linuxで、Windowsのdllを使うために、非常に興味深いLoadLibraryの自前実装があるのだが、それはまた別の話。 それだけではない。mencoderは、その辺の安っぽい動画編集ソフトウェアよりも、よほど優れた動画編集能力を持っているのだ。まず、デコード、エンコードできる動画形式が多い。mpeg1/2/4はもちろんのこと、VOBなども問題ないし、ASF/WMA/WMV, QT/MOV/MP4, RealMedia, Matroska, NUT, NuppelVideo, FLI, YUV4MPEG, FILM, RoQ, PVAと、有名どころの形式は、余すところなくサポートしている。ffmepgに感謝すべきか。 また、基本的なフィルタも有しており、上下左右反転や回転はもちろんのこと、スケーリング、アスペクト比変更、ブラックバンドの追加、ノイズ除去、フレームレートの変更(単純な脱落から、フレームの合成まで)、テレシネ、逆テレシネ、シャープ、ブラー、インターレス解除ができる。とくにインターレス解除やスケーリングは、かなり多数のアルゴリズムを使うことが出来る。ロゴの削除なる機能もあるが、これをまともに使うのは難しそうだ。
と、ここまで説明すると、「おいおい、なぜCUIな貧弱ツールでフィルタなど使わなければならないんだ。この俺が使っているクールでイージーでGUIなツールでフィルタをかけたほうがいいじゃないか」と言う人がいるかもしれない。CUIであることの利点は、自分でコードを書いて、簡単にバッチ処理ができたりすることもあるのだが、なによりすばやいことだ。複雑なGUIでは、あるフィルタをかけるためには、メニューからフィルタの適用を選択し、ダイアログから目的のフィルタを選んで、パラメータを指定しなければならなかったりする。mencoderでは、-vfオプションを使うだけで、簡単に指定できる。たとえば、512x384にスケーリングしたければ、
mencoder -vf scale=512:384
とすれば良いし、400x300にスケーリングして、黒帯をいれて中央に表示し、512x384にしたい場合は、
mencoder -vf scale=400:300,expand=512:384
とすればよい。また、インターレスをLinear blendで解除しつつ、512x384にスケーリングするには、
mencoder -vf pp=li,scale=512:384
となる。非常に簡単だ。ちなみに、フィルタは並んでいる順番で適用される。インターレス解除は、一番最初に行っておかないと、泣きを見ることになる。
また、「俺のクールでイージーなGUIツールには、フィルタのプレビュー機能があるぜ」という人もいるかもしれない。この点も問題はない。なぜならば、mplayerとmencoderは一心同体、mencoderのフィルタは、mplayerでも同様に使える。だから、mplayerでリアルタイムにフィルタをかけつつ再生して、効果を確かめることもできる。 とはいっても、最高に高画質を目指す人から見れば、mencoderのフィルタは貧弱かもしれない。しかし、私のように、多数の動画にたいして、ある程度の画質を維持しつつ、寝ている間にエンコードしたいという人間には、最適なのだ。
次回は、ニコニコwikiで配布されている、mencoderを使うバッチファイルが何をしているかについて、解説する。タグ、mencoderで、一覧を見ることができる。