Verwenden Sie Batchdateien und VBS-Skripte, um die automatische Aufzeichnung von Website-Videos zu realisieren
Da die TV-Sender grundsätzlich über eigene Portale verfügen, können wir die Vorteile des Internets voll ausnutzen, um den Einfluss lokaler TV-Sender auszubauen. Tatsächlich ist die Praxis, die täglichen Flaggschiffprogramme lokaler Fernsehsender auf die Website zu stellen, zu einem der notwendigen Schritte bei der Einrichtung einer Fernsehsender-Website geworden. Das damit verbundene Problem besteht jedoch darin, dass der täglich erforderliche manuelle Aufzeichnungsprozess für Manager große Unannehmlichkeiten mit sich bringt. Auf der Grundlage geplanter Windows-Aufgaben kann dieses Problem durch die organische Integration von Batch-Programmen und Skriptprogrammen effektiv gelöst werden.
1: Erstellen Sie eine Codierungsaufgabe
Wir werden einen Computer mit einer Videoaufnahmekarte verwenden, um den Kodierungsvorgang abzuschließen. Obwohl das Codieren nicht der Schwerpunkt dieses Artikels ist, ist es dennoch notwendig, es zu erklären. Die Hauptsache ist, Helix Producer Plus9 zu verwenden, um eine Codierungsparameterdatei zu erstellen. Tatsächlich handelt es sich nur um eine XML-Datei mit dem Suffix rpjf (Abbildung 1). Es ist zu beachten, dass die Audioeingangsoptionen den Line-Eingang und den Mikrofoneingang umfassen, die mit der tatsächlichen Zugangsleitung übereinstimmen müssen. Darüber hinaus ist es nicht erforderlich, die 2-Pass-Vedio-Kodierungsoption auszuwählen. Die Auswahl hat keine Auswirkung, außer der Anzeige von a Warnung: Da es sich bei den meisten aktuellen Netzwerkzugriffsmodi um DFÜ und DSL handelt, ist es lediglich erforderlich, Videodateien mit 56K- und 384K-Bitraten zu erstellen. Der Name der aufgezeichneten Videodatei lässt sich am besten anhand des Datums identifizieren. Zum Beispiel: 20060301.rm.
<?xml-Version=1.0-Kodierung=UTF-8?>
<job xmlns=http://ns.real.com/tools/job.1.0.1>
<enableTwoPass type=bool>false</enableTwoPass>
<clipInfo>
<Eintrag>
<name>Autor</name>
<value type=string>ZSTV</value>
</Eintrag>
<Eintrag>
<name>Urheberrecht</name>
<value type=string>(c) ZSTV2006 </value>
</Eintrag>
<Eintrag>
<name>Schlüsselwörter</name>
<value type=string>ZSNews[21.03.2006]</value>
</Eintrag>
<Eintrag>
<name>Titel</name>
<value type=string>ZSNews[21.03.2006]</value>
</Eintrag>
</clipInfo>
<Eingabe>
<captureInput>
<audioDeviceID type=string>Intel(r) Integrated Audio</audioDeviceID>
.................................................
Wir können eine Batchdatei mit dem Namen shixian.bat erstellen, um die oben gezeigte Parameterdatei aufzurufen. Die internen Details lauten wie folgt:
Produzent -jd:/shixian/shixian.rpjf -daw -lc e,i
Der Standardaufzeichnungsprozess überwacht Audioänderungen in Echtzeit und zeichnet sie in einer Datei namens „producer.log“ auf. Es werden jedoch viele Wanging-Datensätze generiert, wodurch die Protokolldatei schnell riesig wird und es zu unerwarteten Unterbrechungen im Aufzeichnungsprozess kommen kann Mit dem Parameter -daw können Sie die Audioüberwachung deaktivieren und dann mit lc e,i festlegen, dass nur Fehler und Informationen protokolliert werden. Dadurch wird der Aufnahmevorgang stabiler.
Solange wir die Aufgabe, die Datei shixian.bat täglich auszuführen, in den Plan aufnehmen, erhalten wir jeden Tag eine RM-Datei mit denselben Dateiattributen und demselben Namen. Hier wird täglich eine Datei namens 20060321.rm mit dem Attribut 21.03.2006 generiert. Es hört sich wie ein Bissen an, und was noch schlimmer ist, es macht die Arbeit des Administrators nicht einfacher, da er jeden Tag den Server öffnen und seinen Namen ändern muss. Und selbst wenn er das Glück hat, einen fleißigen Administrator zu engagieren (der nichts dagegen hat, jeden Tag solche sich wiederholenden Dinge zu tun), kann er das Attribut des in der Datei angezeigten Datums, das während dieses Aufnahmevorgangs festgelegt wurde, immer noch nicht ändern . es sei denn…….
2: Erstellen Sie eine Aufgabe zum Ändern der Codierungsparameterdatei
Das Prinzip ist einfach: Aktualisieren Sie täglich die datumsbezogenen XML-Felder in der Codierungsparameterdatei. In diesem Fall sind es die Dateiattribute, die das Datum und den Dateinamen anzeigen. Hier ist der Skriptcode, der zum Aktualisieren des Datumsfelds verwendet wird:
dimregOR
set regOR=new regexp 'Erstellt ein reguläres Ausdrucksobjekt
regOR.ignorecase=True ' Groß-/Kleinschreibung ignorieren
regOR.global=True ' Die Suche gilt für die gesamte Zeichenfolge
regOR.pattern=^([0-9]{1})$ ' Erstellen Sie ein Suchmuster als einzelnen numerischen Ausdruck
dimme meine Zeit
mytime=date ' Verwenden Sie die Datumsfunktion, um das Systemdatum zu erreichen und es mydate zuzuweisen
yy=year(mytime) 'Extrahiere das Jahr aus dem Systemdatum
mm=month(mytime) 'Extrahieren Sie den Monat aus dem Systemdatum
dd=day(mytime) 'Extrahiere das Datum aus dem Systemdatum
if regOR.test(mm) then ' Überprüfen Sie, ob der Monat eine ungerade Zahl ist (Januar bis September)
mm=regOR.replace(mm,0$1) ' Wenn ja, fügen Sie 0 vor dem Monat hinzu, um ihn zweistellig zu machen
Ende wenn
if regOR.test(dd) then 'Überprüfen Sie, ob das Datum eine ungerade Zahl ist (eins bis neun)
dd=regOR.replace(dd,0$1) ' Wenn ja, fügen Sie 0 vor dem Datum hinzu, um es zweistellig zu machen
Ende wenn
mytime=yy & - & mm & - & dd ' Kombinieren Sie Jahr, Monat und Tag in der Form jj-mm-tt
dest=yy & mm & dd ' Kombinieren Sie Jahr, Monat und Tag in der Form yymmdd
Muster1=(.*[^0-9])([0-9]{4}/-[0-9]{2}/-[0-9]{2})([^0-9]. *)
'Setzen Sie die Mustervariable pattern1 auf %d%d%d %d- %d %d -%d %d
Muster2=(.*[^0-9])([0-9]{8})([^0-9].*) ' Mustervariable Muster2 auf 8 aufeinanderfolgende Zahlen setzen
regOR.pattern=pattern1 ' Suchmuster als Muster1 erstellen
dimtempstring
Set fso = CreateObject(Scripting.FileSystemObject) 'Erstellt ein Systemdateiobjekt
Set f = fso.CreateTextFile(d:/shixian/temp.txt, True) ' Erstellen Sie eine neue Textdatei mit dem Namen temp
Set fr = fso.GetFile(d:/shixian/shixian.rpjf) ' Holen Sie sich die Codierungsparameterdatei shixian.rpjf
Set ts = fr.OpenAsTextStream(1,-2) 'Öffnen Sie die Parameterdatei als schreibgeschützten Text
do Until ts.AtEndOfStream ' Erstellen Sie eine Schleife, bis die Parameterdatei gelesen wird
tempstring=ts.readline 'Parameterdatei in Zeileneinheiten lesen
if regOR.test(tempstring) then 'Suche nach einem Datumsfeld im Zeilenänderungsparameter
tempstring=regOR.replace(tempstring,$1 & mytime & $3) 'Wenn es existiert, aktualisieren Sie es
Ende wenn
regOR.pattern=pattern2 ' Suchmuster als Muster2 erstellen
if regOR.test(tempstring) then 'Suche nach einem Datumsfeld im Zeilenänderungsparameter
tempstring=regOR.replace(tempstring,$1 & dest & $3) 'Wenn vorhanden, aktualisieren
Ende wenn
regOR.pattern=pattern1 ' Suchmuster als Muster1 wiederherstellen
f.writeline(tempstring) 'Schreiben Sie die aktualisierten Daten in die Datei temp.txt
Schleife
ts.close 'Im Folgenden wird jedes Objekt geschlossen und abgemeldet
f.schließen
setze regOR=nichts
setts=nichts
setze fr=nichts
setze f=nichts
setze fso=nichts
Es muss erklärt werden, warum 0 vor einstelligen Monaten und Tagen hinzugefügt wird. Mit einer Analogie lässt sich das einfacher erklären: Wenn 0 nicht hinzugefügt wird, bezieht sich die Datei mit dem Namen 2006111.rm dann auf den 11. Januar 2006 oder den 1. November 2006? Nach dem Hinzufügen von 0 wird daraus 20060111.rm. Auf den ersten Blick ist klar, dass es sich um ersteres handelt.
Die spezifische Funktion des obigen Skriptcodes besteht darin, die Daten in der Parameterdatei in Verhaltenseinheiten in eine temporäre Textdatei zu importieren, die zeitbezogenen XML-Felder in Echtzeit zu überwachen und zu aktualisieren und schließlich eine temp.txt-Datei zu generieren. Danach müssen wir nur noch das Skript mit einer Batchdatei aufrufen, die alte Parameterdatei löschen und schließlich temp.txt in die Parameterdatei umbenennen.
Dies ist der Code in der Batchdatei update.bat:
@echo aus
d:/shixian/update.vbs
falls vorhanden d:/shixian/shixian.rpjf del d:/shixian/shixian.rpjf
Wenn d:/shixian/temp.txt vorhanden ist, benennen Sie d:/shixian/temp.txt in shixian.rpjf um
Wie im ersten Abschnitt müssen Sie noch die Batchdatei update.bat zum Plan und zu den Aufgaben hinzufügen, damit sie jeden Tag regelmäßig gestartet werden kann.
3: Automatische Übertragungsaufgaben erstellen
Um die Stabilität zu gewährleisten, sind der Verschlüsselungsserver und der Website-Server normalerweise getrennt, was bedeutet, dass wir die aufgezeichneten Videodateien täglich an den Website-Server übertragen müssen. Der FTP-Befehl in der Batchdatei kann diese Funktion perfekt implementieren.
Das Folgende ist der Code im Batch-Prozess transfer.bat:
@echo aus
ftp -s:media.txt
falls vorhanden d:/shixian/shixian20060321.rm del d:/shixian/shixian20060321.rm
Angesichts des erstaunlichen Preises von SCSI-Festplatten muss der Festplattenspeicher des Kodierungsservers nicht zu groß sein. Die Funktion der letzten Zeile besteht darin, die Videodateien im Kodierungsserver zu löschen, um Platz zu sparen. Media.txt ist eine FTP-Parameterdatei, die den Namen, den Benutzernamen, das Passwort und die zugehörigen Vorgänge des FTP-Anmeldeservers aufzeichnet. Das spezifische Formular ist wie folgt:
öffnen/Servername oder IP-Adresse/
/Benutzername/
/Benutzerpasswort/
put / Dateiname, der übertragen werden soll /
aufhören
Offensichtlich gibt es viele Datumsliteralausdrücke, die in den obigen Codefragmenten aktualisiert werden müssen. Aus dem gleichen Grund müssen wir auch ein ähnliches Update-Skript verwenden und der spezifische Code wird nicht wiederholt.
4: Einige Verbesserungsvorschläge
1: Die Codierungsfunktion kann auch über den Mediaplayer realisiert werden.
2: Im Update-Skript besteht der zum Deklarieren und Aufheben der Registrierung von Objekten verwendete Code aus mehreren Zeilen, was bei Verwendung von Perl erheblich vereinfacht werden kann. Weil Perl eine Reihe von Operationssymbolen bereitstellt, um die Funktionen regulärer Ausdrücke zu implementieren, und Perl tatsächlich für die Verarbeitung von Text geboren wurde.
open(RPJF,<c:/code/10161.rpjf) or die(kann wegen $!/n nicht geöffnet werden);
open(TEMP,>c:/code/temp.txt) or die(kann wegen $!/n nicht geöffnet werden);
($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst)=localtime();
$mday=sprintf(%.2d,$mday);
$mon=sprintf(%.2d,$mon+1);
$Jahr+=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/ ;
print TEMP $_/n;
}
close(RPJF);
close(TEMP);
3: Die Verwendung der Festplattenzuordnung kann die Dateiübertragung komfortabler machen, es müssen jedoch Sicherheitsaspekte berücksichtigt werden.