استخدم الملفات الدفعية والبرامج النصية vbs لتحقيق التسجيل التلقائي لمقاطع فيديو موقع الويب
والآن بعد أن أصبح لدى محطات التلفزيون بواباتها الخاصة، يمكننا الاستفادة الكاملة من مزايا الإنترنت لتوسيع تأثير محطات التلفزيون المحلية. في الواقع، أصبحت ممارسة تعليق البرامج اليومية الرئيسية لمحطات التلفزيون المحلية على الموقع الإلكتروني إحدى الخطوات الضرورية لإنشاء موقع ويب لمحطة تلفزيونية. لكن المشكلة التي تصاحب ذلك هي أن عملية التسجيل اليدوية المطلوبة كل يوم ستسبب إزعاجًا كبيرًا للمديرين. على أساس المهام المجدولة لنظام التشغيل Windows، يمكن حل هذه المشكلة بشكل فعال من خلال التكامل العضوي بين البرامج المجمعة وبرامج البرامج النصية.
1: إنشاء مهمة الترميز
سوف نستخدم جهاز كمبيوتر مزودًا ببطاقة التقاط فيديو لإكمال عملية التشفير. على الرغم من أن البرمجة ليست محور هذه المقالة، إلا أنه لا يزال من الضروري شرحها. الشيء الرئيسي هو استخدام منتج الحلزون plus9 لإنشاء ملف معلمة الترميز، وهو في الواقع مجرد ملف xml مع لاحقة rpjf (الشكل 1). تجدر الإشارة إلى أن خيارات إدخال الصوت تتضمن إدخال الخط وإدخال الميكروفون، والتي يجب أن تتطابق مع خط الوصول الفعلي، بالإضافة إلى ذلك، ليست هناك حاجة لتحديد خيار تشفير الفيديو بممرين، ولن يكون لتحديده أي تأثير سوى عرض زر؛ تحذير؛ علاوة على ذلك، نظرًا لأن معظم أوضاع الوصول إلى الشبكة الحالية هي الاتصال الهاتفي وDSL، فمن الضروري فقط إنشاء ملفات فيديو بمعدلات 56 كيلو بايت و384 كيلو بايت، وأخيرًا، من الأفضل تحديد اسم ملف الفيديو المسجل حسب التاريخ. على سبيل المثال: 20060301.rm.
<?xml version=1.0 encoding=UTF-8?>
<الوظيفة xmlns=http://ns.real.com/tools/job.1.0.1>
<enableTwoPass type=bool>خطأ</enableTwoPass>
<كليبينفو>
<إدخال>
<الاسم>المؤلف</الاسم>
<value type=string>ZSTV</value>
</دخول>
<إدخال>
<الاسم>حقوق الطبع والنشر</الاسم>
<نوع القيمة=سلسلة>(ج) ZSTV2006 </value>
</دخول>
<إدخال>
<الاسم>الكلمات الرئيسية</الاسم>
<value type=string>ZSNews[2006-03-21]</value>
</دخول>
<إدخال>
<الاسم>العنوان</الاسم>
<value type=string>ZSNews[2006-03-21]</value>
</دخول>
</clipInfo>
<الإدخال>
<التقاط الإدخال>
<audioDeviceID type=string>Intel(r) الصوت المدمج</audioDeviceID>
..................................................
يمكننا إنشاء ملف دفعي باسم shixian.bat لاستدعاء ملف المعلمة الموضح أعلاه. التفاصيل الداخلية هي كما يلي:
Producer -jd:/shixian/shixian.rpjf -daw -lc e,i
تقوم عملية التسجيل الافتراضية بمراقبة التغييرات الصوتية في الوقت الفعلي وتسجيلها في ملف يسمى Producer.log. ومع ذلك، يتم إنشاء الكثير من السجلات المتغيرة، مما يجعل ملف السجل ضخمًا بسرعة وقد يتسبب في انقطاعات غير متوقعة في عملية التسجيل يمكن استخدام المعلمة -daw لإيقاف مراقبة الصوت، ثم استخدام lc e,i لتحديد أنه سيتم تسجيل الأخطاء والمعلومات فقط. بعد القيام بذلك، تصبح عملية التسجيل أكثر استقرارا.
وطالما أضفنا مهمة تنفيذ ملف shixian.bat يوميًا في الخطة، فسنحصل على ملف rm بنفس سمات الملف والاسم كل يوم. سيتم إنشاء ملف باسم 20060321.rm بالسمة 2006-03-21 هنا كل يوم. يبدو الأمر وكأنه لقمة، والأسوأ من ذلك أنه لا يجعل مهمة المسؤول أسهل، لأنه يتعين عليه فتح الخادم وتغيير اسمه كل يوم. وحتى لو كان محظوظًا بما فيه الكفاية لتعيين مسؤول مجتهد (الذي لا يمانع في القيام بمثل هذه الأشياء المتكررة كل يوم)، فإنه لا يزال غير قادر على تغيير سمة التاريخ المعروض في الملف، والذي تم تحديده أثناء عملية التسجيل هذه . إلا إذا…….
2: قم بإنشاء مهمة لتعديل ملف معلمة الترميز
المبدأ بسيط: قم بتحديث حقول XML المرتبطة بالتاريخ في ملف معلمة التشفير كل يوم. في هذه الحالة، تظهر سمات الملف التاريخ واسم الملف. فيما يلي رمز البرنامج النصي المستخدم لتحديث حقل التاريخ:
dimregOR
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) 'استخرج التاريخ من تاريخ النظام
إذا كان regOR.test(mm) ثم "تحقق مما إذا كان الشهر رقمًا فرديًا (من يناير إلى سبتمبر)"
mm=regOR.replace(mm,0$1) ' إذا كان الأمر كذلك، أضف 0 قبل الشهر ليصبح مكونًا من رقمين
نهاية إذا
إذا كان regOR.test(dd) ثم "تحقق مما إذا كان التاريخ رقمًا فرديًا (من واحد إلى تسعة)"
dd=regOR.replace(dd,0$1) ' إذا كان الأمر كذلك، أضف 0 قبل التاريخ لجعله رقمين
نهاية إذا
mytime=yy & - & mm & - & dd ' اجمع السنة والشهر واليوم في شكل yy-mm-dd
dest=yy & mm & dd ' اجمع السنة والشهر واليوم في شكل yymmdd
Pattern1=(.*[^0-9])([0-9]{4}/-[0-9]{2}/-[0-9]{2})([^0-9]. *)
'اضبط نمط متغير النمط 1 على %d%d%d %d- %d %d -%d %d
Pattern2=(.*[^0-9])([0-9]{8})([^0-9].*) ' اضبط نمط متغير النمط 2 على 8 أرقام متتالية
regOR.pattern=pattern1 ' إنشاء نمط بحث كنمط 1
com.dimtempstring
Set fso = CreateObject(Scripting.FileSystemObject) 'إنشاء كائن ملف نظام
اضبط f = fso.CreateTextFile(d:/shixian/temp.txt, True) ' قم بإنشاء ملف نصي جديد باسم temp
اضبط fr = fso.GetFile(d:/shixian/shixian.rpjf) 'احصل على ملف معلمة التشفير shixian.rpjf
تعيين ts = fr.OpenAsTextStream(1,-2) 'افتح ملف المعلمة كنص للقراءة فقط
قم بذلك حتى ts.AtEndOfStream ' قم بإنشاء حلقة حتى تتم قراءة ملف المعلمة
tempstring=ts.readline 'قراءة ملف المعلمة بوحدات السطر
إذا كان regOR.test(tempstring) ثم "ابحث عن حقل تاريخ في معلمة تغيير السطر".
tempstring=regOR.replace(tempstring,$1 & mytime & $3) 'إذا كان موجوداً، قم بتحديثه
نهاية إذا
regOR.pattern=pattern2 ' إنشاء نمط بحث كنمط 2
إذا كان regOR.test(tempstring) ثم "ابحث عن حقل تاريخ في معلمة تغيير السطر".
tempstring=regOR.replace(tempstring,$1 & dest & $3) 'إذا كان موجودًا، قم بالتحديث
نهاية إذا
regOR.pattern=pattern1 ' أعد تأسيس نمط البحث كنمط 1
f.writeline(tempstring) 'اكتب البيانات المحدثة إلى ملف temp.txt
حلقة
ts.Close 'ما يلي هو إغلاق كل كائن وتسجيل الخروج منه
f. إغلاق
ضبط regOR=لا شيء
يستقر = لا شيء
تعيين الاب = لا شيء
تعيين و = لا شيء
تعيين fso=لا شيء
ما يجب شرحه هو سبب إضافة 0 قبل الأشهر والأيام المكونة من رقم واحد. من الأسهل الشرح بالقياس: إذا لم تتم إضافة 0، فهل يشير الملف المسمى 2006111.rm إلى 11 يناير 2006 أم 1 نوفمبر 2006؟ بعد إضافة 0، يصبح 20060111.rm من الواضح في لمحة أنه الأول.
تتمثل الوظيفة المحددة لرمز البرنامج النصي أعلاه في استيراد البيانات الموجودة في ملف المعلمة إلى ملف نصي مؤقت في الوحدات السلوكية، ومراقبة حقول XML المرتبطة بالوقت في الوقت الفعلي وتحديثها، وأخيرًا إنشاء ملف temp.txt. بعد ذلك، كل ما يتعين علينا فعله هو استدعاء البرنامج النصي باستخدام ملف دفعي، وحذف ملف المعلمة القديم، وأخيرًا إعادة تسمية temp.txt إلى ملف المعلمة.
هذا هو الرمز الموجود في الملف الدفعي update.bat:
@صدى قبالة
د:/shixian/update.vbs
إذا كان موجودًا d:/shixian/shixian.rpjf من d:/shixian/shixian.rpjf
إذا كان موجودًا، قم بإعادة تسمية d:/shixian/temp.txt d:/shixian/temp.txt shixian.rpjf
كما هو الحال في القسم الأول، لا تزال بحاجة إلى إضافة الملف الدفعي update.bat إلى الخطة والمهام بحيث يمكن البدء بها بانتظام كل يوم.
3: إنشاء مهام الإرسال التلقائي
ومن أجل ضمان الاستقرار، عادة ما يتم فصل خادم التشفير وخادم موقع الويب، مما يتطلب منا نقل ملفات الفيديو المسجلة إلى خادم موقع الويب كل يوم. يمكن لأمر ftp الموجود في الملف الدفعي تنفيذ هذه الوظيفة بشكل مثالي.
ما يلي هو الكود الموجود في عملية النقل الدفعية.bat:
@صدى قبالة
بروتوكول نقل الملفات -s:media.txt
إذا كان موجودًا d:/shixian/shixian20060321.rm ديل 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/ ;
طباعة درجة الحرارة $_/ن؛
}
إغلاق (RPJF)؛
إغلاق(TEMP);
3: استخدام تعيين القرص يمكن أن يجعل نقل الملفات أكثر ملاءمة، ولكن يجب مراعاة المشكلات الأمنية.