• 締切済み

MMname2というソフトでアスペクト比情報をリネームする方法

MMname2 http://page.freett.com/HarryTools/ 上記のソフトの[リネームパターン設定 - 高度な設定]で [基本的な知識として、VBScriptを理解していることが前提です。] と書いてあるのですが、VBScriptとやらはさっぱり、わからないので質問します。 インストールしたプログラムファイルの中にある [MMname2-efEditMediaString例.plg]というものをコピーして実験として 編集してみたりしたんですが、さっぱりわかりません。 質問の本題 http://page.freett.com/HarryTools/help/index.html 上記のアドレスに書いてある ■リネームパターン設定 - 高度な設定  標準的にできるリネームパターン付けでは満足出来ない場合は、VBScriptによるリネームパターンのカスタマイズが出来ます。  [設定]-[リネームパターン設定]から[高度な設定]ダイアログを開いて、スクリプトファイルを指定してください。  サンプルで、MMname2.plg と MMname2-efEditMediaString例.plg を用意してあります。  基本的な知識として、VBScriptを理解していることが前提です。 ・アイテム一覧をクリップボードにコピー  メディア情報を取得する時に必要なキーワードの一覧を、クリップボードにコピーします。 これで リネームパターンを [vSize vAspect vCodec aCodec] に変更したいのですが デフォルトだと [vCodec aCodec] の状態です。 で、デフォルトの[MMname2-efEditMediaString例.plg]状態では '--------------------------------------------- 'メディア情報を直接出力する関数 '関数名は efEditMediaString() に固定 '--------------------------------------------- Public Function efEditMediaString( _ lngHandle, _ strRenamePattern, _ strMediaString, _ strExtension) 'パラメータ ' lngHandle [in] ファイルを識別するハンドル ' strRenamePattern [in] リネームパターン ' strMediaString [in/out] メディア情報文字列 ' strExtension [in/out] リネームする拡張子 Dim strVideoCodec Dim strAudioCodec Dim lngAudioStreamCnt Dim i Dim strMediaTypeCode Dim strMediaTypeName 'Debug ' MsgBox "strRenamePattern=[" & strRenamePattern & "],strMediaString=[" & strMediaString & "],strExtension=[" & strExtension & "]" strMediaTypeCode = MMName.GetItemData(lngHandle, "MediaTypeCode") strMediaTypeName = MMName.GetItemData(lngHandle, "MediaType") ' MsgBox "strMediaTypeCode=" & strMediaTypeCode & vbNewLine & _ ' "strMediaTypeName=" & strMediaTypeName strMediaString = "" '--映像コーデック取り出し strVideoCodec = MMName.GetItemData(lngHandle, "vCodec") '--音声ストリーム数取り出し lngAudioStreamCnt = MMName.GetItemData(lngHandle, "aStreamCnt") '--音声が複数ある場合 If lngAudioStreamCnt > 1 Then strAudioCodec = "音声多重(" & lngAudioStreamCnt & ") " '--複数の音声を取り出して '-' で繋ぐ For i=1 to lngAudioStreamCnt If i <> 1 Then strAudioCodec = strAudioCodec & "-" End If strAudioCodec = strAudioCodec & MMName.GetItemData(lngHandle, "aCodec", i) Next '--音声が単独の場合 Else strAudioCodec = MMName.GetItemData(lngHandle, "aCodec") End If '-- 映像と音声のコーデックをメディア情報とする strMediaString = strVideoCodec & " " & strAudioCodec 'Debug ' MsgBox strMediaString End Function ' 'MMName.GetItemData() で使用できるItemKeyは、[設定]-[リネームパターン設定]から[高度な設定]ダイアログを開いて[アイテム一覧をクリップボードに出力]する事で得られます。 --------------------------------------------------------------------------------------------------------------------------------------- と書かれています。 どこかに、ある記号をプログラム言語?を入力すれば [vCodec aCodec]状態のデフォルトを [vSize vAspect vCodec aCodec]の状態にもっていけると思うのですが わかる方いますでしょうか?

  • qazrf
  • お礼率100% (3/3)

みんなの回答

  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.3

#2です。 1つ気になるのが、ざっと見ただけですが「アスペクト比を取得できる」と言うのが 見つからなかったのですが、どこかにかあったのでしょうか? DLLでアスペクト比を取得するように作られていなければ、提示されているコードを どういじっても無理だと思ったもので。 >vAspect と言うのがあったのであれば、私の見落としだったのでしょうね。 その時はスル~して下さい。

