Используйте пакетные файлы и сценарии VBS для автоматической записи видео с веб-сайта.
Теперь, когда телеканалы в основном имеют свои собственные порталы, мы можем в полной мере использовать преимущества Интернета для расширения влияния местных телеканалов. Фактически, практика размещения на веб-сайте ежедневных ведущих программ местных телеканалов стала одним из необходимых шагов в создании веб-сайта телестанции. Но проблема в том, что ежедневный ручной процесс записи принесет менеджерам большие неудобства. На основе запланированных задач Windows эту проблему можно эффективно решить путем органической интеграции пакетных программ и программ-скриптов.
1. Создайте задачу кодирования.
Для завершения процесса кодирования мы будем использовать компьютер с картой видеозахвата. Хотя программирование не является целью этой статьи, его все же необходимо объяснить. Главное — использовать Helix Producer Plus9 для создания файла параметров кодирования. По сути, это просто XML-файл с суффиксом rpjf (рис. 1). Следует отметить, что параметры аудиовхода включают линейный вход и вход микрофона, которые должны соответствовать фактической линии доступа, кроме того, нет необходимости выбирать опцию двухпроходного кодирования видео, ее выбор не будет иметь никакого эффекта, кроме отображения значка; предупреждение ; Кроме того, поскольку большинство текущих режимов доступа к сети — это коммутируемый доступ и dsl, необходимо создавать только видеофайлы с битрейтом 56k и 384k, наконец, имя записанного видеофайла лучше всего определять по дате. например: 20060301.рм.
<?xml версия=1.0 кодировка=UTF-8?>
<job xmlns=http://ns.real.com/tools/job.1.0.1>
<enableTwoPass type=bool>false</enableTwoPass>
<clipInfo>
<запись>
<имя>Автор</name>
<value type=string>ZSTV</value>
</entry>
<запись>
<name>Авторские права</name>
<value type=string>(c) ZSTV2006 </value>
</entry>
<запись>
<name>Ключевые слова</name>
<value type=string>ZSNews[21 марта 2006]</value>
</entry>
<запись>
<name>Название</name>
<value type=string>ZSNews[21 марта 2006]</value>
</entry>
</clipInfo>
<вход>
<captureInput>
<audioDeviceID type=string>Встроенное аудио Intel(r)</audioDeviceID>
..................................................
Мы можем создать пакетный файл с именем shixian.bat для вызова файла параметров, показанного выше. Внутренние детали следующие:
продюсер -jd:/shixian/shixian.rpjf -daw -lc e,i
Процесс записи по умолчанию отслеживает изменения звука в реальном времени и записывает их в файл с именем Producer.log. Однако создается много ненужных записей, что быстро увеличивает размер файла журнала и может привести к неожиданным прерываниям процесса записи. можно использовать параметр -daw, чтобы отключить мониторинг звука, а затем использовать lc e,i, чтобы указать, что будут регистрироваться только ошибки и информация. После этого процесс записи становится более стабильным.
Если мы добавим в план задачу ежедневного выполнения файла shixian.bat, мы будем получать файл rm с теми же атрибутами и именем файла каждый день. Здесь каждый день будет создаваться файл с именем 20060321.rm с атрибутом 2006-03-21. Звучит как пустяк, и что еще хуже, это не облегчает работу администратора, потому что ему приходится каждый день открывать сервер и менять его имя. И даже если ему посчастливится нанять добросовестного администратора (который не прочь делать такие повторяющиеся вещи каждый день), он все равно не сможет изменить атрибут даты, отображаемый в файле, что было решено в процессе этой записи. . пока не…….
2. Создайте задачу для изменения файла параметров кодирования.
Принцип прост: каждый день обновляйте XML-поля, связанные с датой, в файле параметров кодирования. В данном случае это атрибуты файла, показывающие дату и имя файла. Вот код сценария, используемый для обновления поля даты:
димрегОР
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 ' Проверяем, является ли месяц нечетным числом (с января по сентябрь)
mm=regOR.replace(mm,0$1) ' Если да, добавьте 0 перед месяцем, чтобы он стал двузначным.
конец, если
if regOR.test(dd) then ' Проверяем, является ли дата нечетным числом (от одного до девяти)
dd=regOR.replace(dd,0$1) ' Если да, добавьте 0 перед датой, чтобы она стала двухзначной.
конец, если
mytime=yy & - & mm & - & dd ' Объединяем год, месяц и день в формате гг-мм-дд.
dest=yy & mm & dd 'Объединяем год, месяц и день в формате ггммдд.
шаблон1=(.*[^0-9])([0-9]{4}/-[0-9]{2}/-[0-9]{2})([^0-9]. *)
'Установим переменную шаблона Pattern1 в %d%d%d %d- %d %d -%d %d
шаблон2=(.*[^0-9])([0-9]{8})([^0-9].*) ' Устанавливаем переменную шаблона шаблон2 равным 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) 'Открыть файл параметров как текст, доступный только для чтения.
do Until 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 'Далее необходимо закрыть и выйти из системы каждого объекта.
е.закрыть
установить regOR=ничего
настройки=ничего
установить fr=ничего
установить f=ничего
установить fso=ничего
Необходимо объяснить, почему 0 добавляется перед однозначными месяцами и днями. Проще объяснить аналогией: Если не добавлен 0, то для файла с именем 2006111.rm он относится к 11 января 2006 года или к 1 ноября 2006 года? После добавления 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-адрес/
/ имя пользователя/
/пароль пользователя/
put /имя файла для передачи/
покидать
Очевидно, что в приведенных выше фрагментах кода необходимо обновить множество литеральных выражений даты. По этой же причине нам также необходимо использовать аналогичный скрипт обновления, и конкретный код не будет повторяться.
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=$год.$мес.$мдень;
$timerS=$год.-.$пн.-.$мдень;
пока(<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. Использование сопоставления дисков может сделать передачу файлов более удобной, но необходимо учитывать вопросы безопасности.