« 2008年6月 | トップページ | 2008年8月 »

2008年7月30日 (水)

エクスプローラで、MP4ファイルのサムネールを表示する。

エクスプローラの「表示」「縮小版」で、MP4ファイルのサムネールを表示するには、

Windows Live フォト ギャラリー (バージョン 2008)
http://www.microsoft.com/downloads/details.aspx?FamilyID=3c04d993-dbb4-4fb1-96dd-4b806a9ef1a4&displaylang=ja

をインストールするとよいようです。

ところが、エクスプローラの動作が異常に遅くなったので、我慢がならず、アンインストールしました。

サムネール表示は、我慢したほうがよさそうです。

2008年7月28日 (月)

バッチファイルで、改行をエスケープすると継続行の行頭文字もエスケープされる。

改行をエスケープして、行を継続すると、継続行の行頭の文字、例えば、次の例では、二重引用符もエスケープされます。これは「仕様」です。

for %%1 in (a) do ^
"hoge hoge.cmd" ^
%%1

そのため、"hoge hoge.cmd"が実行されず、hogeを実行しようとします。

さらに、行頭の二重引用符がエスケープされたため、行末の^が2番目の二重引用符でエスケープされます。

そのため、3行目が継続行になりません。

回避策は、

(甲)
for %%1 in (a) do "hoge hoge.cmd" ^
%%1

(乙)
for %%1 in (a) do (
"hoge hoge.cmd" ^
%%1
)

(丙)
for %%1 in (a) do ^
call "hoge hoge.cmd" ^
%%1

(丁)
for %%1 in (a) do ^
h"oge hoge.cmd" ^
%%1

2008年7月27日 (日)

IEのuserAgent文字列が肥大化する。

.NET Frameworkも、たくさんのバージョンができて、IEのuserAgent文字列がどんどん長くなります。

先日、.NET Frameworkのバージョンをインストールしたら、突然、特定のWebサーバにアクセスできなくなりました。

そんなときは、アドレスバーに、

javascript:alert(navigator.userAgent)

を入れて、IEのuserAgent文字列を確認しましょう。

おーっ、長いですね。

これらの文字列は、以下のレジストリにあります。削除しちゃいましょう。

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings\5.0\User Agent\Post Platform]
".NET CLR 1.0.3705"=""
".NET CLR 2.0.50727"=""
".NET CLR 1.1.4322"=""
".NET CLR 3.0.04506.30"=""
".NET CLR 3.0.04506.648"=""
".NET CLR 3.5.21022"=""

2008年7月24日 (木)

スクリプトから.NETのSystem.Text.StringBuilderを使う。(その2)

.NET Framework version 2.0のAppendLine()は、使えないようです。

なので、代わりに、AppendFormat()を使います。

Set sb=CreateObject("System.Text.StringBuilder")
sb.AppendFormat "{0}" & vbCrLf,"aaa"
sb.AppendFormat "{0}" & vbCrLf,"bbb"
MsgBox sb.ToString()

Set sb=CreateObject("System.Text.StringBuilder")
sb.AppendFormat_2 "{1}{0}",vbCrLf,"aaa"
sb.AppendFormat_2 "{1}{0}",vbCrLf,"bbb"
MsgBox sb.ToString()

オーバーロードのサフィックス一覧は、

AppendFormat(String format, Object arg0)
AppendFormat_2(String format, Object arg0, Object arg1)
AppendFormat_3(String format, Object arg0, Object arg1, Object arg2)
AppendFormat_4(String format, Params Object[] args)
AppendFormat_5(IFormatProvider provider, String format, Params Object[] args)

2008年7月23日 (水)

スクリプトから使えるよう、.NETのオーバーロードのサフィックスを調べる。

例えば、System.Text.StringBuilderなら、PowerShellで、

$sb=new-object system.text.stringbuilder
get-member -inputobject $sb | format-list

その結果、

TypeName   : System.Text.StringBuilder
Name       : Append
MemberType : Method
Definition : System.Text.StringBuilder Append(Char value, Int32 repeatCount), S
             ystem.Text.StringBuilder Append(Char[] value, Int32 startIndex, In
             t32 charCount), System.Text.StringBuilder Append(String value), Sy
             stem.Text.StringBuilder Append(String value, Int32 startIndex, Int
             32 count), System.Text.StringBuilder Append(Boolean value), System
             .Text.StringBuilder Append(SByte value), System.Text.StringBuilder
              Append(Byte value), System.Text.StringBuilder Append(Char value),
              System.Text.StringBuilder Append(Int16 value), System.Text.String
             Builder Append(Int32 value), System.Text.StringBuilder Append(Int6
             4 value), System.Text.StringBuilder Append(Single value), System.T
             ext.StringBuilder Append(Double value), System.Text.StringBuilder
             Append(Decimal value), System.Text.StringBuilder Append(UInt16 val
             ue), System.Text.StringBuilder Append(UInt32 value), System.Text.S
             tringBuilder Append(UInt64 value), System.Text.StringBuilder Appen
             d(Object value), System.Text.StringBuilder Append(Char[] value)

