• VP9とvideoタグを試す

    2014年03月22日 22時22分
    Firefox 28のリリースノートの中にVP9に対応したというのが書いてあるのを見て
    VP9をいつか試そうと思っていたのを思い出したので試しました。


    VP9にエンコードするにはリファレンスエンコーダのvpxencがあります。
    vpxencはlibvpxに含まれているので、さっそくソースを入手してきたのですが
    ビルド手順はまずCygwinをインストールして~から始まっていたので面倒くさくなってやめました。

    古いドキュメントだとVSのプロジェクトファイルを使ってビルドしてねとか書いてあるのですがそんなものは入っていません。
    たぶんCygwinでええやん?みたいなノリで切られたのだと思われます。

    Unix系の環境の方は普通にlibvpxをビルドすればいいと思いますが
    私の環境ですとエンコ出来るパワーを持つマシンはWindowsなのでWindowsで動くものが欲しいわけです。


    その他の手段としてFFmpegがlibvpxを取り込んでいるのでこれを使うのが簡単だと思います
    自分でビルドするのは面倒なのでもちろんZeranoe FFmpeg Buildsを使います。

    今回はとりあえず動けばいいのでエンコードオプションは特に詰めてません。
    このあたりこだわり出すときっと大変なので・・・

    ひとまず品質だけ適度に指定してエンコードしました。
    VP9でエンコードするにはvideo codecにlibvpx-vp9を指定します。
    ffmpeg -i test.avi -f webm -vcodec libvpx-vp9 -b 2048k -level 100 -threads 4 -acodec libvorbis -aq 8 test_20140322.webm


    完成した物がこちらです。FirefoxとChromeは見られると思います。(映像ソースはFF14を録画した1920 * 1080 FPS30の動画です)

    ※回線がやばそうだったりディスクがやばそうだったりした場合このファイルは予告なく削除されます。ファイルが無くなったらそういうことです。


    エンコードして驚いたのが速度です。
    FPS 1.1とか衝撃的なスピードが出ています。
    一応使用したマシンのCPUがCore i7 3770というそこそこいい奴にもかかわらずです。

    level設定失敗したか?と思って300でも試してみたのですがFPS 3とかで大差ありません。(いやまあ3倍といえば3倍なのですが)
    いくらなんでももう少し早くないと実用には厳しいのではないでしょうか。(設定調整で改善するか?)

    映像のクオリティについては私はよくわからないので何とも言えません。
    この先は君の目で確かめてくれ!!
  • Javaで文字種を指定してURLエンコード

    2014年02月20日 18時45分
    URLエンコードと言えばRFC 3986みたいな仕様が有るものの
    言語や実装によって変換される文字種がとってもファジーな感じです。

    そのため対向システムとのやり取りの障害となることが頻繁に発生します。

    例によって今回も発生したので対応方法をメモっておきたいと思います。
    使用言語はJavaです。


    この場合の対応方法は基本的に変換する文字種を指定してURLエンコードを行うことです。

    URLエンコードの処理はそれほど難しくもないので
    自分で全部書いてしまってもいいと言えばいいのですが
    車輪の再発明を何度もするのもアレなので既存のライブラリ(Apache Commons Codec)を使用する方法です。

    1public String myUrlEncode(String source)
    2{
    3    StringBuilder sb = new StringBuilder();
    4
    5    // URLで安全な(変換しない)値を指定する
    6    // 以下は英数字のみの指定
    7    BitSet urlSafe = new BitSet();
    8    urlSafe.set(0x30, 0x3a);
    9    urlSafe.set(0x41, 0x05b);
    10    urlSafe.set(0x61, 0x07b);
    11
    12    // URLCodec.encodeUrlを上記の設定を使って実行する
    13    // 返される値は変換済み文字列のASCIIコード
    14    for (byte b : URLCodec.encodeUrl(urlSafe, source.getBytes(StandardCharsets.UTF_8)))
    15        sb.appendCodePoint(b);
    16
    17    return sb.toString();
    18}
  • プログラマの知恵袋 寝具編

    2014年01月13日 23時11分
    とあるプロジェクトが大変な状態になってしまっため
    社畜である私は久しぶりに生贄として捧げられました。

    その際実に役立つ発見をしたので広く知らしめておこうと思います。


    生贄として捧げられてしまった場合睡眠は会社で取ることになります。
    (まあまだ睡眠を許される程度の危険度です。)

    その場合に枕が無くて寝にくいなあと思っていたのですが
    たまたま隣に置いてあったシュレッダーのゴミ袋を使用したところ
    大変快適になりました。

    構造は実質クッションのような物なので当然ですね。
    中身の量を調整することにより高さの変更も容易です。

    会社にあることが一般的な代物なので覚えておくと役立つと思います。


    また、私は床で寝るよ派だったのですが
    冬場は床に体温を奪われて大変なことになったので
    椅子を並べるよ派の方が有利かなと思いました。

    冬に床で寝る場合は下に段ボールを敷くなどの工夫が必要だと思います。
    新聞紙をかけるのも保温に効果があるので覚えておきましょう。
  • avs2wav 1.0.3

    2013年08月13日 22時23分
    44Byteほどメモリリークするバグがあったので修正しました。

    avs2wav 1.0.3


    起動してすぐ終了するプログラムでたった44Byteリークしたところで
    特に何がどうというわけでもないので直すか迷いましたが
    一応バグには違いないので直しました。



    2013-11-05追記

    原因不明で再現も出来ないのですが
    ファイルがダウンロード出来ない場合があるようなので
    Blogプログラムを通さない場所にファイルを置きました。
    上のファイルと同じファイル

    こちらでも失敗するようだともうだめです。

    あと、このファイルは適当に置いただけなので
    将来的にサーバ再インストールとかしたときに存在を忘れてたら消えます。
  • Mad CatzのCyborg M.M.O. 7を買いました。

    2013年08月04日 00時09分
    Mad CatzのCyborg M.M.O. 7を買いました。
    買う前に気になっていたポイントについて
    実際にどうだったかを書いておきます。

    重い?

    レビューを見ていると重いという意見が多いようですが私は特に気になりませんでした。
    ケーブル含まず140g弱ですので他のゲーミングマウスに比べて著しく重いということは無いと思います。
    普段からLogicoolのマウス使ってたりするとむしろ軽いと感じるかもしれません。

    持ち上げる時に親指どこに置くのよ?

    5Dボタンの前あたりに置くのかと思ってましたが実際そこだけだと面積たりません。
    どれかのボタンに指が当たることになります。
    ただ、どのボタンもそれなりに堅いので、持ち上げる程度の力なら間違って押してしまうということはありません。

    左右ボタンの根元のボタンは割り当て可能?

    ActionLockというボタンですが割り当て可能です。

    不可能というのは初期バージョンの話です。
    初期バージョンもファーム書き換えで割り当て可能になるようです。
    新型、白、赤、黒では何もせずとも最初から割り当て可能です。

    割り当て可能15ボタンというのは結局どれなのか

    1. 左ActionLockボタン
    2. 右ActionLockボタン
    3. マウスホイールボタン(ホイール回転は割り当て不可)
    4. 進むボタン
    5. 戻るボタン
    6. 1ボタン
    7. 2ボタン
    8. 3ボタン
    9. 親指ホイール左
    10. 親指ホイール右
    11. 5Dボタン押し込み
    12. 5Dボタン上
    13. 5Dボタン下
    14. 5Dボタン前
    15. 5Dボタン後

    割り当て不可能なボタンはどれなのか

    1. modeボタン(左クリックの左にあるボタン)
    2. shiftボタン(右クリックの右にあるボタン)
    3. DPIボタン(ホイールの後ろにあるボタン)

    5Dボタンは押し分けられるのか

    押し分けは可能です。
    押し込みと前後は割と押しやすいです。
    下もまあ押せます。
    上はマウスが持ち上がってしまうのでかなり押しにくいです。

    親指ホイールは使えるのか

    回せないことはないですが結構窮屈です。
    ただし、指の長さで結構使い心地が違ってくると思います。

    Shiftボタンについて

    これ手の小さい人だと遠くてすごく押しにくいです。
    レビューを見ると押しやすいのに割り当てがという人も居ますので手の大きさ次第だと思います。