plasmasphere.net -プラズマスフィア ドットネット-

Diary

携帯動画変換君 最新ffmpeg用設定(PSP高画質用)

2011/02/17(Thu) 00:02

Veohやニコニコ動画のflv変換など、新しいffmpeg用に書き直した携帯動画変換君の設定を作りました。 PSPの高画質用です。

[Info]
Title=PSP高解像度設定:H.264 16:9 MP4(FFMPEG置き換え版)

[Item0]
Title=PSP 720x480/画質A/1PASS/192kbps
TitleE=PSP 1PASS/H.264 Deint/720x480/1500/192kbps
Command0=""<%AppPath%>\cores\ffmpeg" -y -i "<%InputFile%>" -timestamp "<%TimeStamp%>" -flags bitexact -vcodec libx264 -deinterlace -coder 1 -vlevel 13 -bufsize 128 -g 250 -s 720x480 -aspect 16:9 -b 1500k  -maxrate 1800 -acodec libfaac -ac 2 -ar 48000 -ab 384k -f psp -vol 256 "<%OutputFile%>.mp4""
Command1=""<%AppPath%>\cores\ffmpeg" -y -i "<%InputFile%>" -f image2 -ss 5 -vframes 1 -s 160x120 -an "<%OutputFile%>.jpg""

[Item2]
Title=PSP 720x480/画質A/2PASS/192kbps
TitleE=PSP 2PASS/H.264 Deint/720x480/1500/192kbps
Command0=""<%AppPath%>\cores\ffmpeg" -y -i "<%InputFile%>" -pass 1 -passlogfile "<%OutputFile%>" -timestamp "<%TimeStamp%>" -flags bitexact -vcodec libx264 -deinterlace -coder 1 -vlevel 13 -bufsize 128 -g 250 -s 720x480 -b 1500k -maxrate 1800 -acodec libfaac -ac 2 -ar 48000 -ab 384k -f psp -vol 256 "<%OutputFile%>.mp4""
Command1=""<%AppPath%>\cores\ffmpeg" -y -i "<%InputFile%>" -pass 2 -passlogfile "<%OutputFile%>" -timestamp "<%TimeStamp%>" -flags bitexact -vcodec libx264 -deinterlace -coder 1 -vlevel 13 -bufsize 128 -g 250 -s 720x480 -b 1500k -maxrate 1800 -acodec libfaac -ac 2 -ar 48000 -ab 384k -f psp -vol 256 "<%OutputFile%>.mp4""
Command2="rm "<%OutputFile%>-0.log""
Command3=""<%AppPath%>\cores\ffmpeg" -y -i "<%InputFile%>" -f image2 -ss 5 -vframes 1 -s 160x120 -an "<%OutputFile%>.jpg""

Transcoding_PSP.iniとかで、default_setting に保存してください。
PSPで再生できる最高のビットレート帯にしてますので、変換処理は遅いと思います。
ここまでいらねって人は、SPaRBさんで紹介してるファイル落とすと幸せになれるかもしれません。

出力したファイルは、メモリースティックのルートにあるVIDEOフォルダにつっこんだらOKです。
無い場合は作ったらOKです。


東京マルイ SIG552 EBRタイプストック

2011/02/14(Mon) 00:02

エアガンのSIG552にEBRタイプストックをつけてみました。
DSC01624%20%28Large%29.JPG

とっても素敵。
EBRタイプストックのつけ方はFirstのブログを参考に。
分解したの初めてでしたけど大したもんじゃなかったですはい。

他の装備は…
M3Xタイプ タクティカルイルミネーター ロング
GP-671B レイダー フォアグリップ
ELCAN SPECTOR DRタイプ X4スコープ
HKサプレッサー リアルタイプ

結構金かけてるんですが、家で的に向かって撃つだけですけどね。


ExtJS XmlReaderのcdata-sectionエスケープ対応

2011/02/06(Sun) 00:02

ExtJSのExt.data.XmlReaderですが、cdata-section の複数エスケープに対応していないみたいですね。
cdata-section のエスケープは基本以下の通りですが…

<HOGE><![CDATA[fuga]]></HOGE>

fugaをfuga]]>と入力すると、]]>をエスケープしないといけません。

<HOGE><![CDATA[fuga]]]]><![CDATA[>]]></HOGE>

※ cdata内で>とかを&gt;とエスケープするってのは大間違いです。

ExtJSのXmlReaderですが、値の取得に Ext.DomQuery.selectValue を使っています。
selectValue が cdata-section のエスケープに対応してないですね。

        selectValue : function(path, root, defaultValue){
            path = path.replace(trimRe, "");
            if(!valueCache[path]){
                valueCache[path] = Ext.DomQuery.compile(path, "select");
            }
            var n = valueCache[path](root), v;
            n = n[0] ? n[0] : n;
            if (typeof n.normalize == 'function') n.normalize();
            
            v = (n && n.firstChild ? n.firstChild.nodeValue : null);
            return ((v === null||v === undefined||v==='') ? defaultValue : v);
        },

一応 n.normalize で正規化されてると思いきや、cdata-section はnormalizeしても正規処理されないようで。
cdata-sectionがエスケープされていると、エスケープされてる数だけ childNodes に文字列が分割されます。そういうDOM仕様です。
なので、nodeValue だとこの場合取れる値は「hoge]]」です。

本来ほしい値は「hoge]]>」ですので、nodeValue ではなく contentText だと正解になるんですが、残念ながらIE系は DOM のバージョンが低いので contentText には対応していません。

なんにしろXmlReaderを書き換えてあげないといけません。

Ext.override(Ext.data.XmlReader,{
    createAccessor : function(){
        var q = Ext.DomQuery;
        return function(key) {
            if (Ext.isFunction(key)) {
                return key;
            }
            switch(key) {
                case this.meta.totalProperty:
                    return function(root, def){
                        return q.selectNumber(key, root, def);
                    };
                    break;
                case this.meta.successProperty:
                    return function(root, def) {
                        var sv = q.selectValue(key, root, true);
                        var success = sv !== false && sv !== 'false';
                        return success;
                    };
                    break;
                default:
                    return function(root, def) {
                        var node = q.select(key, root, def), v = '';
                        node = node[0] ? node[0] : node;
                        if (typeof node.normalize == 'function') node.normalize();
                        if(node.childNodes.length>0) {
                            for(var i=0;i<node.childNodes[i];i++) {
                                v += (node.childNodes[i] ? node.childNodes[i].nodeValue : '');
                            }
                        }
                        return v;
                    };
                    break;
            }
        };
    }()
});

Ext.DomQuery.selectValue を override した方が楽なのかもしれませんが。
なんにしろこれで cdata-section のエスケープに対応できたと思います。



 
© 1999- plasmasphere.net All rights reserved.