この並びの順にサフィックスが付くようです。

2008年7月22日 (火)

スクリプトから.NETのSystem.Text.StringBuilderを使う。

Set sb=CreateObject("System.Text.StringBuilder")
sb.Append_3 "aaa"
sb.Append_3 "bbb"
MsgBox sb.ToString()

.NETのオーバーロードは、スクリプトでは自動的には解決されないので、サフィックスで区別します。

Append(Char value, Int32 repeatCount)
Append_2(Char[] value, Int32 startIndex, Int32 charCount)
Append_3(String value)
Append_4(String value, Int32 startIndex, Int32 count)
Append_5(Boolean value)
Append_6(SByte value)
Append_7(Byte value)
Append_8(Char value)
Append_9(Int16 value)
Append_10(Int32 value)
Append_11(Int64 value)
Append_12(Single value)
Append_13(Double value)
Append_14(Decimal value)
Append_15(UInt16 value)
Append_16(UInt32 value)
Append_17(UInt64 value)
Append_18(Object value)
Append_19(Char[] value)

2008年7月18日 (金)

ListVideoCodecs.VBS

cscript WMCmd.vbs -v_codecs
では、スクリプトが一部のコーデックをマスクして、すべては表示されません。

ListVideoCodecs.VBS

Option Explicit

Const WMENC_VIDEO=2

Const WMV7_FOURCC=827739479
Const WMV8_FOURCC=844516695
Const WMV9_FOURCC=861293911
Const WMS9_FOURCC=844321613
Const MP41_FOURCC=1395937357
Const UNCOMP_FOURCC=0

Const WMV7="WMV7"
Const WMV8="WMV8"
Const WMV9="WMV9"
Const WMS9="WMS9"
Const MP41="MP41"
Const UNCOMP="UNCOMP"

Dim Profile
Dim CodecName
Dim FourCC
Dim VBRMode
Dim CodecId
Dim Count
Dim dic

Set dic=CreateObject("Scripting.Dictionary")
Set Profile=CreateObject("WMENCEng.WMEncProfile2")
dic.Add dic.Count,"Video Codecs: "
For VBRMode=1 To 4
  Profile.VBRMode(WMENC_VIDEO,0)=VBRMode
  dic.Add dic.Count,Array("CBR Mode :",_
    "Peak Bit Rate-Based VBR Audio Mode :",_
    "Quality-Based VBR Audio Mode :",_
    "Bit Rate-Based VBR Audio Mode :")(VBRMode-1)
  For Count=0 To Profile.VideoCodecCount-1
    Profile.EnumVideoCodec Count,CodecName
    FourCC=Profile.GetCodecFourCCFromIndex(WMENC_VIDEO,Count)
    Select Case FourCC
      Case WMV7_FOURCC CodecId=WMV7
      Case WMV8_FOURCC CodecId=WMV8
      Case WMV9_FOURCC CodecId=WMV9
      Case WMS9_FOURCC CodecId=WMS9
      Case MP41_FOURCC CodecId=MP41
      Case UNCOMP_FOURCC CodecId=UNCOMP
      Case Else       CodecId=FourCC
    End Select
    dic.Add dic.Count,vbTab &  "[" & Count & "] "  & CodecId & " : " & CodecName
  Next
Next
WScript.Echo Join(dic.Items(),vbLf)

2008年7月16日 (水)

Windows Media エンコーダで、[Windows Media MPEG-4 Video V3]を使う。

[Windows Media エンコーダ]や[Windows Media エンコード スクリプト]や[Windows Media プロファイル エディタ]では、[Windows Media MPEG-4 Video V3]が指定できません。

しかし、既存のプロファイルで指定すれば使えます。

なので、仮にCBSのプロファイルを作成して、メモ帳で以下の2箇所を書き換えます。
  <wmmediatype subtype="{3334504D-0000-0010-8000-00AA00389B71}" 
  bicompression="MP43"

このプロファイルを[Windows Media エンコーダ]や[Windows Media プロファイル エディタ]で読み込むと、[Windows Media MPEG-4 Video V3]が現れます。

[Windows Media エンコード スクリプト]では、-loadprofileでプロファイルを指定します。

2008年7月14日 (月)

Zuneのコーデックは?

