• x264とffmepg

    2015年06月05日 01時16分
    動画エンコード関連は色々と難しすぎて未だによくわからないのですが
    トラブルに遭い、解消方法がわかったのでメモしておこうと思います。


    LoVAのオープンβが始まるということで
    復習用に録画を手早くエンコードする準備をしていました。

    以下の手順をbatファイルで行います
    1. x264で映像部をH.264にエンコード
    2. neroaacencで音声部をAACにエンコード
    3. ffmpegで結合


    この手順で試しにエンコードしたところ、映像がカックカクです。


    問題を切り分けて行ったところ、
    x264の出力を.264→.mp4に変更したら直りました。

    .264をffmpegで結合するとプログレスバーがニョキニョキ動いているので
    なんか映像データに手を加えておかしくなっているのだと思います。
    (.mp4だとそういうのが出なくてあっさり処理が終わります)

    ちなみにコマンドはこんな感じでした
    ffmpeg -i 映像.264 -i 音声.aac -vcodec copy -acodec copy 出力ファイル.mp4

    FPSがおかしくなっているのかと思い、試しに-rオプションで元動画のFPS(30)を指定してみたのですがダメでした。

    「このPCまだmp4box入れてないわあ、ffmepg入ってるからこれでいいや」とか横着したのがそもそも失敗だったかもしれません。


    あと、LoVAはもうだめかもしれません。
  • 俺が・・・俺たちが・・・MX Masterだ!!

    2015年04月13日 19時02分
    その昔MX Revolutionというマウスがありまして、
    私はこれを発売日に買って去年まで使っていました。

    発売が2006年らしいので8年くらい使っていた計算になります。
    その8年間も仕事とプライベートでずっと使い続けているわけでかなりの密度と言えるでしょう。

    さすがにこれだけ酷使するとボタンにはチャタリング出てきますし、
    充電の接点がうまく接触しなくなったりして、限界を感じた為引退させました。

    そうしますと新品を買い直し・・・と行きたいところですが、
    だいぶ前に生産終了していて手に入りません。
    予備を購入しようしようと思いつつ放置していたのが失敗でした。
    時既に時間切れ。私は深い悲しみに包まれた。


    何故MX Revolutionにこだわるかと言えばSmart shiftの1点に尽きます。

    一度これに慣れてしまうともう他のホイールは使う気にならないのですが、
    MX Revolution以降のどのマウスにもこの機能が付いていなかったのです。

    調教してそれ無しでは生きられない体にしておいて
    全くフォローしないLogicoolは鬼のようだと思っていたのですが、
    先日ついにSmart shiftが復活しました。


    MX Master


    SetPointの再インストールのたびにアンケートでSmart shift復活させろと送り続けたかいがありました。

    とりあえず買ってきてしばらく使ったので、
    MX Revolutionを使い続けて来た、MX Revolutionマスター。略してMXマスター視点の感想を書きます。


    まず形状ですがMX Revolutionと比べて背が高いと感じます。
    スペック的には大差ないはずなのですが・・・
    親指付け根の辺りが高い形状のせいでそう思うのかもしれません。
    まあでもこれが困るという人は居ないんじゃないかなと思います。


    注目のホイールですがMX Revolutionと同じ感覚で使えます。
    気持ち軽くなったような気もします。
    新品だからか個体差だからかもしれませんが。


    進む・戻るボタンの配置は最初違和感ありましたが、
    押すのが窮屈というわけではないのですぐに慣れました。


    サムホイールはスイッチ的なホイールから本当のホイールになったので、
    MX Revolutionでスイッチ的に使っていた人はボタンが足りなくなって困るかもしれません。
    私の場合殆ど使っていなかったので水平スクロールは便利だなあという感じです。


    ジェスチャーボタンは使い道を考えれば便利かもしれない・・・?
    今のところ未使用です。
    他の人のレビューを見ても割と持て余し気味な気はします。


    充電が専用の充電台からUSBケーブルを刺す形に変わりました。
    充電しながら使うことも出来ますし、
    充電台はすぐ接触が悪くなって困っていたのでうれしい変更だと思います。


    という感じで概ねMX Revolutionの正当後継と言っていいと思います。
    MX Revolution生産終了でお困りの方にオススメです。
    私もとりあえず3個くらい買っておこうと思います。
  • HHKBをAXキーボードレイアウトで使っているFF14プレイヤーの話

    2015年01月13日 20時28分
    この記事はタイトルに関係無い人には全く役に立たない内容と予めお知らせしておきます。

    問題

    FINAL FANTASY XIVでパッチ2.4アップデート以降、
    半角/全角キー押下でAltキーが押されたままの状態になる。

    ∧∧∧∧∧∧∧∧∧∧      ___/ ̄ ̄ ̄\
    < ┌┐  ┌───┐ >   /  / / ̄ ̄ ̄ ̄\
    < ││  └──┐│ >  /    ̄          \
    < ││  ┌──┘│ >/    □            \
    < ││  └──┐│ >// ̄~\ / ̄ ̄ ̄\      |
    < ││  ┌──┘│ >|//\ヽ ∨〃/\   \   /\
    < ││  └───┘ >//(・) \ゞ/ /(・)  〉   |  | ∩|
    < ││           >| \_/ノ  \_/ ノ し|:   | ∪|
    < ││   □   _  >l:::::::::∠~         ⌒ |   \/
    < ││   □  //  >|:::::::::r~~‐、ヽ      /   /
    < ││     //   >|:::::::::)jjjjjjjjjjjヽヽ   /   /
    <   ̄    //     >|:::::::::|,,    || /   /
    <.  ロロ┌┐ ̄ _ □□ >!:::: ヽiiiiiiiii//  /   /
    <   ┌┘│  / /     >ヽ  ヽ~~"/   /
    <     ̄ ̄  /  ̄ ̄フ  > ヽ、__,,,_∠__/
    < ┌┐┌┐ / /ニ/ /  >  _]:::::::   [_
    < ││││/┌っ /   > ̄~        ゙ ̄ ̄ ̄ ̄ヽ
    < ││││ ̄ / /    >               ,~ヽ
    < └┘└┘  / /      >             ~ ノ ̄\
    <   []  []    ̄       >           ’ノ⌒⌒⌒⌒



    原因

    HHKB Professional2をAXキーボードレイアウトで使っているためと思われる。

    AXキーボードレイアウトというのは、基本的にUSレイアウトのキーボードとして使えるが
    右Altキーを半角/全角キーとして使えるようになる設定。

    おそらくFF14のキー情報取得はスキャンコードを取っているが、
    IMEがONになったときにそのキーのUPを取りこぼすようなバグがあるんだと思う。

    Altキーは各種ショートカットで頻繁に使うので押しっぱ状態だと色々と困る。


    対応

    一応公式に不具合報告は出しているが、未だに修正されないし修正されるのかもわからないので自分で対応する。

    ちなみに私はWindowsのキーボードがどういう仕様で動いているかよく知らないし、
    こんな全国でも数人レベルしか困っていない問題に労力を割くのも馬鹿らしいので
    理論や理屈はかなり適当だと断っておく。動けば良い。
    あと文章もほぼ自分用のメモ代わりなので結構雑になるとも断っておく。


    周りに同様の現象で困っているような人は居ないので、半角/全角キーのスキャンコードのキーに半角/全角キーのレイアウトを割り当てれば良いっぽい。
    たぶんゲーム内部的には半角/全角キーのスキャンコード(0x0029)が押しっぱになっていると思うのだが、
    そのキーはIMEのON/OFFにしか使わないので表に問題として出てきてないんだと思う。

    なので、まずはキーボードのレイアウトをを日本語106キー(kbd106.dll)に戻す。
    基本的には日本語のWindowsは最初これになっていると思う。

    そうすると、HHKBの右上のキー(`キー)が半角/全角キーになるので、
    レジストリのスキャンコードの設定を変えて、右Altがこのキーになるように設定すればよい。
    ついでに同じキーが2個あっても仕方ないので、右上のキー(`キー)を日本語キーボードの|キーに変更する。

    つまりこうなる
    • 右Altキー(スキャンコード=0xe038) → 半角/全角キー(スキャンコード=0x0029)
    • 半角/全角キー(スキャンコード=0x0029) → |キー(スキャンコード=0x007d)


    ひとまずこれで右Altキーを押してIMEの切り替えが正常に行われるようになる。


    ただ、この状態だと基本的に日本語レイアウトなので、
    Shift+数字キーとか記号キーの辺りが違って非常に使いにくい。

    そこで、kbd106.dllのレイアウトを一部改造してUSレイアウトっぽくする。

    具体的にはkbd106.dllのソースがMicrosoft公式に置いてあるのでそれを取ってくる。
    (厳密には違うのかもしれないけどだいたい同じっぽいのでよしとする)

    このソースはVisual Studio 2013とWDK8.1をインストールすれば簡単にビルドできる。
    (両方とも同じくMicrosoft公式からダウンロード出来る。)


    C++/fe_kbds/jpn/106の、キーボードレイアウトを設定してるっぽいところを
    適度にエスパーしつつ書き換える。

    --- kbd106.c    2015-01-13 20:23:39.000000000 +0900
    +++ kbd106mod.c 2015-01-13 20:26:22.739691347 +0900
    @@ -237,14 +237,14 @@
     static ALLOC_SECTION_LDATA VK_TO_WCHARS4 aVkToWch4[] = {
         //                               |          |   SHIFT  |  KANA  | K+SHFT |
         //                               |          |==========|========|========|
    -    {'0'          ,          KANALOK ,'0'       ,WCH_NONE  ,WCH_WA  ,WCH_WO  },
    +    {'0'          ,          KANALOK ,'0'       ,')'       ,WCH_WA  ,WCH_WO  },
         {'1'          ,          KANALOK ,'1'       ,'!'       ,WCH_NU  ,WCH_NU  },
         {'3'          ,          KANALOK ,'3'       ,'#'       ,WCH_A   ,WCH_AA  },
         {'4'          ,          KANALOK ,'4'       ,'$'       ,WCH_U   ,WCH_UU  },
         {'5'          ,          KANALOK ,'5'       ,'%'       ,WCH_E   ,WCH_EE  },
    -    {'7'          ,          KANALOK ,'7'       ,0x27      ,WCH_YA  ,WCH_YAA },
    -    {'8'          ,          KANALOK ,'8'       ,'('       ,WCH_YU  ,WCH_YUU },
    -    {'9'          ,          KANALOK ,'9'       ,')'       ,WCH_YO  ,WCH_YOO },
    +    {'7'          ,          KANALOK ,'7'       ,'&'       ,WCH_YA  ,WCH_YAA },
    +    {'8'          ,          KANALOK ,'8'       ,'*'       ,WCH_YU  ,WCH_YUU },
    +    {'9'          ,          KANALOK ,'9'       ,'('       ,WCH_YO  ,WCH_YOO },
         {'A'          , CAPLOK | KANALOK ,'a'       ,'A'       ,WCH_TI  ,WCH_TI  },
         {'B'          , CAPLOK | KANALOK ,'b'       ,'B'       ,WCH_KO  ,WCH_KO  },
         {'C'          , CAPLOK | KANALOK ,'c'       ,'C'       ,WCH_SO  ,WCH_SO  },
    @@ -271,14 +271,14 @@
         {'X'          , CAPLOK | KANALOK ,'x'       ,'X'       ,WCH_SA  ,WCH_SA  },
         {'Y'          , CAPLOK | KANALOK ,'y'       ,'Y'       ,WCH_NN  ,WCH_NN  },
         {'Z'          , CAPLOK | KANALOK ,'z'       ,'Z'       ,WCH_TU  ,WCH_TUU },
    -    {VK_OEM_1     ,          KANALOK ,':'       ,'*'       ,WCH_KE  ,WCH_KE  },
    +    {VK_OEM_1     ,          KANALOK ,'\''      ,'"'       ,WCH_KE  ,WCH_KE  },
         {VK_OEM_2     ,          KANALOK ,'/'       ,'?'       ,WCH_ME  ,WCH_MD  },
    -    {VK_OEM_3     ,          KANALOK ,'@'       ,'`'       ,WCH_VS  ,WCH_VS  },
    -    {VK_OEM_7     ,          KANALOK ,'^'       ,'~'       ,WCH_HE  ,WCH_HE  },
    +    {VK_OEM_3     ,          KANALOK ,'['       ,'{'       ,WCH_VS  ,WCH_VS  },
    +    {VK_OEM_7     ,          KANALOK ,'='      ,'+'        ,WCH_HE  ,WCH_HE  },
         {VK_OEM_8     , 0                ,WCH_NONE  ,WCH_NONE  ,WCH_NONE,WCH_NONE},
         {VK_OEM_COMMA ,          KANALOK ,','       ,'<'       ,WCH_NE  ,WCH_IC  },
         {VK_OEM_PERIOD,          KANALOK ,'.'       ,'>'       ,WCH_RU  ,WCH_IP  },
    -    {VK_OEM_PLUS  ,          KANALOK ,';'       ,'+'       ,WCH_RE  ,WCH_RE  },
    +    {VK_OEM_PLUS  ,          KANALOK ,';'       ,':'       ,WCH_RE  ,WCH_RE  },
         {VK_TAB       , 0                ,'\t'      ,'\t'      ,'\t'    ,'\t'    },
         {VK_ADD       , 0                ,'+'       ,'+'       ,'+'     ,'+'     },
         {VK_DECIMAL   , 0                ,'.'       ,'.'       ,'.'     ,'.'     },
    @@ -294,10 +294,10 @@
         {VK_BACK      , 0       ,'\b'      ,'\b'      ,'\b'    ,'\b'    , 0x7f      , 0x7f      },
         {VK_CANCEL    , 0       ,0x03      ,0x03      ,0x03    ,0x03    , 0x03      , 0x03      },
         {VK_ESCAPE    , 0       ,0x1b      ,0x1b      ,0x1b    ,0x1b    , 0x1b      , 0x1b      },
    -    {VK_OEM_4     , KANALOK ,'['       ,'{'       ,WCH_SVS ,WCH_OB  , 0x1b      , 0x1b      },
    -    {VK_OEM_5     , KANALOK ,'\\'      ,'|'       ,WCH_PS  ,WCH_PS  , 0x1c      , 0x1c      },
    +    {VK_OEM_4     , KANALOK ,']'       ,'}'       ,WCH_SVS ,WCH_OB  , 0x1b      , 0x1b      },
    +    {VK_OEM_5     , KANALOK ,'`'       ,'~'       ,WCH_PS  ,WCH_PS  , 0x1c      , 0x1c      },
         {VK_OEM_102   , KANALOK ,'\\'      ,'_'       ,WCH_RO  ,WCH_RO  , 0x1c      , 0x1c      },
    -    {VK_OEM_6     , KANALOK ,']'       ,'}'       ,WCH_MU  ,WCH_CB  , 0x1d      , 0x1d      },
    +    {VK_OEM_6     , KANALOK ,'\\'      ,'|'       ,WCH_MU  ,WCH_CB  , 0x1d      , 0x1d      },
         {VK_RETURN    , 0       ,'\r'      ,'\r'      ,'\r'    ,'\r'    , '\n'      , '\n'      },
         {VK_SPACE     , 0       ,' '       ,' '       ,' '     ,' '     , 0x20      , 0x20      },
         {0            , 0       ,0         ,0         ,0       ,0       , 0         , 0         }
    @@ -306,9 +306,9 @@
     static ALLOC_SECTION_LDATA VK_TO_WCHARS8 aVkToWch8[] = {
         //                      |          |   SHIFT  |  KANA  | K+SHFT |  CONTROL  |  K+CTRL   | SHFT+CTRL |K+SHFT+CTRL|
         //                      |          |==========|========|========|===========|===========|===========|===========|
    -    {'2'          , KANALOK ,'2'       ,'"'       ,WCH_HU  ,WCH_HU  , WCH_NONE  , WCH_NONE  , 0x00      , 0x00      },
    -    {'6'          , KANALOK ,'6'       ,'&'       ,WCH_O   ,WCH_OO  , WCH_NONE  , WCH_NONE  , 0x1e      , 0x1e      },
    -    {VK_OEM_MINUS , KANALOK ,'-'       ,'='       ,WCH_HO  ,WCH_HO  , WCH_NONE  , WCH_NONE  , 0x1f      , 0x1f      },
    +    {'2'          , KANALOK ,'2'       ,'@'       ,WCH_HU  ,WCH_HU  , WCH_NONE  , WCH_NONE  , 0x00      , 0x00      },
    +    {'6'          , KANALOK ,'6'       ,'^'       ,WCH_O   ,WCH_OO  , WCH_NONE  , WCH_NONE  , 0x1e      , 0x1e      },
    +    {VK_OEM_MINUS , KANALOK ,'-'       ,'_'       ,WCH_HO  ,WCH_HO  , WCH_NONE  , WCH_NONE  , 0x1f      , 0x1f      },
         {0            , 0       ,0         ,0         ,0       ,0       , 0         , 0         , 0         , 0         }
     };


    書き換えたらビルドしてdllを設定すればよい。
    (上書きは怖いので別の名前で設定したほうがいいと思う。)
  • Firefox 33.0 でメニューとかブックマークがニョキっとなるのを止める

    2014年10月22日 20時03分
    先日Firefoxを33.0にアップデートしたところ
    メニューとかブックマークがニョキっと出るようになったのですが
    これが気になって気になって仕方ないのでアニメーションを止める方法を調べました。


    この手の設定はだいたいabout:configなのですが、
    タブのアニメーションを止める設定は有ったものの
    今回のメニューとかブックマークの設定はありませんでした。

    なので、CSSからアニメーションの記述を取り除くという方法になるわけですが
    それをしてくれるプラグインが見事に有ったので入れました。


    Kill Panel Animations


    アニメーション止めるためだけにプラグイン入れるのかよ!とも思いましたが
    ソースを見たところ本当にただCSSをOFFっているだけだったのでまあいいかという結論になりました。

    このプラグインは今回の現象にも効果があるものの
    元々は31.0で追加されたアニメーションを止めるためのものらしいので
    その部分にも当然影響があるという点は注意です。
    (31.0でアニメーションになったところってどこでしょう?)



    こういうエフェクトって最初見たときはおおっ!となるのですが、
    普段使っているとうざったいだけなんですよね。

    長い処理時の体感時間を減らすとかなら良いと思うのですが
    今回のケースだとバージョンアップ前はすぐ出てたわけですし・・・

    あまり良くないアップデートだなと思います。
  • ARROWS Tab QH55/Mを買った人はBIOSをアップデートしておきなさい

    2014年08月06日 23時02分
    半年ほど前にARROWS Tab QH55/Mを買いました。
    また富士通のタブレットです。

    私は別に富士通信者ではないのですがスペック厨ではあるので
    富士通製品は割とストライクに来ることが多いのです。


    ARROWS Tab QH55/Mも安定と信頼の富士通クオリティに違わず
    購入直後からクレードルでの充電ができないため新品交換となり
    交換された2台目はスリープから復帰が失敗する個体という状態でした。

    再度交換も面倒くさいし、シャットダウンと起動はそこそこ速いので
    毎回電源OFFにしてごまかしつつ使っていたのですが
    たまたまBIOS更新情報を見たところスリープからの復帰が改善とあったのでアップデートしてみました。


    BIOSのバージョンは1.24で
    セットでアップデートせよとあるドライバと共にアップデートしたところ
    見事スリープからの復帰が直ったので
    同じ被害者のために広く知らしめておこうと思います。


    あとついでなので富士通の悪口を書いておくと
    最近携帯電話をArrows NX F-05Fに変えたのですが(私は別に富士通信者ではありません)
    SIMカード入れる所のキャップがしっかり閉まらずキャップ交換になりました。
    富士通製品を買う時はまず何かあると覚悟して買った方が良いです。