Use arquivos em lote e scripts VBS para realizar a gravação automática de vídeos de sites
Agora que as emissoras de TV possuem basicamente seus próprios portais, podemos aproveitar ao máximo as vantagens da Internet para ampliar a influência das emissoras de TV locais. Na verdade, a prática de colocar no site os principais programas diários das emissoras de TV locais tornou-se uma das etapas necessárias para o estabelecimento de um website de emissora de TV. Mas o problema que isso acarreta é que o processo de gravação manual exigido todos os dias trará grandes transtornos aos gestores. Com base nas tarefas agendadas do Windows, esse problema pode ser resolvido de forma eficaz integrando organicamente programas em lote e programas de script.
1: Crie uma tarefa de codificação
Usaremos um computador com placa de captura de vídeo para concluir o processo de codificação. Embora a codificação não seja o foco deste artigo, ainda é necessário explicá-la. O principal é usar o Helix Producer plus9 para criar um arquivo de parâmetros de codificação. Na verdade, é apenas um arquivo xml com o sufixo rpjf (Figura 1). Deve-se observar que as opções de entrada de áudio incluem entrada de linha e entrada de microfone, que precisam corresponder à linha de acesso real. Além disso, não há necessidade de selecionar a opção de codificação de vídeo de 2 passagens, selecioná-la não terá nenhum efeito, exceto exibir um; aviso; Além disso, como a maioria dos modos de acesso à rede atuais são dial-up e dsl, só é necessário gerar arquivos de vídeo com taxas de bits de 56k e 384k; por fim, o nome do arquivo de vídeo gravado é melhor identificado por data; por exemplo: 20060301.rm.
<?xml versão=1.0 codificação=UTF-8?>
<trabalho xmlns=http://ns.real.com/tools/job.1.0.1>
<enableTwoPass type=bool>falso</enableTwoPass>
<clipInfo>
<entrada>
<nome>Autor</nome>
<value type=string>ZSTV</value>
</entrada>
<entrada>
<name>Direitos autorais</name>
<value type=string>(c) ZSTV2006 </value>
</entrada>
<entrada>
<name>Palavras-chave</name>
<value type=string>ZSNews[21/03/2006]</value>
</entrada>
<entrada>
<nome>Título</nome>
<value type=string>ZSNews[21/03/2006]</value>
</entrada>
</clipInfo>
<entrada>
<captureInput>
<audioDeviceID type=string>Áudio integrado Intel(r)</audioDeviceID>
..................................................
Podemos criar um arquivo em lote chamado shixian.bat para chamar o arquivo de parâmetros mostrado acima.
produtor -jd:/shixian/shixian.rpjf -daw -lc e,i
O processo de gravação padrão monitora as alterações de áudio em tempo real e as grava em um arquivo chamado Producer.log. No entanto, muitos registros confusos são gerados, o que rapidamente torna o arquivo de log enorme e pode causar interrupções inesperadas no processo de gravação. Você pode usar o parâmetro -daw para desligar o monitoramento de áudio e, em seguida, usar lc e,i para especificar que apenas erros e informações serão registrados. Depois de fazer isso, o processo de gravação fica mais estável.
Contanto que adicionemos a tarefa de executar o arquivo shixian.bat diariamente no plano, obteremos um arquivo rm com os mesmos atributos e nome de arquivo todos os dias. Um arquivo chamado 20060321.rm com o atributo 2006-03-21 será gerado aqui todos os dias. Parece um bocado demais, e o pior é que não facilita o trabalho do administrador, pois ele tem que abrir o servidor e mudar seu nome todos os dias. E mesmo que ele tenha a sorte de contratar um administrador diligente (que não se importa em fazer coisas tão repetitivas todos os dias), ele ainda não poderá alterar o atributo da data exibida no arquivo, que foi decidido durante esse processo de gravação. . a menos que…….
2: Crie uma tarefa para modificar o arquivo de parâmetros de codificação
O princípio é simples: atualize os campos XML relacionados à data no arquivo de parâmetros de codificação todos os dias. Neste caso são os atributos do arquivo mostrando a data e o nome do arquivo. Aqui está o código do script usado para atualizar o campo de data:
dimregOR
set regOR=new regexp 'Cria um objeto de expressão regular
regOR.ignorecase=True ' Ignorar maiúsculas e minúsculas
regOR.global=True ' A pesquisa se aplica a toda a string
regOR.pattern=^([0-9]{1})$ ' Cria um padrão de pesquisa como uma única expressão numérica
escurecer meu horário
mytime=date ' Use a função date para chegar à data do sistema e atribuí-la a mydate
yy=year(mytime) 'Extrai o ano da data do sistema
mm=mês(mytime) 'Extrai o mês da data do sistema
dd=day(mytime) 'Extrai a data da data do sistema
if regOR.test(mm) then 'Verifica se o mês é um número ímpar (janeiro a setembro)
mm=regOR.replace(mm,0$1) ' Nesse caso, adicione 0 antes do mês para ter dois dígitos
terminar se
if regOR.test(dd) then 'Verifica se a data é um número ímpar (um a nove)
dd=regOR.replace(dd,0$1) ' Nesse caso, adicione 0 antes da data para ter dois dígitos
terminar se
mytime=yy & - & mm & - & dd ' Combine o ano, mês e dia na forma de yy-mm-dd
dest=yy & mm & dd ' Combine o ano, mês e dia na forma yymmdd
padrão1=(.*[^0-9])([0-9]{4}/-[0-9]{2}/-[0-9]{2})([^0-9]. *)
'Defina a variável padrão pattern1 para %d%d%d %d- %d %d -%d %d
pattern2=(.*[^0-9])([0-9]{8})([^0-9].*) ' Define a variável padrão pattern2 para 8 números consecutivos
regOR.pattern=pattern1 ' Cria padrão de pesquisa como padrão1
dimtempstring
Set fso = CreateObject(Scripting.FileSystemObject) 'Cria um objeto de arquivo do sistema
Set f = fso.CreateTextFile(d:/shixian/temp.txt, True) ' Cria um novo arquivo de texto chamado temp
Set fr = fso.GetFile(d:/shixian/shixian.rpjf) ' Obtém o arquivo de parâmetro de codificação shixian.rpjf
Set ts = fr.OpenAsTextStream(1,-2) 'Abre o arquivo de parâmetro como texto somente leitura
faça até ts.AtEndOfStream ' Cria um loop até que o arquivo de parâmetro seja lido
tempstring=ts.readline 'Lê o arquivo de parâmetros em unidades de linha
if regOR.test(tempstring) then 'Pesquise um campo de data no parâmetro de mudança de linha
tempstring=regOR.replace(tempstring,$1 & mytime & $3) 'Se existir, atualize-o
terminar se
regOR.pattern=pattern2 ' Cria padrão de pesquisa como padrão2
if regOR.test(tempstring) then 'Pesquise um campo de data no parâmetro de mudança de linha
tempstring=regOR.replace(tempstring,$1 & dest & $3) 'Se existir, atualize
terminar se
regOR.pattern=pattern1 ' Restabelece o padrão de pesquisa como padrão1
f.writeline(tempstring) 'Grava os dados atualizados no arquivo temp.txt
laço
ts.close 'O seguinte é fechar e desconectar cada objeto
f.fechar
definir regOR = nada
setts = nada
definir fr = nada
definir f = nada
definir fso = nada
O que precisa ser explicado é por que 0 é adicionado antes de meses e dias de um único dígito. É mais fácil explicar com uma analogia: se 0 não for adicionado, então, para um arquivo chamado 2006111.rm, ele se refere a 11 de janeiro de 2006 ou 1º de novembro de 2006? Depois de adicionar 0, torna-se 20060111.rm. À primeira vista, fica claro que é o primeiro.
A função específica do código de script acima é importar os dados do arquivo de parâmetros para um arquivo de texto temporário em unidades comportamentais, monitorar os campos xml relacionados ao tempo em tempo real e atualizá-los e, finalmente, gerar um arquivo temp.txt. Depois disso, tudo o que precisamos fazer é chamar o script com um arquivo em lote, excluir o arquivo de parâmetro antigo e, finalmente, renomear temp.txt para o arquivo de parâmetro.
Este é o código no arquivo em lote update.bat:
@eco desligado
d:/shixian/update.vbs
se existir d:/shixian/shixian.rpjf del d:/shixian/shixian.rpjf
se existir d:/shixian/temp.txt renomeie d:/shixian/temp.txt shixian.rpjf
Como na primeira seção, você ainda precisa adicionar o arquivo em lote update.bat ao plano e às tarefas para que ele possa ser iniciado regularmente todos os dias.
3: Crie tarefas de transmissão automática
Para garantir a estabilidade, o servidor de codificação e o servidor do site são normalmente separados, o que exige que transfiramos os arquivos de vídeo gravados para o servidor do site todos os dias. O comando ftp no arquivo em lote pode implementar perfeitamente esta função.
A seguir está o código no processo em lote transfer.bat:
@eco desligado
ftp -s:media.txt
se existir d:/shixian/shixian20060321.rm del d:/shixian/shixian20060321.rm
Considerando o preço surpreendente dos discos rígidos SCSI, o espaço no disco rígido do servidor de codificação não precisa ser muito grande. A função da última linha é excluir os arquivos de vídeo no servidor de codificação para economizar espaço. Media.txt é um arquivo de parâmetro FTP, que registra o nome, nome de usuário, senha e operações relacionadas do servidor de login FTP.
aberto/nome do servidor ou endereço IP/
/ nome de usuário/
/senha do usuário/
colocar / nome do arquivo a ser transferido /
desistir
Obviamente, existem muitas expressões literais de data que precisam ser atualizadas nos trechos de código acima. Pelo mesmo motivo, também precisamos usar um script de atualização semelhante, e o código específico não será repetido.
4: Algumas sugestões para melhorias
1: A função de codificação também pode ser realizada usando o media player.
2: No script de atualização, o código usado para declarar e cancelar o registro de objetos possui diversas linhas, o que pode ser bastante simplificado se usar perl. Porque o perl fornece uma série de símbolos de operação para implementar as funções de expressões regulares e, de fato, o perl nasceu para processar texto.
open(RPJF,<c:/code/10161.rpjf) ou die(não é possível abrir por causa de $!/n);
open(TEMP,>c:/code/temp.txt) ou die(não é possível abrir por causa de $!/n);
($seg,$min,$hora,$mdia,$mon,$ano,$wdia,$ydia,$isdst)=hora local();
$mdia=sprintf(%.2d,$mdia);
$mon=sprintf(%.2d,$mon+1);
$ano+=1900;
$timerF=$ano.$segunda.$mdia;
$timerS=$ano.-.$segunda.-.$mdia;
enquanto(<RPJF>){
mastigar();
$_=~s/(.*)([0-9]{8})(.*)/$1$timerF$3/;
$_=~s/(.*)([0-9]{4}/-[0-9]{2}/-[0-9]{2})(.*)/$1$timerS$3/ ;
imprimir TEMP $_/n;
}
fechar(RPJF);
fechar(TEMP);
3: O uso do mapeamento de disco pode tornar a transferência de arquivos mais conveniente, mas as questões de segurança precisam ser consideradas.