Zuneから取り出した[Zune.wmv]を見てみると、
320x240 24Bit Windows Media Video 9 29.97fps 2000.00kb/s
Windows Media Audio 9.2 44.10kHz 16Bit 2ch 192.04kb/s
が標準的なようです。

最初から、これに合わせてWMVファイルを作ればよいのですが、[Windows Media エンコーダ]で重い[Windows Media Video 9]にすると、映像がカクカクします。

なので、一旦、軽い[ISO MPEG-4 Video V1]で作ります。
320x240 24Bit ISO MPEG-4 Video V1 30.00fps 2000.00kb/s
Windows Media Audio 9.2 48.00kHz 16Bit 2ch 192.00kb/s

これをZuneにSyncすると、Sync時に[Windows Media Video 9]にエンコードし直すようで、Syncに時間が掛かります。

あるいは、これを[Windows ムービー メーカ]で作り直すと、
320x240 24Bit Windows Media Video 9 30.00fps 1900.00kb/s
Windows Media Audio 9.2 44.10kHz 16Bit 2ch 64.04kb/s
になって、Sync時はコピーだけになります。

2008年7月10日 (木)

ZuneでFM Radioを聴く。

settingsで、radioをjapanにする。

ヘッドホンのコードがアンテナになっているので、コードを伸ばして、あっちこっちに向けてみる。
でも、なかなか、入りません。
そこで、何かのACコードにヘッドホンのコードを沿わせてやると、いいみたいです。
うーん。。。

2008年7月 9日 (水)

Windows Media エンコーダを使って、DVD-VideoからWMAへ変換する。

ZuneでTV録画の音声だけを聴くには、Windows Media エンコーダを使って、DVD-Videoモードから、.VOBファイルを、.WMAファイルに変換します。

□はチェックを外す。◎はチェックする。

(0) Windows Media エンコーダを起動する。
(1)「プロパティ」ボタンを押して「セッションのプロパティ」パネルを出す。
(2)「セッションのプロパティ」の「ソース」タブで、
  「入力ソース」◎「ファイル」
  「ファイル名」「D:\VIDEO_TS\VTS_01_1.VOB」
  □「ビデオ」◎「オーディオ」
(3)「セッションのプロパティ」の「出力」タブで、
  □「エンコーダからプル」
  ◎「ファイルにエンコード」
  「ファイル名」「どこか\なにか.wma」
(4)「セッションのプロパティ」の「圧縮」タブで、「編集」ボタンを押して「独自のエンコード設定」ダイアログを出す。
(5)「独自のエンコード設定」ダイアログの「全般」タブで、
  ◎「オーディオ」「CBR」「Windows Media Audio 9.2」
(6)「独自のエンコード設定」ダイアログの「??? Kbps」タブで、
  「オーディオ形式」「192 kbps, 48 kHz, stereo CBR」
(7)「独自のエンコード設定」ダイアログの「OK」ボタン
(8)「セッションのプロパティ」の「圧縮」タブの「詳細」は、以下のとおり。
  オーディオ エンコード モード: CBR
  配信対象: 199 Kbps
  オーディオ コーデック: Windows Media Audio 9.2
  オーディオ形式: 192 kbps, 48 kHz, stereo CBR
(9)「エンコードの開始」ボタンを押す。

コマンドラインでは、

cscript.exe "C:\Program Files\Windows Media Components\Encoder\WMCmd.vbs" -input "D:\VIDEO_TS\VTS_01_1.VOB" -output "どこか\なにか.wma" -audioonly -a_setting 192_48_2

2008年7月 8日 (火)

Windows Media エンコーダを使って、DVD-VideoからWMVへ変換する。

ZuneでTV録画を見るには、Windows Media エンコーダを使って、DVD-VideoモードのDVDから、.VOBファイルを、.WMVファイルに変換します。

Windows Media エンコーダ 9 シリーズは、Windows Media ダウンロード センターから。

□はチェックを外す。◎はチェックする。

(0) Windows Media エンコーダを起動する。
(1)「プロパティ」ボタンを押して「セッションのプロパティ」パネルを出す。
(2)「セッションのプロパティ」の「ソース」タブで、
  「入力ソース」◎「ファイル」
  「ファイル名」「D:\VIDEO_TS\VTS_01_1.VOB」
(3)「セッションのプロパティ」の「出力」タブで、
  □「エンコーダからプル」
  ◎「ファイルにエンコード」
  「ファイル名」「どこか\なにか.wmv」