qazrf
質問者

お礼

n-junさん、レスありがとうございます。 DLLというのは、よくわかりませんが vAspectというのも、使えると思ったのが MMname2を起動→ヘルプ→MMname2の説明→高度な設定 高度な設定に書かれている内容 ■リネームパターン設定 - 高度な設定  標準的にできるリネームパターン付けでは満足出来ない場合は、VBScriptによるリネームパターンのカスタマイズが出来ます。  [設定]-[リネームパターン設定]から[高度な設定]ダイアログを開いて、スクリプトファイルを指定してください。  サンプルで、MMname2.plg と MMname2-efEditMediaString例.plg を用意してあります。  基本的な知識として、VBScriptを理解していることが前提です。 ということで、 サンプルで、MMname2.plg と MMname2-efEditMediaString例.plg を用意してあります。 と書いてあるので、MMname2のプログラムファイルにある、MMname2-efEditMediaString例.plg をメモ帳で開いてみました。 その内容に最後の行に MMName.GetItemData() で使用できるItemKeyは、[設定]-[リネームパターン設定]から[高度な設定]ダイアログを開いて[アイテム一覧をクリップボードに出力]する事で得られます。 と書いてあるので MMname2を起動→設定→リネームパターン設定→高度な設定→アイテム一覧をクリップボードに出力→PCのメモ帳を起動→貼り付け これでMMname2で使えるItemKeyの一覧が出ます。ちなみにItemKeyの一覧は↓

qazrf
質問者

補足

ItemKey 説明 配列可否 FileName ファイル名 FolderName フォルダ NewName 変更後 FileLengthByte ファイルサイズ(Bytes) FileLength ファイルサイズ MediaType メディア種別名 MediaTypeCode メディア種別コード Time 時間 ctnDownload ダウンロードガイド MediaInfo 総合情報 vStreamCnt 映像ストリーム数 vStreamName 映像ストリーム名 配列可 vCodecCode 映像コーデックコード 配列可 vCodecName 映像コーデック名 配列可 vCodec 映像コーデック略号 配列可 vCodecDeveloper 映像コーデック開発者 配列可 vCodecDevSite 映像コーデック開発サイト 配列可 vCodecMemo 映像コーデックメモ 配列可 vCodecRefSite 映像コーデック参考サイト 配列可 vCodecInstalled 映像コーデックインストール状態 配列可 vSize 映像サイズ 配列可 vColor 映像色数 配列可 vBitrate 映像ビットレート(bit/sec) 配列可 vCbrVbr 映像CBR/VBR 配列可 vAspect 映像アスペクト比 配列可 vFps 映像Fps 配列可 vOther 映像その他 配列可 vDetail 映像詳細 配列可 aStreamCnt 音声ストリーム数 aStreamName 音声ストリーム名 配列可 aCodecCode 音声コーデックコード 配列可 aCodecName 音声コーデック名 配列可 aCodec 音声コーデック略号 配列可 aCodecDeveloper 音声コーデック開発者 配列可 aCodecDevSite 音声コーデック開発サイト 配列可 aCodecMemo 音声コーデックメモ 配列可 aCodecRefSite 音声コーデック参考サイト 配列可 aCodecInstalled 音声コーデックインストール状態 配列可 aChannel 音声チャネル 配列可 aSampleBit 音声サンプリングビット 配列可 aBitrate 音声ビットレート(bit/sec) 配列可 aSamplerate 音声サンプリングレート(Hz) 配列可 aCbrVbr 音声CBR/VBR 配列可 aOther 音声その他 配列可 aDetail 音声詳細 配列可 tStreamCnt 字幕ストリーム数 tStreamName 字幕ストリーム名 配列可 tTextId 字幕Id 配列可 tTextType 字幕形式 配列可 oStreamCnt その他ストリーム数 cCmntCnt コメント情報数 cCode コメントコード 配列可 cName コメント名 配列可 cValue コメント値 配列可 eFatalError 致命的エラー情報 eBroken 正当性情報 eErrorCnt エラー情報数 eErrorMsg エラーメッセージ 配列可 dsSplitterName スプリッタ dsSplitterGuid スプリッタGUID dsSplitterDefine スプリッタDef名 dsSplitterHeader スプリッタHeader dsSplitterMemo スプリッタメモ dsAudioDecoder 音声デコーダ dsAudioGuid 音声GUID dsAudioDefine 音声Def名 dsAudioHeader 音声Header dsAudioMemo 音声メモ dsVideoDecoder 映像デコーダ dsVideoGuid 映像GUID dsVideoDefine 映像Def名 dsVideoHeader 映像Header dsVideoMemo 映像メモ dsErrorMsg エラーメッセージ dsTime 時間(DirectShow) spMediaWiz MediaWiz系での再生可否 SinkuInfo 真空波動研情報 上記の内容です。 この中に、 vAspect 映像アスペクト比 配列可 というのがあるので vAspectというのもを、MMname2.plg 又は MMname2-efEditMediaString例.plg に何かしらすれば、映像アスペクト比をリネーム出来るのではないかと思っているのですが そのやり方がわからない状態なので、OKWaveで質問してみました。

  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.2

