배치 파일 및 VBS 스크립트를 사용하여 웹 사이트 비디오 자동 녹화 실현
이제 TV 방송국에는 기본적으로 자체 포털이 있으므로 인터넷의 장점을 최대한 활용하여 지역 TV 방송국의 영향력을 확대할 수 있습니다. 실제로, 지역 TV 방송국의 일일 주력 프로그램을 웹 사이트에 게시하는 관행은 TV 방송국 웹 사이트 구축에 필요한 단계 중 하나가 되었습니다. 하지만 그에 따른 문제는 매일매일 필요한 수동녹화 과정이 관리자에게 큰 불편을 안겨준다는 점이다. Windows의 예약된 작업을 기반으로 배치 프로그램과 스크립트 프로그램을 유기적으로 통합함으로써 이 문제를 효과적으로 해결할 수 있습니다.
1: 코딩 작업 만들기
인코딩 프로세스를 완료하기 위해 비디오 캡처 카드가 있는 컴퓨터를 사용할 것입니다. 코딩이 이 글의 초점은 아니지만, 코딩에 대한 설명은 여전히 필요합니다. 가장 중요한 것은 helix producer plus9를 사용하여 코딩 매개변수 파일을 생성하는 것입니다. 실제로 이는 rpjf 접미사가 붙은 XML 파일입니다(그림 1). 오디오 입력 옵션에는 실제 액세스 라인과 일치해야 하는 라인 입력 및 마이크 입력이 포함되어 있습니다. 또한 2패스 비디오 인코딩 옵션을 선택할 필요가 없습니다. 이를 선택하면 표시되는 것 외에는 효과가 없습니다. 경고. 또한 현재 네트워크 액세스 모드는 대부분 전화 접속 및 dsl이므로 56k 및 384k 비트 전송률의 비디오 파일만 생성하면 됩니다. 마지막으로 녹화된 비디오 파일의 이름은 날짜로 가장 잘 식별됩니다. 예를 들어: 20060301.rm.
<?xml 버전=1.0 인코딩=UTF-8?>
<작업 xmlns=http://ns.real.com/tools/job.1.0.1>
<enableTwoPass type=bool>false</enableTwoPass>
<클립정보>
<항목>
<name>저자</name>
<value type=string>ZSTV</value>
</entry>
<항목>
<name>저작권</name>
<값 유형=문자열>(c) ZSTV2006 </값>
</entry>
<항목>
<name>키워드</name>
<value type=string>ZSNews[2006-03-21]</value>
</entry>
<항목>
<이름>제목</이름>
<value type=string>ZSNews[2006-03-21]</value>
</entry>
</clipInfo>
<입력>
<캡처입력>
<audioDeviceID type=string>Intel(r) 통합 오디오</audioDeviceID>
.................................................
위에 표시된 매개변수 파일을 호출하기 위해 shixian.bat라는 배치 파일을 생성할 수 있습니다.
생산자 -jd:/shixian/shixian.rpjf -daw -lc e,i
기본 녹음 프로세스는 오디오 변경 사항을 실시간으로 모니터링하여 producer.log라는 파일에 녹음합니다. 그러나 많은 양의 wanging 레코드가 생성되어 로그 파일이 빠르게 커지고 녹음 프로세스에 예상치 못한 중단이 발생할 수 있습니다. -daw 매개변수를 사용하여 오디오 모니터링을 끈 다음 lc e,i를 사용하여 오류와 정보만 기록되도록 지정할 수 있습니다. 이렇게 하면 녹음 과정이 더욱 안정됩니다.
계획에 매일 shixian.bat 파일을 실행하는 작업을 추가하는 한 매일 동일한 파일 속성과 이름을 가진 rm 파일을 얻게 됩니다. 2006-03-21 속성을 가진 20060321.rm이라는 파일이 여기에서 매일 생성됩니다. 입이 쩍 벌어질 것 같고, 더 나쁜 것은 서버를 열고 이름을 매일 바꿔야 하기 때문에 관리자의 업무를 더 쉽게 만들지 못한다는 것입니다. 그리고 운이 좋게도 (매일 이런 반복적인 일을 마다하지 않는) 부지런한 관리자를 고용하더라도, 그는 여전히 이 녹음 과정에서 결정된 파일에 표시되는 날짜의 속성을 변경할 수 없습니다. . 하지 않는 한…….
2: 코딩 매개변수 파일을 수정하는 작업을 생성합니다.
원칙은 간단합니다. 인코딩 매개변수 파일의 날짜 관련 xml 필드를 매일 업데이트하는 것입니다. 이 경우 날짜와 파일 이름을 표시하는 파일 속성입니다. 날짜 필드를 업데이트하는 데 사용되는 스크립트 코드는 다음과 같습니다.
희미한 REGOR
set regOR=new regexp '정규식 객체 생성
regOR.ignorecase=True ' 대소문자 무시
regOR.global=True ' 검색은 전체 문자열에 적용됩니다.
regOR.pattern=^([0-9]{1})$ ' 단일 숫자 표현식으로 검색 패턴을 생성합니다.
어두워진 시간
mytime=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을 추가하여 두 자리로 만듭니다.
종료하면
if regOR.test(dd) then ' 날짜가 홀수(1~9)인지 확인합니다.
dd=regOR.replace(dd,0$1) ' 그렇다면 날짜 앞에 0을 추가하여 두 자리로 만듭니다.
종료하면
mytime=yy & - & mm & - & dd ' 연도, 월, 일을 yy-mm-dd 형식으로 결합합니다.
dest=yy & mm & dd ' 연도, 월, 일을 yymmdd 형식으로 결합합니다.
패턴1=(.*[^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 ' 패턴1로 검색 패턴을 생성합니다.
희미한 문자열
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) '매개변수 파일을 읽기 전용 텍스트로 엽니다.
ts.AtEndOfStream ' 매개변수 파일을 읽을 때까지 루프를 생성합니다.
tempstring=ts.readline '라인 단위로 매개변수 파일 읽기
if regOR.test(tempstring) then '라인 변경 매개변수에서 날짜 필드 검색
tempstring=regOR.replace(tempstring,$1 & mytime & $3) '존재하는 경우 업데이트하세요.
종료하면
regOR.pattern=pattern2 ' 패턴2로 검색 패턴을 생성합니다.
if regOR.test(tempstring) then '라인 변경 매개변수에서 날짜 필드 검색
tempstring=regOR.replace(tempstring,$1 & dest & $3) '존재하는 경우 업데이트
종료하면
regOR.pattern=pattern1 ' 검색 패턴을 패턴1로 다시 설정합니다.
f.writeline(tempstring) '업데이트된 데이터를 temp.txt 파일에 씁니다.
고리
ts.close '다음은 각 개체를 닫고 로그아웃하는 것입니다.
f.닫기
regOR=아무것도 설정하지 않음
설정=아무것도 없음
fr=아무것도 설정하지 않음
f=아무것도 설정하지 않음
fso=아무것도 설정하지 않음
설명해야 할 것은 한 자리 월과 일 앞에 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 del d:/shixian/shixian.rpjf
존재하는 경우 d:/shixian/temp.txt d:/shixian/temp.txt shixian.rpjf의 이름을 바꿉니다.
첫 번째 섹션에서와 마찬가지로 매일 정기적으로 시작할 수 있도록 계획 및 작업에 update.bat 배치 파일을 추가해야 합니다.
3: 자동 전송 작업 생성
안정성을 보장하기 위해 일반적으로 인코딩 서버와 웹사이트 서버가 분리되어 있으므로 녹화된 비디오 파일을 매일 웹사이트 서버로 전송해야 합니다. 배치 파일의 ftp 명령은 이 기능을 완벽하게 구현할 수 있습니다.
다음은 transfer.bat 일괄 프로세스의 코드입니다.
@에코 꺼짐
ftp -s:media.txt
존재하는 경우 d:/shixian/shixian20060321.rm del d:/shixian/shixian20060321.rm
SCSI 하드 드라이브의 놀라운 가격을 고려하면 인코딩 서버의 하드 디스크 공간이 너무 클 필요는 없습니다. 마지막 줄의 기능은 공간을 절약하기 위해 인코딩 서버의 비디오 파일을 삭제하는 것입니다. Media.txt는 FTP 로그인 서버의 이름, 사용자 이름, 비밀번호 및 관련 작업을 기록하는 FTP 매개변수 파일입니다.
열기/서버 이름 또는 IP 주소/
/ 사용자 이름/
/사용자 비밀번호/
넣어 / 전송할 파일 이름 /
그만두다
분명히 위의 코드 조각에는 업데이트해야 할 날짜 리터럴 표현식이 많이 있습니다. 같은 이유로 유사한 업데이트 스크립트도 사용해야 하며 특정 코드는 반복되지 않습니다.
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;
동안(<RPJF>){
씹어먹다();
$_=~s/(.*)([0-9]{8})(.*)/$1$timerF$3/;
$_=~s/(.*)([0-9]{4}/-[0-9]{2}/-[0-9]{2})(.*)/$1$timerS$3/ ;
TEMP $_/n을 인쇄합니다;
}
닫기(RPJF);
닫기(온도);
3: 디스크 매핑을 사용하면 파일 전송이 더 편리해지지만 보안 문제를 고려해야 합니다.