バッチファイルとvbsスクリプトを使用してWebサイトビデオの自動録画を実現します
テレビ局は基本的に独自のポータルを持っている今、インターネットの利点を最大限に活用して、ローカルテレビ局の影響力を拡大することができます。実際、地元テレビ局の毎日の主力番組をウェブサイトに掲載するという行為は、テレビ局のウェブサイトを開設する上で必要なステップの 1 つとなっています。しかし、それに伴う問題は、毎日必要な手動の記録プロセスが管理者に多大な不便をもたらすことです。 Windows のスケジュールされたタスクに基づいて、バッチ プログラムとスクリプト プログラムを有機的に統合することで、この問題を効果的に解決できます。
1: コーディングタスクを作成する
ビデオ キャプチャ カードを備えたコンピュータを使用して、エンコード プロセスを完了します。コーディングはこの記事の焦点ではありませんが、それでも説明する必要があります。主なことは、helix プロデューサー plus9 を使用してコーディング パラメーター ファイルを作成することです。実際、これは rpjf 接尾辞が付いた単なる XML ファイルです (図 1)。オーディオ入力オプションにはライン入力とマイク入力が含まれており、実際のアクセス回線と一致する必要があることに注意してください。さらに、2 パス ビデオ エンコード オプションを選択する必要はなく、選択しても、警告。さらに、現在のネットワーク アクセス モードのほとんどはダイヤルアップと DSL であるため、最終的には、56k と 384k ビット レートのビデオ ファイルを生成するだけで済みます。例えば: 20060301.rm。
<?xml バージョン=1.0 エンコーディング=UTF-8?>
<job xmlns=http://ns.real.com/tools/job.1.0.1>
<enableTwoPass type=bool>false</enableTwoPass>
<クリップ情報>
<エントリ>
<名前>著者</名前>
<value type=string>ZSTV</value>
</entry>
<エントリ>
<名前>著作権</名前>
<value type=string>(c) ZSTV2006 </value>
</entry>
<エントリ>
<name>キーワード</name>
<value type=string>ZSNews[2006-03-21]</value>
</entry>
<エントリ>
<名前>タイトル</名前>
<value type=string>ZSNews[2006-03-21]</value>
</entry>
</クリップ情報>
<入力>
<キャプチャ入力>
<audioDeviceID type=string>インテル(r) 統合オーディオ</audioDeviceID>
...................................................................
shixian.bat という名前のバッチ ファイルを作成して、上記のパラメータ ファイルを呼び出すことができます。内部の詳細は次のとおりです。
プロデューサー -jd:/shixian/shixian.rpjf -daw -lc e,i
デフォルトの録音プロセスはオーディオの変更をリアルタイムで監視し、Producer.log というファイルに記録します。ただし、大量の変動レコードが生成されるため、すぐにログ ファイルが巨大になり、録音プロセスが予期せず中断される可能性があります。 -daw パラメータを使用してオーディオ モニタリングをオフにし、lc e,i を使用してエラーと情報のみをログに記録するように指定できます。これを行うと、記録プロセスがより安定します。
shixian.bat ファイルを毎日実行するタスクをプランに追加している限り、同じファイル属性と名前を持つ rm ファイルを毎日取得します。属性 2006-03-21 を持つ 20060321.rm という名前のファイルが毎日ここに生成されます。くどいようですが、さらに悪いことに、管理者の仕事はそれほど簡単にはなりません。管理者は毎日サーバーを開いてその名前を変更する必要があるからです。そして、たとえ幸運にも勤勉な管理者 (このような繰り返しの作業を毎日行うことを気にしない管理者) を雇うことができたとしても、この記録プロセス中に決定された、ファイルに表示される日付の属性を変更することはできません。 。ない限り……。
2: コーディングパラメータファイルを変更するタスクを作成する
原理は単純です。エンコード パラメータ ファイル内の日付関連の XML フィールドを毎日更新します。この場合、日付とファイル名を示すファイルの属性です。 日付フィールドを更新するために使用されるスクリプト コードは次のとおりです。
dimregOR
set regOR=new regexp '正規表現オブジェクトを作成します
regOR.ignorecase=True ' 大文字と小文字を無視します
regOR.global=True ' 検索は文字列全体に適用されます
regOR.pattern=^([0-9]{1})$ ' 単一の数値式として検索パターンを作成します
薄暗い私の時間
mytime=date ' date 関数を使用してシステム日付を取得し、それを mydate に割り当てます
yy=year(mytime) 'システム日付から年を抽出します
mm=month(mytime) 'システム日付から月を抽出します
dd=day(mytime) 'システム日付から日付を抽出します
if regOR.test(mm) then ' 月が奇数かどうかを確認します (1 月から 9 月まで)
mm=regOR.replace(mm,0$1) ' その場合は、月の前に 0 を追加して 2 桁にします
終了する場合
if regOR.test(dd) then ' 日付が奇数(1 ~ 9)であるかどうかを確認します
dd=regOR.replace(dd,0$1) ' その場合は、日付の前に 0 を追加して 2 桁にします
終了する場合
mytime=yy & - & mm & - & dd ' 年、月、日を yy-mm-dd の形式に結合します
dest=yy & mm & dd ' 年、月、日を yymmdd の形式に結合します
pattern1=(.*[^0-9])([0-9]{4}/-[0-9]{2}/-[0-9]{2})([^0-9]。 *)
'パターン変数 pattern1 を %d%d%d %d- %d %d -%d %d に設定します
pattern2=(.*[^0-9])([0-9]{8})([^0-9].*) ' パターン変数 pattern2 を 8 つの連続する数字に設定します
regOR.pattern=pattern1 ' 検索パターンを pattern1 として作成します
ディムテンプストリング
Set fso = CreateObject(Scripting.FileSystemObject) 'システム ファイル オブジェクトを作成します
Set f = fso.CreateTextFile(d:/shixian/temp.txt, True) ' temp という名前の新しいテキスト ファイルを作成します
Set fr = fso.GetFile(d:/shixian/shixian.rpjf) ' エンコードパラメータファイル shixian.rpjf を取得します
Set ts = fr.OpenAsTextStream(1,-2) 'パラメータ ファイルを読み取り専用テキストとして開きます
do until ts.AtEndOfStream ' パラメータファイルが読み込まれるまでループを作成します
tempstring=ts.readline 'パラメータファイルを行単位で読み込みます
if regOR.test(tempstring) then '行変更パラメータの日付フィールドを検索します
tempstring=regOR.replace(tempstring,$1 & mytime & $3) '存在する場合は更新します
終了する場合
regOR.pattern=pattern2 ' 検索パターンを pattern2 として作成します
if regOR.test(tempstring) then '行変更パラメータの日付フィールドを検索します
tempstring=regOR.replace(tempstring,$1 & dest & $3) '存在する場合は更新します
終了する場合
regOR.pattern=pattern1 ' 検索パターンを pattern1 として再確立します
f.writeline(tempstring) '更新されたデータを temp.txt ファイルに書き込みます
ループ
ts.close '以下は各オブジェクトを閉じてログアウトします
f.閉じる
regOR=何も設定しない
セット=何もない
fr=何も設定しない
f=何も設定しない
fso=何も設定しない
なぜ 1 桁の月と日の前に 0 が追加されるのかを説明する必要があります。例えで説明すると分かりやすいです。0 が追加されていない場合、2006111.rm という名前のファイルは、2006 年 1 月 11 日を指すのか、2006 年 11 月 1 日を指すのか? 0を加えると20060111.rmとなり、前者であることが一目瞭然です。
上記のスクリプト コードの具体的な機能は、パラメーター ファイル内のデータを動作単位で一時テキスト ファイルにインポートし、時間関連の XML フィールドをリアルタイムで監視して更新し、最後に temp.txt ファイルを生成することです。その後、バッチ ファイルでスクリプトを呼び出し、古いパラメータ ファイルを削除し、最後に temp.txt の名前をパラメータ ファイルに変更するだけです。
これは update.bat バッチ ファイル内のコードです。
@エコーオフ
d:/shixian/update.vbs
存在する場合 d:/shixian/shixian.rpjf デル d:/shixian/shixian.rpjf
d:/shixian/temp.txt が存在する場合は、d:/shixian/temp.txt shixian.rpjf の名前を変更します
最初のセクションと同様に、毎日定期的に開始できるように、update.bat バッチ ファイルをプランとタスクに追加する必要があります。
3:自動送信タスクの作成
安定性を確保するために、通常、エンコード サーバーと Web サイト サーバーは分離されており、録画したビデオ ファイルを毎日 Web サイト サーバーに転送する必要があります。バッチ ファイル内の ftp コマンドは、この機能を完全に実装できます。
以下は、transfer.bat バッチ プロセスのコードです。
@エコーオフ
ftp -s:メディア.txt
存在する場合 d:/shixian/shixian20060321.rm デル d:/shixian/shixian20060321.rm
SCSI ハード ドライブの驚くべき価格を考慮すると、エンコード サーバーのハード ディスク スペースはそれほど大きくする必要はありません。最後の行の機能は、スペースを節約するためにエンコード サーバー内のビデオ ファイルを削除することです。 Media.txt は、ftp ログイン サーバーの名前、ユーザー名、パスワード、および関連する操作を記録する ftp パラメーター ファイルです。具体的な形式は次のとおりです。
open/サーバー名またはIPアドレス/
/ユーザー名/
/ユーザーパスワード/
put / 転送するファイル名 /
やめる
明らかに、上記のコード スニペットには、更新する必要がある日付リテラル式が多数あります。同じ理由で、同様の更新スクリプトも使用する必要がありますが、特定のコードは繰り返されません。
4: 改善のためのいくつかの提案
1: コーディング機能はメディアプレーヤーでも実現できます。
2: 更新スクリプトでは、オブジェクトの宣言と登録解除に使用されるコードに複数の行がありますが、Perl を使用すると大幅に簡素化できます。なぜなら、perl は正規表現の機能を実装するための一連の演算記号を提供しており、実際、perl はテキストを処理するために生まれたからです。
open(RPJF,<c:/code/10161.rpjf) または die($!/n のため開けません);
open(TEMP,>c:/code/temp.txt) または die($!/n のため開けません);
($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst)=localtime();
$mday=sprintf(%.2d,$mday);
$mon=sprintf(%.2d,$mon+1);
$年+=1900;
$timerF=$year.$mon.$mday;
$timerS=$year.-.$mon.-.$mday;
while(<RPJF>){
chomp();
$_=~s/(.*)([0-9]{8})(.*)/$1$timerF$3/;
$_=~s/(.*)([0-9]{4}/-[0-9]{2}/-[0-9]{2})(.*)/$1$timerS$3/ ;
TEMP $_/n を出力します。
}
閉じる(RPJF);
閉じる(TEMP);
3: ディスク マッピングを使用するとファイル転送がより便利になりますが、セキュリティの問題を考慮する必要があります。