#1です。 >ですが、2006年辺りから質問に対しての回答もなく、管理人さんも活動休止状態? BBSをクリックしたら、最新は2009/2/8でしたのでその旨回答しました。 >そちらの掲示板で書き込みをしてみますが、OKWaveの掲示板でも質問を継続しようと思います。 マルチポスト扱いになってしまいますけど。

qazrf
質問者

お礼

マルチポスト扱いになりますか それでは、MMname2のサイトの掲示板では質問せず OKWaveの掲示板のみで質問を継続します。

  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.1

【掲示板】 ご意見、ご要望、感想などはBBSへお願いします。 (BBSアドレス変更になりました.2008/04/03) 質問があるときは、ソフトのバージョン、使用OS等も書き込んだ方が回答も得やすいでしょう。 ReadMeや説明書に答えが書いてあることを質問される方がいますが、ReadMeぐらいは読んで質問しましょう。 -------------------------------- とありますけど、回答がつかなかったのでしょうか。

qazrf
質問者

お礼

あ、MMname2のサイトに掲示板あったんですね。 [n-junさん]からの指摘があって、初めて気がつきました。 ですが、2006年辺りから質問に対しての回答もなく、管理人さんも活動休止状態? な為、そちらの掲示板で書き込みをしてみますが、OKWaveの掲示板でも質問を継続しようと思います。 初回の質問が、少しごちゃまぜになっているので 簡潔にわかりやすく、やりたい内容だけ書きます。 現在、MMname2をインストールすして、デフォルト状態(高度な設定は使わない)の状態で 動画情報をリネームすると (例)mp4の場合 あいうえお.mp4というファイルがあったとします。 それをMMname2に読み込んで、リネーム実行をクリックすると <Time><vSize><vCodec>+<aCodec> がデフォルト設定の為 あいうえお[<Time><vSize><vCodec>+<aCodec>].mp4 結果 あいうえお[<時間><映像サイズ><映像コーデック略号>+<音声コーデック略号>].mp4 という感じでファイル名がリネームされます。 これがデフォルト設定の状態です。 これを、 結果 あいうえお[<時間><映像サイズ><映像アスペクト比><映像コーデック略号>+<音声コーデック略号>].mp4 という感じにリネームしたいのですが、こういうふうにリネームさせるためには あいうえお[<Time><vSize><vAspect><vCodec>+<aCodec>].mp4 こうなるようにすれば、できると思うのですが さっぱりわからない状態です。 MMname2を起動→設定タブ→リネームパターン設定→メディアの種類(mp4)のリネームパターン <Time><vSize><vCodec>+<aCodec> ↓こうしたい <Time><vSize><vAspect><vCodec>+<aCodec>

