Gunakan file batch dan skrip vbs untuk mewujudkan perekaman otomatis video situs web
Sekarang stasiun TV pada dasarnya memiliki portalnya sendiri, kita dapat memanfaatkan sepenuhnya keunggulan Internet untuk memperluas pengaruh stasiun TV lokal. Faktanya, praktik menggantungkan program unggulan harian stasiun TV lokal di website telah menjadi salah satu langkah penting dalam membangun website stasiun TV. Namun permasalahan yang timbul adalah proses pencatatan manual yang diperlukan setiap hari akan menimbulkan ketidaknyamanan yang besar bagi pengelola. Berdasarkan tugas terjadwal Windows, masalah ini dapat diselesaikan secara efektif dengan mengintegrasikan program batch dan program skrip secara organik.
1: Buat tugas pengkodean
Kami akan menggunakan komputer dengan kartu pengambilan video untuk menyelesaikan proses pengkodean. Meskipun coding bukan fokus artikel ini, namun tetap perlu dijelaskan. Hal utama adalah menggunakan helix producer plus9 untuk membuat file parameter pengkodean. Faktanya, ini hanyalah file xml dengan akhiran rpjf (Gambar 1). Perlu dicatat bahwa opsi input audio mencakup input jalur dan input mikrofon, yang harus cocok dengan jalur akses sebenarnya, selain itu, tidak perlu memilih opsi pengkodean video 2 pass, memilihnya tidak akan berpengaruh kecuali menampilkan a peringatan. ; Selain itu, karena sebagian besar mode akses jaringan saat ini adalah dial-up dan dsl, yang diperlukan hanyalah menghasilkan file video dengan kecepatan bit 56k dan 384k, dan terakhir, nama file video yang direkam paling baik diidentifikasi berdasarkan tanggal. Misalnya: 20060301.rm.
<?xml versi=1.0 pengkodean=UTF-8?>
<pekerjaan xmlns=http://ns.real.com/tools/job.1.0.1>
<enableTwoPass type=bool>salah</enableTwoPass>
<klipInfo>
<entri>
<nama>Penulis</nama>
<value type=string>ZSTV</nilai>
</entri>
<entri>
<nama>Hak Cipta</nama>
<nilai tipe=string>(c) ZSTV2006 </nilai>
</entri>
<entri>
<nama>Kata Kunci</nama>
<value type=string>ZSNews[21-03-2006]</value>
</entri>
<entri>
<nama>Judul</nama>
<value type=string>ZSNews[21-03-2006]</value>
</entri>
</klipInfo>
<masukan>
<captureInput>
<audioDeviceID type=string>Audio Terintegrasi Intel(r)</audioDeviceID>
.................................................
Kita dapat membuat file batch bernama shixian.bat untuk memanggil file parameter yang ditunjukkan di atas. Detail internalnya adalah sebagai berikut:
produser -jd:/shixian/shixian.rpjf -daw -lc e,i
Proses perekaman default memonitor perubahan audio secara real-time dan mencatatnya ke file bernama producer.log. Namun, banyak catatan aneh yang dihasilkan, yang dengan cepat membuat file log menjadi besar dan dapat menyebabkan gangguan yang tidak terduga dalam proses perekaman dapat menggunakan parameter -daw untuk mematikan pemantauan audio, lalu menggunakan lc e,i untuk menentukan bahwa hanya kesalahan dan informasi yang akan dicatat. Setelah melakukan ini, proses perekaman menjadi lebih stabil.
Selama kita menambahkan tugas mengeksekusi file shixian.bat setiap hari dalam rencana, kita akan mendapatkan file rm dengan atribut dan nama file yang sama setiap hari. File bernama 20060321.rm dengan atribut 21-03-2006 akan dibuat di sini setiap hari. Kedengarannya seperti mulut penuh, dan yang lebih parahnya tidak membuat pekerjaan administrator menjadi lebih mudah, karena dia harus membuka server dan mengganti namanya setiap hari. Dan meskipun dia cukup beruntung untuk mempekerjakan administrator yang rajin (yang tidak keberatan melakukan hal berulang seperti itu setiap hari), dia tetap tidak dapat mengubah atribut tanggal yang ditampilkan dalam file, yang telah diputuskan selama proses perekaman ini. . kecuali…….
2: Buat tugas untuk mengubah file parameter pengkodean
Prinsipnya sederhana: perbarui bidang xml terkait tanggal di file parameter pengkodean setiap hari. Dalam hal ini atribut file menunjukkan tanggal dan nama file. Berikut adalah kode skrip yang digunakan untuk memperbarui kolom tanggal:
redupOR
set regOR=regexp baru 'Buat objek ekspresi reguler
regOR.ignorecase=Benar ' Abaikan kasus
regOR.global=True ' Pencarian berlaku untuk seluruh string
regOR.pattern=^([0-9]{1})$ ' Buat pola pencarian sebagai ekspresi numerik tunggal
redupkan waktuku
mytime=date ' Gunakan fungsi tanggal untuk mencapai tanggal sistem dan tetapkan ke tanggal saya
yy=year(mytime) 'Ekstrak tahun dari tanggal sistem
mm=month(mytime) 'Ekstrak bulan dari tanggal sistem
dd=day(mytime) 'Ekstrak tanggal dari tanggal sistem
jika regOR.test(mm) maka ' Periksa apakah bulan tersebut ganjil (Januari hingga September)
mm=regOR.replace(mm,0$1) ' Jika ya, tambahkan 0 sebelum bulan sehingga menjadi dua digit
berakhir jika
if regOR.test(dd) lalu ' Periksa apakah tanggalnya ganjil (satu banding sembilan)
dd=regOR.replace(dd,0$1) ' Jika ya, tambahkan 0 sebelum tanggal sehingga menjadi dua digit
berakhir jika
mytime=yy & - & mm & - & dd ' Gabungkan tahun, bulan dan hari ke dalam bentuk yy-mm-dd
dest=yy & mm & dd ' Gabungkan tahun, bulan dan hari ke dalam bentuk yymmdd
pola1=(.*[^0-9])([0-9]{4}/-[0-9]{2}/-[0-9]{2})([^0-9]. *)
'Setel variabel pola pattern1 ke %d%d%d %d- %d %d -%d %d
pattern2=(.*[^0-9])([0-9]{8})([^0-9].*) ' Tetapkan variabel pola pattern2 menjadi 8 angka berurutan
regOR.pattern=pattern1 ' Buat pola pencarian sebagai pola1
dimtempstring
Setel fso = CreateObject(Scripting.FileSystemObject) 'Buat objek file sistem
Set f = fso.CreateTextFile(d:/shixian/temp.txt, True) ' Buat file teks baru bernama temp
Set fr = fso.GetFile(d:/shixian/shixian.rpjf) ' Dapatkan file parameter pengkodean shixian.rpjf
Setel ts = fr.OpenAsTextStream(1,-2) 'Buka file parameter sebagai teks hanya-baca
lakukan sampai ts.AtEndOfStream ' Buat loop sampai file parameter dibaca
tempstring=ts.readline 'Baca file parameter dalam satuan baris
if regOR.test(tempstring) lalu 'Cari bidang tanggal di parameter perubahan baris
tempstring=regOR.replace(tempstring,$1 & mytime & $3) 'Jika ada, perbarui
berakhir jika
regOR.pattern=pattern2 ' Buat pola pencarian sebagai pola2
if regOR.test(tempstring) lalu 'Cari bidang tanggal di parameter perubahan baris
tempstring=regOR.replace(tempstring,$1 & dest & $3) 'Jika ada, perbarui
berakhir jika
regOR.pattern=pattern1 ' Tetapkan kembali pola pencarian sebagai pola1
f.writeline(tempstring) 'Tulis data yang diperbarui ke file temp.txt
lingkaran
ts.close 'Berikut ini adalah untuk menutup dan logout setiap objek
f.tutup
atur regOR=tidak ada
set=tidak ada
atur fr=tidak ada
atur f=tidak ada
atur fso=tidak ada
Yang perlu dijelaskan adalah mengapa 0 ditambahkan sebelum satu digit bulan dan hari. Lebih mudah dijelaskan dengan analogi: Jika 0 tidak ditambahkan, maka untuk file bernama 2006111.rm mengacu pada 11 Januari 2006 atau 1 November 2006? Setelah ditambah 0 menjadi 20060111.rm Sekilas terlihat jelas bahwa itu adalah yang pertama.
Fungsi spesifik dari kode skrip di atas adalah untuk mengimpor data dalam file parameter ke dalam file teks sementara di unit perilaku, memantau bidang xml terkait waktu secara real time dan memperbaruinya, dan terakhir menghasilkan file temp.txt. Setelah itu, yang harus kita lakukan hanyalah memanggil skrip dengan file batch, menghapus file parameter lama, dan terakhir mengganti nama temp.txt menjadi file parameter.
Ini adalah kode dalam file batch update.bat:
@gema mati
d:/shixian/update.vbs
jika ada d:/shixian/shixian.rpjf del d:/shixian/shixian.rpjf
jika ada d:/shixian/temp.txt ganti nama d:/shixian/temp.txt shixian.rpjf
Seperti pada bagian pertama, Anda masih perlu menambahkan file batch update.bat ke rencana dan tugas agar dapat dimulai secara rutin setiap hari.
3: Buat tugas transmisi otomatis
Untuk menjamin stabilitas, server pengkodean dan server situs web biasanya dipisahkan, yang mengharuskan kami mentransfer file rekaman video ke server situs web setiap hari. Perintah ftp dalam file batch dapat mengimplementasikan fungsi ini dengan sempurna.
Berikut ini adalah kode pada proses batch transfer.bat:
@gema mati
ftp -s:media.txt
jika ada d:/shixian/shixian20060321.rm del d:/shixian/shixian20060321.rm
Mengingat harga hard drive SCSI yang mencengangkan, ruang hard disk server pengkodean tidak perlu terlalu besar. Fungsi baris terakhir adalah untuk menghapus file video di server pengkodean untuk menghemat ruang. Media.txt adalah file parameter ftp, yang mencatat nama, nama pengguna, kata sandi, dan operasi terkait dari server login ftp. Bentuk spesifiknya adalah sebagai berikut:
buka/nama server atau alamat IP/
/ nama belakang/
/kata sandi pengguna/
masukkan / nama file yang akan ditransfer /
berhenti
Jelasnya, ada banyak ekspresi literal tanggal yang perlu diperbarui dalam cuplikan kode di atas. Untuk alasan yang sama, kita juga perlu menggunakan skrip pembaruan serupa, dan kode spesifik tidak akan terulang.
4: Beberapa saran untuk perbaikan
1: Fungsi pengkodean juga dapat diwujudkan menggunakan pemutar media.
2: Dalam skrip pembaruan, kode yang digunakan untuk mendeklarasikan dan membatalkan pendaftaran objek memiliki beberapa baris, yang dapat disederhanakan jika menggunakan Perl. Karena Perl menyediakan rangkaian simbol operasi untuk mengimplementasikan fungsi ekspresi reguler, dan sebenarnya Perl lahir untuk mengolah teks.
open(RPJF,<c:/code/10161.rpjf) or die(tidak dapat dibuka karena $!/n);
open(TEMP,>c:/code/temp.txt) or die(tidak dapat dibuka karena $!/n);
($dtk,$mnt,$jam,$mhari,$sen,$tahun,$whari,$yhari,$isdst)=waktu lokal();
$mhari=sprintf(%.2d,$mhari);
$mon=sprintf(%.2d,$mon+1);
$tahun+=1900;
$timerF=$tahun.$sen.$hari;
$timerS=$tahun.-.$sen.-.$hari;
sementara(<RPJF>){
chomp();
$_=~s/(.*)([0-9]{8})(.*)/$1$timerF$3/;
$_=~s/(.*)([0-9]{4}/-[0-9]{2}/-[0-9]{2})(.*)/$1$timerS$3/ ;
cetak TEMP $_/n;
}
tutup (RPJF);
tutup(TEMP);
3: Menggunakan pemetaan disk dapat membuat transfer file lebih nyaman, namun masalah keamanan perlu dipertimbangkan.