(4)「セッションのプロパティ」の「圧縮」タブで、「編集」ボタンを押して「独自のエンコード設定」ダイアログを出す。
(5)「独自のエンコード設定」ダイアログの「全般」タブで、
  ◎「オーディオ」「CBR」「Windows Media Audio 9.2」
  ◎「ビデオ」「CBR」「ISO MPEG-4 Video V1」
(6)「独自のエンコード設定」ダイアログの「??? Kbps」タブで、
  「オーディオ形式」「192 kbps, 48 kHz, stereo CBR」
  「ビデオ サイズ」「320」x「240」 □「ビデオ入力と同じ」
  「ビデオ ビット レート」「2000K」bps
(7)「独自のエンコード設定」ダイアログの「OK」ボタン
(8)「セッションのプロパティ」の「圧縮」タブの「詳細」は、以下のとおり。
  オーディオ エンコード モード: CBR
  ビデオ エンコード モード: CBR
  配信対象: 2201 Kbps
  オーディオ コーデック: Windows Media Audio 9.2
  オーディオ形式: 192 kbps, 48 kHz, stereo CBR
  ビデオ コーデック: ISO MPEG-4 Video V1
  ビデオ ビット レート: 2000 Kbps
  ビデオ サイズ: 320 x 240
  フレーム レート: 29.97 fps
  キー フレーム: 8 秒
  画像の品質: 60
  バッファ サイズ: 5 秒
(9)「セッションのプロパティ」の「処理」タブで、
  「ビデオ」
  □「なし」
  ◎「ノンインターレース化」
(10)「エンコードの開始」ボタンを押す。

コマンドラインでは、

cscript.exe "C:\Program Files\Windows Media Components\Encoder\WMCmd.vbs" -input "D:\VIDEO_TS\VTS_01_1.VOB" -output "どこか\なにか.wmv" -a_setting 192_48_2 -v_codec MP41 -v_bitrate 2000000 -v_width 320 -v_height 240 -v_preproc 1

2008年7月 7日 (月)

Zune使用上の注意

PC上では日本語でも表示されますが、Zune本体は日本語フォントを搭載してないので、Zune上では、日本語が□に化けます。
なので、以下のプロパティは、英字にしておきましょう。
ファイル名やフォルダ名は日本語でも構いません。

music
アーティスト artist
アルバムのタイトル album
ジャンル genre
タイトル song

video
アーティスト artist
タイトル video

プロパティの各項目は一度同名にすると、別名に分離するのが困難なので注意しましょう。
特に、タイトルは同名にならないように注意しましょう。
タイトルを同名にすると、個別に管理できなくなります。

2008年7月 4日 (金)

window.close()で確認ダイアログを出さないで閉じる。

いろいろ方法があるようですが、

window.close()

の代わりに、

window.open("about:blank","_self").close()

同様に、

window.parent.close()

window.top.close()

の代わりに、

window.open("about:blank","_parent").close()

window.open("about:blank","_top").close()

2008年7月 3日 (木)

バッチで、複数のコマンドを並列実行して、直後に一括して待ち合わせる。

コマンドライン1 >&2 | コマンドライン2 >&2 | コマンドライン3
とします。

標準出力がないなら >&2 は不要です。

notepad.exe | notepad.exe | notepad.exe
みたいに。

2008年7月 2日 (水)

バッチから非同期に起動したアプリの終了を待ち合わせる。

start notepad.exe >running.1
で、非同期に起動し、

del running.1
if exist running.1 (echo 実行中) else echo 終了済
で、実行中か終了済かを判定し、

:wait
del running.1
if exist running.1 sleep.exe 1 & goto :wait
で、待ち合わせます。

複数の場合は、running.1の数字を変えて。

sleep.exeがないときは、ping.exe localhost -n 2 で代替して。

2008年7月 1日 (火)

現在のセキュリティ設定では、このファイルをダウンロードできません。

ダウンロードできないとき、
---------------------------
セキュリティの警告
---------------------------
現在のセキュリティ設定では、このファイルをダウンロードできません。
---------------------------
OK   
---------------------------
というダイアログが出ます。

このとき、そのダイアログの後ろに、もうひとつ、
---------------------------
0% / URL - ファイル名 完了しました
---------------------------
ファイルの情報を取得しています...
URL - ファイル名
---------------------------
というダイアログが出ていることがあります。

後ろのダイアログがないときは、そのセキュリティゾーンのセキュリティレベルで、
「ファイルのダウンロード」を「無効にする」→「有効にする」
後ろのダイアログがあるときは、前者の設定に加えて、
「アプリケーションと安全でないファイルの起動」を「無効にする」→「ダイアログを表示する」

つまり、アプリケーションと安全でないファイルのダウンロードには二重に鍵が掛かっているということです。

« 2008年6月 | トップページ | 2008年8月 »