Utilisez des fichiers batch et des scripts VBS pour réaliser l'enregistrement automatique des vidéos de sites Web
Maintenant que les chaînes de télévision disposent pour l’essentiel de leurs propres portails, nous pouvons exploiter pleinement les avantages d’Internet pour étendre l’influence des chaînes de télévision locales. En fait, la pratique consistant à afficher sur le site Web les programmes phares quotidiens des chaînes de télévision locales est devenue l'une des étapes nécessaires à la création d'un site Web de chaîne de télévision. Mais le problème qui en découle est que le processus d’enregistrement manuel requis quotidiennement apportera de grands désagréments aux gestionnaires. Sur la base des tâches planifiées de Windows, ce problème peut être résolu efficacement en intégrant de manière organique des programmes batch et des programmes de script.
1 : Créer une tâche de codage
Nous utiliserons un ordinateur équipé d'une carte de capture vidéo pour terminer le processus d'encodage. Même si le codage n’est pas l’objet de cet article, il est néanmoins nécessaire de l’expliquer. L'essentiel est d'utiliser Helix Producer Plus9 pour créer un fichier de paramètres de codage. En fait, il s'agit simplement d'un fichier XML avec le suffixe rpjf (Figure 1). Il convient de noter que les options d'entrée audio incluent l'entrée ligne et l'entrée microphone, qui doivent correspondre à la ligne d'accès réelle. De plus, il n'est pas nécessaire de sélectionner l'option d'encodage vidéo à 2 passes, sa sélection n'aura aucun effet sauf l'affichage d'un message. avertissement ; De plus, comme la plupart des modes d'accès au réseau actuels sont commutés et DSL, il est uniquement nécessaire de générer des fichiers vidéo avec des débits binaires de 56k et 384k. Enfin, le nom du fichier vidéo enregistré est mieux identifié par la date. Par exemple: 20060301.rm.
<?xml version=1.0 encodage=UTF-8?>
<travail xmlns=http://ns.real.com/tools/job.1.0.1>
<enableTwoPass type=bool>faux</enableTwoPass>
<clipInfo>
<entrée>
<nom>Auteur</nom>
<value type=string>ZSTV</value>
</entrée>
<entrée>
<nom>Droits d'auteur</nom>
<value type=string>(c) ZSTV2006 </value>
</entrée>
<entrée>
<nom>Mots clés</nom>
<value type=string>ZSNews[2006-03-21]</value>
</entrée>
<entrée>
<nom>Titre</nom>
<value type=string>ZSNews[2006-03-21]</value>
</entrée>
</clipInfo>
<entrée>
<captureEntrée>
<audioDeviceID type=string>Audio intégré Intel(r)</audioDeviceID>
..................................................................
Nous pouvons créer un fichier batch nommé shixian.bat pour appeler le fichier de paramètres affiché ci-dessus. Les détails internes sont les suivants :
producteur -jd:/shixian/shixian.rpjf -daw -lc e,i
Le processus d'enregistrement par défaut surveille les modifications audio en temps réel et les enregistre dans un fichier appelé producteur.log. Cependant, de nombreux enregistrements parasites sont générés, ce qui rend rapidement le fichier journal énorme et peut provoquer des interruptions inattendues dans le processus d'enregistrement. Vous pouvez utiliser le paramètre -daw pour désactiver la surveillance audio, puis utiliser lc e,i pour spécifier que seules les erreurs et les informations seront enregistrées. Après cela, le processus d’enregistrement devient plus stable.
Tant que nous ajoutons la tâche d'exécution quotidienne du fichier shixian.bat dans le plan, nous obtiendrons chaque jour un fichier rm avec les mêmes attributs et nom de fichier. Un fichier nommé 20060321.rm avec l'attribut 2006-03-21 sera généré ici chaque jour. Cela ressemble à une bouchée, et le pire, c'est que cela ne facilite pas le travail de l'administrateur, car il doit ouvrir le serveur et changer de nom tous les jours. Et même s'il a la chance d'embaucher un administrateur assidu (qui ne craint pas de faire des choses aussi répétitives tous les jours), il ne peut toujours pas modifier l'attribut de la date affichée dans le fichier, ce qui a été décidé lors de ce processus d'enregistrement. . sauf si…….
2 : Créer une tâche pour modifier le fichier de paramètres de codage
Le principe est simple : mettre à jour quotidiennement les champs XML liés à la date dans le fichier de paramètres d'encodage. Dans ce cas, ce sont les attributs du fichier qui indiquent la date et le nom du fichier. Voici le code du script utilisé pour mettre à jour le champ date :
dimregOR
set regOR=new regexp 'Créer un objet d'expression régulière
regOR.ignorecase=True ' Ignorer la casse
regOR.global=True ' La recherche s'applique à la chaîne entière
regOR.pattern=^([0-9]{1})$ ' Crée un modèle de recherche sous la forme d'une expression numérique unique
atténue mon temps
mytime=date ' Utilisez la fonction date pour atteindre la date système et attribuez-la à mydate
yy=year(mytime) 'Extraire l'année de la date du système
mm=month(mytime) 'Extraire le mois de la date système
dd=day(mytime) 'Extraire la date de la date système
if regOR.test(mm) then ' Vérifiez si le mois est un nombre impair (janvier à septembre)
mm=regOR.replace(mm,0$1) ' Si c'est le cas, ajoutez 0 avant le mois pour qu'il soit à deux chiffres
finir si
if regOR.test(dd) then ' Vérifiez si la date est un nombre impair (un à neuf)
dd=regOR.replace(dd,0$1) ' Si c'est le cas, ajoutez 0 avant la date pour qu'elle soit à deux chiffres
finir si
mytime=yy & - & mm & - & dd ' Combine l'année, le mois et le jour sous la forme aa-mm-jj
dest=aa & mm & jj ' Combine l'année, le mois et le jour sous la forme aammjj
motif1=(.*[^0-9])([0-9]{4}/-[0-9]{2}/-[0-9]{2})([^0-9]. *)
'Définissez la variable de modèle pattern1 sur %d%d%d %d- %d %d -%d %d
pattern2=(.*[^0-9])([0-9]{8})([^0-9].*) ' Définit la variable de modèle pattern2 sur 8 nombres consécutifs
regOR.pattern=pattern1 ' Créer un modèle de recherche en tant que modèle1
dimtempstring
Set fso = CreateObject(Scripting.FileSystemObject) 'Créer un objet fichier système
Set f = fso.CreateTextFile(d:/shixian/temp.txt, True) 'Créer un nouveau fichier texte nommé temp
Set fr = fso.GetFile(d:/shixian/shixian.rpjf) ' Récupère le fichier de paramètres d'encodage shixian.rpjf
Set ts = fr.OpenAsTextStream(1,-2) 'Ouvre le fichier de paramètres en texte en lecture seule
do jusqu'à ce que ts.AtEndOfStream ' Crée une boucle jusqu'à ce que le fichier de paramètres soit lu
tempstring=ts.readline 'Lire le fichier de paramètres en unités de ligne
if regOR.test(tempstring) then 'Rechercher un champ de date dans le paramètre de changement de ligne
tempstring=regOR.replace(tempstring,$1 & mytime & $3) 'S'il existe, mettez-le à jour
finir si
regOR.pattern=pattern2 ' Créer un modèle de recherche en tant que modèle2
if regOR.test(tempstring) then 'Rechercher un champ de date dans le paramètre de changement de ligne
tempstring=regOR.replace(tempstring,$1 & dest & $3) 'S'il existe, mettre à jour
finir si
regOR.pattern=pattern1 ' Rétablit le modèle de recherche en tant que modèle1
f.writeline(tempstring) 'Écrivez les données mises à jour dans le fichier temp.txt
boucle
ts.close 'Ce qui suit consiste à fermer et à déconnecter chaque objet
f.fermer
définir regOR = rien
paramètres = rien
définir fr = rien
définir f = rien
définir fso = rien
Ce qu'il faut expliquer, c'est pourquoi 0 est ajouté avant les mois et les jours à un chiffre. C'est plus facile à expliquer par une analogie : si 0 n'est pas ajouté, alors pour un fichier nommé 2006111.rm, fait-il référence au 11 janvier 2006 ou au 1er novembre 2006 ? Après avoir ajouté 0, il devient 20060111.rm Il est clair en un coup d'œil qu'il s'agit du premier.
La fonction spécifique du code de script ci-dessus est d'importer les données du fichier de paramètres dans un fichier texte temporaire en unités comportementales, de surveiller les champs XML liés au temps en temps réel et de les mettre à jour, et enfin de générer un fichier temp.txt. Après cela, tout ce que nous avons à faire est d'appeler le script avec un fichier batch, de supprimer l'ancien fichier de paramètres et enfin de renommer temp.txt en fichier de paramètres.
Voici le code dans le fichier batch update.bat :
@echo désactivé
d:/shixian/update.vbs
si existe d:/shixian/shixian.rpjf del d:/shixian/shixian.rpjf
s'il existe d:/shixian/temp.txt, renommez d:/shixian/temp.txt shixian.rpjf
Comme dans la première section, vous devez toujours ajouter le fichier batch update.bat au plan et aux tâches afin qu'il puisse être démarré régulièrement chaque jour.
3 : Créer des tâches de transmission automatique
Afin de garantir la stabilité, le serveur d'encodage et le serveur du site Web sont généralement séparés, ce qui nous oblige à transférer quotidiennement les fichiers vidéo enregistrés vers le serveur du site Web. La commande ftp dans le fichier batch peut parfaitement implémenter cette fonction.
Voici le code du processus batch transfer.bat :
@echo désactivé
ftp -s:media.txt
s'il existe d:/shixian/shixian20060321.rm del d:/shixian/shixian20060321.rm
Compte tenu du prix étonnant des disques durs SCSI, l'espace disque dur du serveur d'encodage n'a pas besoin d'être trop grand. La fonction de la dernière ligne est de supprimer les fichiers vidéo du serveur d'encodage pour économiser de l'espace. Media.txt est un fichier de paramètres FTP, qui enregistre le nom, le nom d'utilisateur, le mot de passe et les opérations associées du serveur de connexion FTP. La forme spécifique est la suivante :
ouvert/nom du serveur ou adresse IP/
/ nom d'utilisateur/
/mot de passe utilisateur/
put / nom du fichier à transférer /
quitter
De toute évidence, de nombreuses expressions littérales de date doivent être mises à jour dans les extraits de code ci-dessus. Pour la même raison, nous devons également utiliser un script de mise à jour similaire et le code spécifique ne sera pas répété.
4 : Quelques suggestions d’amélioration
1 : La fonction de codage peut également être réalisée à l’aide d’un lecteur multimédia.
2 : Dans le script de mise à jour, le code utilisé pour déclarer et désenregistrer les objets comporte plusieurs lignes, ce qui peut être grandement simplifié si vous utilisez Perl. Parce que Perl fournit une série de symboles d'opération pour implémenter les fonctions des expressions régulières, et qu'en fait, Perl est né pour traiter du texte.
open(RPJF,<c:/code/10161.rpjf) ou die(impossible d'ouvrir à cause de $!/n);
open(TEMP,>c:/code/temp.txt) ou die(impossible d'ouvrir à cause de $!/n);
($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst)=localtime();
$mday=sprintf(%.2d,$mday);
$mon=sprintf(%.2d,$mon+1);
$année+=1900 ;
$timerF=$année.$mon.$mday;
$timerS=$année.-.$mon.-.$mday;
pendant que(<RPJF>){
mâcher();
$_=~s/(.*)([0-9]{8})(.*)/$1$timerF$3/;
$_=~s/(.*)([0-9]{4}/-[0-9]{2}/-[0-9]{2})(.*)/$1$timerS$3/ ;
imprimer TEMP $_/n ;
}
fermer(RPJF);
fermer(TEMP);
3 : L'utilisation du mappage de disque peut rendre le transfert de fichiers plus pratique, mais les problèmes de sécurité doivent être pris en compte.