Utilice archivos por lotes y scripts vbs para realizar la grabación automática de videos del sitio web
Ahora que las estaciones de televisión básicamente tienen sus propios portales, podemos aprovechar al máximo las ventajas de Internet para ampliar la influencia de las estaciones de televisión locales. De hecho, la práctica de colgar los programas emblemáticos diarios de las estaciones de televisión locales en el sitio web se ha convertido en uno de los pasos necesarios para establecer un sitio web de estación de televisión. Pero el problema que conlleva es que el proceso de grabación manual que se requiere todos los días traerá grandes inconvenientes a los gerentes. Sobre la base de las tareas programadas de Windows, este problema se puede resolver de manera efectiva integrando orgánicamente programas por lotes y programas de script.
1: crear una tarea de codificación
Usaremos una computadora con una tarjeta de captura de video para completar el proceso de codificación. Aunque la codificación no es el tema central de este artículo, aún es necesario explicarla. Lo principal es utilizar helix Producer plus9 para crear un archivo de parámetros de codificación. De hecho, es solo un archivo xml con el sufijo rpjf (Figura 1). Cabe señalar que las opciones de entrada de audio incluyen entrada de línea y entrada de micrófono, que deben coincidir con la línea de acceso real. Además, no es necesario seleccionar la opción de codificación de video de 2 pasos; seleccionarla no tendrá ningún efecto excepto mostrar un mensaje; advertencia Además, debido a que la mayoría de los modos de acceso a la red actuales son de acceso telefónico y dsl, solo es necesario generar archivos de video con velocidades de bits de 56k y 384k. Finalmente, el nombre del archivo de video grabado se identifica mejor por fecha. Por ejemplo: 20060301.rm.
<?versión xml=codificación 1.0=UTF-8?>
<trabajo xmlns=http://ns.real.com/tools/job.1.0.1>
<enableTwoPass tipo=bool>falso</enableTwoPass>
<información del clip>
<entrada>
<nombre>Autor</nombre>
<tipo de valor=cadena>ZSTV</valor>
</entrada>
<entrada>
<nombre>Derechos de autor</nombre>
<tipo de valor=cadena>(c) ZSTV2006 </valor>
</entrada>
<entrada>
<nombre>Palabras clave</nombre>
<valor tipo=cadena>ZSNews[2006-03-21]</valor>
</entrada>
<entrada>
<nombre>Título</nombre>
<valor tipo=cadena>ZSNews[2006-03-21]</valor>
</entrada>
</clipInfo>
<entrada>
<entrada de captura>
<audioDeviceID tipo=cadena>Audio integrado Intel(r)</audioDeviceID>
.................................................
Podemos crear un archivo por lotes llamado shixian.bat para llamar al archivo de parámetros que se muestra arriba. Los detalles internos son los siguientes:
productor -jd:/shixian/shixian.rpjf -daw -lc e,i
El proceso de grabación predeterminado monitorea los cambios de audio en tiempo real y los graba en un archivo llamado Producer.log. Sin embargo, se generan muchos registros, lo que rápidamente hace que el archivo de registro sea enorme y puede causar interrupciones inesperadas en el proceso de grabación. Puede usar el parámetro -daw para desactivar la monitorización de audio y luego usar lc e,i para especificar que solo se registrarán errores e información. Después de hacer esto, el proceso de grabación se vuelve más estable.
Siempre que agreguemos la tarea de ejecutar el archivo shixian.bat diariamente en el plan, obtendremos un archivo rm con los mismos atributos y nombre de archivo todos los días. Todos los días se generará aquí un archivo llamado 20060321.rm con el atributo 2006-03-21. Parece un bocado, y lo peor es que no facilita el trabajo al administrador, que tiene que abrir el servidor y cambiarle el nombre todos los días. E incluso si tiene la suerte de contratar a un administrador diligente (a quien no le importa hacer cosas tan repetitivas todos los días), todavía no puede cambiar el atributo de la fecha que se muestra en el archivo, que se decidió durante este proceso de grabación. . a menos que…….
2: cree una tarea para modificar el archivo de parámetros de codificación
El principio es simple: actualice los campos xml relacionados con la fecha en el archivo de parámetros de codificación todos los días. En este caso, son los atributos del archivo los que muestran la fecha y el nombre del archivo. Aquí está el código de secuencia de comandos utilizado para actualizar el campo de fecha:
dimregOR
set regOR=new regexp 'Crear un objeto de expresión regular
regOR.ignorecase=True 'Ignorar mayúsculas y minúsculas
regOR.global=True ' La búsqueda se aplica a toda la cadena
regOR.pattern=^([0-9]{1})$ ' Crea un patrón de búsqueda como una única expresión numérica
atenuar mi tiempo
mytime=date 'Utiliza la función de fecha para llegar a la fecha del sistema y asignarla a mydate
yy=año(mytime) 'Extrae el año de la fecha del sistema
mm=mes(mihora) 'Extrae el mes de la fecha del sistema
dd=day(mytime) 'Extrae la fecha de la fecha del sistema
si regOR.test(mm) entonces 'Comprueba si el mes es un número impar (enero a septiembre)
mm=regOR.replace(mm,0$1) ' Si es así, agregue 0 antes del mes para que sean dos dígitos
terminar si
si regOR.test(dd) entonces 'Comprueba si la fecha es un número impar (del uno al nueve)
dd=regOR.replace(dd,0$1) ' Si es así, agregue 0 antes de la fecha para que sean dos dígitos
terminar si
mytime=yy & - & mm & - & dd ' Combina el año, mes y día en la forma aa-mm-dd
dest=aa & mm & dd ' Combina el año, mes y día en la forma aammdd
patrón1=(.*[^0-9])([0-9]{4}/-[0-9]{2}/-[0-9]{2})([^0-9]. *)
'Establece la variable de patrón patrón1 en %d%d%d %d- %d %d -%d %d
patrón2=(.*[^0-9])([0-9]{8})([^0-9].*) ' Establece la variable de patrón patrón2 en 8 números consecutivos
regOR.pattern=pattern1 'Crear patrón de búsqueda como patrón1
cadena tenue
Set fso = CreateObject(Scripting.FileSystemObject) 'Crear un objeto de archivo del sistema
Set f = fso.CreateTextFile(d:/shixian/temp.txt, True) ' Crea un nuevo archivo de texto llamado temp
Set fr = fso.GetFile(d:/shixian/shixian.rpjf) ' Obtiene el archivo de parámetros de codificación shixian.rpjf
Set ts = fr.OpenAsTextStream(1,-2) 'Abre el archivo de parámetros como texto de solo lectura
hacer hasta ts.AtEndOfStream 'Crea un bucle hasta que se lea el archivo de parámetros
tempstring=ts.readline 'Leer archivo de parámetros en unidades de línea
si regOR.test(tempstring) entonces 'Buscar un campo de fecha en el parámetro de cambio de línea
tempstring=regOR.replace(tempstring,$1 & mytime & $3) 'Si existe, actualícelo
terminar si
regOR.pattern=pattern2 'Crear patrón de búsqueda como patrón2
si regOR.test(tempstring) entonces 'Buscar un campo de fecha en el parámetro de cambio de línea
tempstring=regOR.replace(tempstring,$1 & dest & $3) 'Si existe, actualice
terminar si
regOR.pattern=pattern1 'Reestablece el patrón de búsqueda como patrón1
f.writeline(tempstring) 'Escribe los datos actualizados en el archivo temp.txt
bucle
ts.close 'Lo siguiente es cerrar y cerrar sesión en cada objeto
f.cerrar
establecer regOR = nada
conjuntos = nada
establecer fr=nada
establecer f = nada
establecer fso = nada
Lo que hay que explicar es por qué se añade 0 antes de meses y días de un solo dígito. Es más fácil de explicar con una analogía: si no se agrega 0, entonces, para un archivo llamado 2006111.rm, ¿se refiere al 11 de enero de 2006 o al 1 de noviembre de 2006? Después de agregar 0, se convierte en 20060111.rm. De un vistazo queda claro que es el primero.
La función específica del código de script anterior es importar los datos del archivo de parámetros a un archivo de texto temporal en unidades de comportamiento, monitorear los campos xml relacionados con el tiempo en tiempo real y actualizarlos, y finalmente generar un archivo temp.txt. Después de eso, todo lo que tenemos que hacer es llamar al script con un archivo por lotes, eliminar el archivo de parámetros anterior y finalmente cambiar el nombre de temp.txt al archivo de parámetros.
Este es el código en el archivo por lotes update.bat:
@eco apagado
d:/shixian/update.vbs
si existe d:/shixian/shixian.rpjf del d:/shixian/shixian.rpjf
si existe d:/shixian/temp.txt renombrar d:/shixian/temp.txt shixian.rpjf
Como en la primera sección, aún necesita agregar el archivo por lotes update.bat al plan y las tareas para que pueda iniciarse regularmente todos los días.
3: crear tareas de transmisión automática
Para garantizar la estabilidad, el servidor de codificación y el servidor del sitio web generalmente están separados, lo que requiere que transfiramos los archivos de video grabados al servidor del sitio web todos los días. El comando ftp en el archivo por lotes puede implementar perfectamente esta función.
El siguiente es el código en el proceso por lotes transfer.bat:
@eco apagado
ftp -s:medios.txt
si existe d:/shixian/shixian20060321.rm del d:/shixian/shixian20060321.rm
Teniendo en cuenta el asombroso precio de los discos duros SCSI, no es necesario que el espacio en el disco duro del servidor de codificación sea demasiado grande. La función de la última línea es eliminar los archivos de video en el servidor de codificación para ahorrar espacio. Media.txt es un archivo de parámetros ftp que registra el nombre, el nombre de usuario, la contraseña y las operaciones relacionadas del servidor de inicio de sesión ftp. El formulario específico es el siguiente:
abrir/nombre del servidor o dirección IP/
/ nombre de usuario/
/contraseña de usuario/
poner / nombre del archivo a transferir /
abandonar
Obviamente, hay muchas expresiones literales de fecha que deben actualizarse en los fragmentos de código anteriores. Por la misma razón, también necesitamos usar un script de actualización similar y el código específico no se repetirá.
4: Algunas sugerencias de mejora
1: La función de codificación también se puede realizar utilizando un reproductor multimedia.
2: En el script de actualización, el código utilizado para declarar y cancelar el registro de objetos tiene varias líneas, lo que se puede simplificar mucho si se utiliza perl. Porque Perl proporciona una serie de símbolos de operación para implementar las funciones de las expresiones regulares y, de hecho, Perl nació para procesar texto.
open(RPJF,<c:/code/10161.rpjf) o die(no se puede abrir debido a $!/n);
open(TEMP,>c:/code/temp.txt) o die(no se puede abrir debido a $!/n);
($seg,$min,$hora,$mday,$mon,$year,$wday,$yday,$isdst)=hora local();
$mdía=sprintf(%.2d,$mdía);
$mon=sprintf(%.2d,$mon+1);
$año+=1900;
$timerF=$año.$mon.$mdía;
$timerS=$año.-.$mon.-.$mdía;
mientras(<RPJF>){
morder();
$_=~s/(.*)([0-9]{8})(.*)/$1$timerF$3/;
$_=~s/(.*)([0-9]{4}/-[0-9]{2}/-[0-9]{2})(.*)/$1$temporizadorS$3/ ;
imprimir TEMP $_/n;
}
cerrar(RPJF);
cerrar(TEMP);
3: El uso de la asignación de disco puede hacer que la transferencia de archivos sea más conveniente, pero se deben considerar cuestiones de seguridad.