人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

Windows用のバッチファイル(スクリプトファイル)に関する質問です。ホームビデオで撮影したイベントの動画ファイルがたくさんあります。Windows Media Player10で再生して見ています。この複数の動画ファイルを、連続で再生したいのです。

・動画は、「C:\video\」の下に、まとめて置いてます
・30?40個くらいです
・1分間程度を再生したら、次に動画に移りたいです
・順番は指定(記述)できると良いですが、ランダムでも構いません
・WindowsXP/Proです
・Dosバッチファイルやvbsなどのスクリプト系が条件です

Dosは詳しくないので、単純に「"C:\Program Files\Windows Media Player\wmplayer.exe" "C:\video\fami001.wmv"」などと、複数行、書いてみました。当然ですが、1つのファイル全ての再生が終了しないと、次のファイルの再生に移りません。

初歩的な質問ですみません。ズバリのご回答のみ、求めています。「こうすれば??」のような推測的ご回答は不要でございます。たぶん、簡単な記述でOKなのだと思います。

以上、よろしくお願いいたします。

●質問者: Mugicha2004
●カテゴリ:コンピュータ
✍キーワード:DoS exe VBS Windows Windows Media Player
○ 状態 :終了
└ 回答数 : 4/5件

▽最新の回答へ

1 ● Namo4680
●5ポイント

http://www.vector.co.jp/soft/winnt/art/se408339.html

目的を達成するだけならばこちらのフリーウェアから可能ですが

バッチファイルでないと駄目だったでしょうか?

動作確認してみましたがランダム再生と再生時間の指定が可能です。

(ただ再生時間を0?60秒と指定しても若干再生時間にずれが生じるようですが)

なおファイルの種類を指定する時にすべてのファイルを選択しないとデフォルトでwmvが表示されないようです。

wmvは再生可能

◎質問者からの返答

ご回答、ありがとうございます。試してみますね。希望はバッチファイル系です。そちらのコメントを、お待ちします。


2 ● captim
●50ポイント

下のスクリプトでできます。

ただし、今回2つのファイルしか書いていませんが

読みたいものを1つずつ書いていく必要があります。

工夫すればリストから読み出しもできるはずですが・・・

ファイルは関連しているソフトで動きますが、起動までの

時間も含まれているので実際は1分以上で設定したほうが

よいかもしれません。

名前を連番にするならfor?nextを使えばいけます。

スクリプトの説明

wscript.Sleep 1000

→1000[mSec]なのでこれで1秒待ちます。

60000[mSec]は1分です。

Set ws = CreateObject("Wscript.Shell")

ws.run "ファイル名"

→ファイル名を実行します。


Set ws = CreateObject("Wscript.Shell")

ws.run "c:\video\fami001.wmv"

wscript.Sleep 60000

Set ws = CreateObject("Wscript.Shell")

ws.run "c:\video\fami002.wmv"

wscript.Sleep 60000


次のURLはあまり参考にならないかもしれませんが・・・

http://www1.u-netsurf.ne.jp/~tomo_c/tips/Scr003.html

◎質問者からの返答

ご回答、ありがとうございます。これです!こちらの内容で、完璧にOKでした。大変感謝です。

Unix系のシェルスクリプトはなじみが深いのですが、Dosのバッチファイルは、ほとんど知りません。WSHはその高機能版みたいですね。有用そうですので、これをきっかけに勉強してみます。

本当に、ありがとうございました。


3 ● circuit
●5ポイント

少し作成に時間がかかりますが、Windowsについている「Windows ムービー メーカー」を使って、映像を編集したのを見てみてはいかがですか?

たとえば40個のファイルをすべて読み込んで、順番に時間していで再生するのも可能だったと思います。

http://www.microsoft.com/japan/windowsxp/using/moviemaker/de...

◎質問者からの返答

ご回答、ありがとうございます。すみませんが、希望情報とは異なるようです。スクリプト系の解を求めていました。同様のコトは実現できるのかもしれませんが、当方の希望する状況にはマッチしないのです。申し訳ありませんが...


4 ● y3kz
●30ポイント

普通にバッチかスクリプトを書くと、SLEEPを使って、動画ファイルを順次WMPに再生させていくことになるのだと思います。

自動再生していくだけならそれでもいいのかもしれませんが、途中で連続再生をやめたいときや、動画をスキップしたいときに不便です。

.ASXファイルで再生時間を指定するのが一番スマートではないかと思います。

<DURATION> タグを使用すれば、再生時間を指定できます。

参考↓

http://www.microsoft.com/japan/windows/windowsmedia/howto/ar...


とりあえず、再生時間を指定した.ASXファイルを作成して、それをWMPに再生させるVBSを書いてみました。

'動画フォルダとWMPのパスの指定
Const MOVIE_FOLDER = "C:\Video"
Const WMP_PATH = "C:\Program Files\Windows Media Player\wmplayer.exe"

'作成するASXファイルのパスの指定。
Const ASX_PATH = "C:\WINDOWS\TEMP\myASX.asx"

'時間の設定(「時間:分:秒」で指定し、ダブルクォーテーションで囲む。)
Const PLAYTIME = "00:01:00"

Set fso = CreateObject("Scripting.FileSystemObject")
Set myASX = fso.CreateTextFile(ASX_PATH, True)
Set myMovies = fso.GetFolder(MOVIE_FOLDER).Files

myASX.WriteLine "<ASX Version = ""3.0"">"
For Each myMovie In myMovies
 myASX.WriteLine " <Entry><Ref href = """ & myMovie.Path & """ /><Duration value = """ & PLAYTIME & """ /></Entry>"
Next
myASX.WriteLine "</ASX>"
myASX.Close

'.ASXファイルを作るだけなら、↓の行は不要。
CreateObject("WScript.Shell").Run """" & WMP_PATH & """ """ & ASX_PATH & """"
◎質問者からの返答

ご回答、ありがとうございます。こちらのテも有効そうですね。ぱっと見た感じでは、2番の方の手法の方が、シンプルな印象です。機会がありましたら、試してみます。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