関連するQ&A

  • 携帯動画変換君のアスペクト比の設定について

    こんにちは。 W44Sの動画ファイルを作成したのですが、 アスペクト比を変えてもう一度作りたいです。 [Item0] Title=M.S.Video / 映像:H.264 768kbps 29.97fps 音声:192kbps 48kHz Stereo Command0=""<%AppPath%>\cores\ffmpeg" -y -i "<%InputFile%>" -timestamp "<%TimeStamp%>" -bitexact -qmin 1 -qmax 31 -vcodec h264 -mbd 2 -4mv -trell -aic -vlevel 13 -s 320x240 -r 29.97 -b 768 -acodec aac -ac 2 -ar 48000 -ab 96 -f psp -muxvb 192 -muxab 64 "<%TemporaryFile%>_1.mp4"" Command1=""<%AppPath%>\cores\QT3GPPFlatten" "<%TemporaryFile%>_1.mp4" "<%TemporaryFile%>_2.mp4" -c QT_H264_QVGA_AAC.ini -t mpg4" Command2=""<%AppPath%>\cores\ATOMChanger" "<%TemporaryFile%>_2.mp4" "<%OutputPath%>MAQ<%RandomNumber5%>.MP4" "Camouflage_MP4_for_PSP.ini" "<%Title%>"" Command3="cmd /c "del "<%TemporaryFile%>*.*""" -aspect 16:9をどこに加えればいいでしょうか? よろしくお願いします。

  • [と”の意味を教えてください。

    http://okwave.jp/qa/q5945112.html を参考に、 Sub test1() Dim i As Integer i = 2 If i Like "[1-3]" Then MsgBox i & "です" End If End Sub Sub test2() Dim i As Integer i = 2 If i Like "[1-5]" Then MsgBox i & "です" End If End Sub Sub test3() Dim i As Integer i = 2 If i Like "[1-10]" Then MsgBox i & "です" End If End Sub を作ったのですが、 test3はうまく行きません。 意味としては、 iが "[1-10]"の中の数字の間のどれかであれば、 MsgBox i & "です" を表示させたいです。 でも上記のマクロを実行させた結果、 "[1-10]"の中で計算が行われてるのではないかと思います。 だから、test3は、1-10=-9 という事になり、msgboxが反応しないのではないかと思っています。 でもそうすると、test2だって "[1-5]"は、-4になって、i=2とは違う値なのに なぜMsgBoxが反応してしまうのかわかりません。 でもそもそも[と”の意味が分からないのでそこから教えていただけませんか? “の意味、は二つで挟んで文字列にすると思っています。

  • VBAでの「メソッドまたはデータメンバが見つかりま

    word2016で以下のプログラムを流したいのですが、「メソッドまたはデータメンバが見つかりません」のエラーが出ます。 Dim CB As Variant, i As Long CB = Application.ClipboardFormats If CB(1) = True Then MsgBox ”クリップボードになにも値がありません。”,48 Exit Sub End If どうすれば直るでしょうか?よろしくお願いします。

  • 昨日のプリンターの件です

    下記のようなことを記入してよいか迷ったのですが、wendy02さん、教えてください。 下記のように、プリンターを変えたところ、「設定がうまくいきませんでした」と出てきます。 何か、間違っていますでしょうか?但し、プリントは出来ました。 Dim OldPrt As String Dim ActPrt As String Dim i As Integer Dim errFlg As Integer OldPrt = Application.ActivePrinter ActPrt = "\\FMV-DESKPOWER\EPSON PM-4000PX on USB002" ActPrt = Trim(ActPrt) On Error Resume Next For i = 0 To 4 Application.ActivePrinter = ActPrt & " on Ne" & Format$(i, "00") & ":" If Err.Number > 0 Then errFlg = Err.Number Err.Clear Else errFlg = 0 Exit For End If Next i ActPrt = Application.ActivePrinter On Error GoTo 0 If ActPrt = OldPrt Then If errFlg > 0 Then MsgBox "設定がうまく行きませんでした", 48 Else MsgBox "設定はそのままで、使えます。", 64 End If ElseIf errFlg = 0 Then MsgBox "正しく設定されました: " & Application.ActivePrinter End If ''印刷(Excel の場合)

  • VBAコード実行を中止する方法は?(1プロシージャだけでなく)

    Exit Subは子だけしか中止できないのですね。 子でエラー起きたら、親もその他もまとめて中止することはできないのでしょうか? Sub 子()   Dim i As Integer   For i = 0 To 5     If 3 < i Then       '' ここで親も終了したい     End If     MsgBox i   Next End Sub Sub 親()   子   MsgBox "エラーならここまで来ないで" End Sub

  • アクセスのインポートエラー 続き

    先ほど、質問しました続きです。以下のVBAを作成しましたが、うまくいきません。助言お願いします。 Option Compare Database Private Sub 実行_Click() Dim cat As ADOX.Catalog Dim tbl As ADOX.Table Dim strName As String Dim i As Long strName = "エラー" i = 0 Set cat = New ADOX.Catalog cat.ActiveConnection = CurrentProject.Connection For Each tbl In cat.Tables If tbl.Name = strName Then i = 1 If MsgBox(tbl.Name & "テーブルを削除しますか?", _ vbYesNo) = vbYes Then cat.Tables.Delete tbl.Name MsgBox tbl.Name & "テーブルの削除を完了しました。" End If Next tbl If i <> 1 Then MsgBox strName & "テーブルが存在しません。" Set cat = Nothing End Sub

  • VBscriptの初歩的な例題が分かりません。

    VBscriptを勉強していて、 VBscriptではじめるWEBプログラミングという本を読んでいるのですが、 いきなり躓いてしまいました。 リスト2-17という例題がのっていたのですが、良く理解できません。 <html> <head> <title>VBScript_Sample17</title> <script type="text/vbscript"> <!-- Option Explicit Sub selectData() dim i dim no dim myPet For i=0 to myForm.pet.length-1 If myForm.pet(i).Checked=True Then myPet=myPet & "[" & myForm.pet(i).Value & "]" no=no+1 End If Next If no>0 Then Msgbox(myPet & "が選択") Else Msgbox("選択なし!") End If End Sub --> </script> </head> <body> <form id="myForm"> <input type="checkBox" name="pet" value="らんちゅう">らんちゅう<br> <input type="checkBox" name="pet" value="桜錦">桜錦<br> <input type="checkBox" name="pet" value="ハムスター">ハムスター </form> <button onClick="selectData()">確認</button> </body> </html> Sub selectData()の中の For Nextステートメントの For i=0 to myForm.pet.length-1 の意味が分かりません。 0から最終値myForm petになるまでlength-1 だから長さを一つずつ短くする? 二つ目の条件文の myPet=myPet & "[" & myForm.pet(i).Value & "]" もよくわかりません。 For i=0 to myForm.pet.length-1 for文は0から 二つ目の条件文の myPet=myPet & "[" & myForm.pet(i).Value & "]" がよくわかりません。 myPetの初期値が書いていないので0から始めればいいのですか? よくわかりません、、、 どなたか教えてくださいよろしくお願いします。

  • VBSでExcelのオープン確認

    VBSCRIPTでエクセルに書き込むものを作っているのですが・・・ エクセルが開きっぱなしの場合、同じシートが開いて書き込めなかったりなど有りその対策を考えています。 もし開いていたらMsgBoxを出して終了させてしまおうかと思うのですがエクセルが開いているかどうか確認できません・・・ どのようにしたらよいでしょうか? wbCount = objExcel.Workbooks.Count msgbox wbCount myFlag = False for i = 1 to wbCount if objExcel.Workbooks(i).Name = strFilename then myFlag = True Exit for end if next if myFlag = True then msgBox "Open" else msgBox "not Open" end if

  • 動的配列が存在(要素が有る)か否かを判定できますか?

    VBAで、「For ループが初期化されていません」エラーが発生します。 動的配列が要素0の時に発生するようです。 動的配列の要素が生成された場合だけ、Forループしたいのですが、 どうやって判定すればよいのでしょうか? ------------------------------- Dim 配列() As Integer Dim i As Integer i = 0 If (i < 0) Then ' 本当は真になったり偽になったり ReDim 配列(0 To i) 配列(i) = a + b i = i + 1 End If '' if ★★★ then '' 配列が有るか確認 For Each c In 配列 MsgBox c Next '' end if -------------------------------

  • 「1から5の間なら」とするには?

    「1から5の間なら」とするには? エクセルvbaです。 Sub test1() Dim i As Integer i = 1 If i = 1 Or i = 2 Or i = 3 Or i = 4 Or i = 5 Then MsgBox "1-5までのどれかです" End If End Sub は、最大でも5なので手入力でできますが、 これが1から100までならor演算子で繋ぐのは大変なので Sub test2() Dim i As Integer i = 1 If i = [1-5] Then MsgBox "1-5までのどれかです" End If End Sub みたいなことをやりたいのですが、うまくいきません。 デバッグしてもエラーにもなりません。 自分でコードを書いといて聞くのもおかしいですがtest2の意味と、表題の方法を教えてください。 よろしくお願いします。

専門家に質問してみよう