شاشة التوقف الساحرة لكودي

بديل الصورة

تخصيص شاشة التوقف لكودي


تم تصميم المشروع لإنشاء شاشة توقف "ساحرة" بأقل قدر من الكود المصدري في بيثون. المشروع هو أبسط البرنامج المساعد لمركز الوسائط المتعددة كودي.

يوضح المشروع كيف يمكنك إنشاء شاشة توقف جميلة جدًا تعتمد بالكامل على عمل مجتمع "OpenSource". مشروع تكامل ، هذا مثال على كتابة عنصرين مستقلين ، يأخذ كل منهما حوالي 80 سطرًا من التعليمات البرمجية. المكون الأول هو مولد المحتوى ، البرنامج النصي shell ، والمكون الثاني هو البرنامج المساعد لمركز الوسائط المتعددة Kodi ، وهو المسؤول عن عرض المحتوى.

وأخيرًا ، إذا كنت مبرمجًا وتستخدم نظام التحكم في إصدار Git ، فيمكنك تصور عملك ، وكتابته إلى ملف فيديو والاستمتاع بالنتيجة على شاشة تلفزيون أو كمبيوتر ، وتراجع كرسيك مع فنجان قهوة. وفي أمسيات الخريف الباردة ، يمكنك النوم بهدوء تحت شاشة التوقف ، دون أن تنسى إيقاف تشغيل جهاز ضبط الوقت في Kodi.

مقدمة


يمكنك النظر إلى ما لا نهاية ثلاثة أشياء:
كيف تحترق النار وكيف تتدفق المياه وكيف يعمل الآخرون.

نظرًا لأن البرنامج المساعد مكتوب لـ "مركز الوسائط المتعددة Kodi" ، فعندئذ سأتصور عمل الفريق الفائق من "مبرمجي Kodi".

استخدام الإضافات في كودي


يعد Kodi Multimedia Center برنامجًا قويًا ومرنًا للغاية ، يعمل جنبًا إلى جنب مع مكتبة ffmpeg الخارجية ، لفك ترميز ملفات الصوت والفيديو.

لإنشاء تطبيق تابع لجهة خارجية ، يستخدم Kodi آلية امتداد "الوظائف الإضافية" أو ببساطة المكونات الإضافية. لإنشاء مكون إضافي خاص بي ، أحتاج إلى بعض المهارات ومعرفة قليلة بلغة برمجة بايثون.

آلية البرنامج المساعد Kodi مرنة للغاية ومريحة. Python هي لغة مترجمة ، مما يعني أنني لست بحاجة إلى تجميع أي شيء ، وتجميعها في حزمة برامج منفصلة ، وتعاني من إنشاء ملفات مثل "makefile" ، إلخ.

للتوزيع النهائي للمكون الإضافي Kodi ، فقط قم بتجميعه في أرشيف Zip ، مع مراعاة بعض القواعد في بنية الدليل. وجود أرشيف Zip النهائي في متناول اليد ، يمكن تثبيته على أي جهاز يعمل فيه Kodi: كمبيوتر ، كمبيوتر لوحي ، وأخيراً تلفزيون (يعني مجموعة من TV + لوحة واحدة) ، مع تحديد الأرشيف كمصدر إضافي.

كودي هيكل البرنامج المساعد


 └── screensaver.kodi.universe
     AD README.md
     ├── addon.xml
     g changelog.txt
     ├── create.sh
     art fanart.jpg
     ├── icon.png
     ├── الموارد
     │ ├── اللغة
     ├── │ ├── الإنجليزية
     ings │ │ └── strings.po
     │ │ └── الروسية
     ings │ └── strings.po
     . ├── settings.xml
     جلود. └──
     └── └── الافتراضي
     p ├── 720p
     │ │ └── kodi-universe.xml
     i ├── 1080i
     │ │ └── kodi-universe.xml
     └── └── وسائل الإعلام
     │ ├── black.jpg
     │ ├── buran.jpg
     od └── kodi-universe.mkv
     aver screensaver.py


  • README.md - ملف اختياري ، يحتوي على وصف للمشروع لـ github.com
  • addon.xml - ملف به وصف المكون الإضافي ؛ ويحتوي على نوع المكون الإضافي ، والترميز ، والإصدار ، والتبعيات ، واسم المؤلف ، إلخ.
  • changelog.txt - ملف اختياري مع قائمة تغييرات المشروع
  • create.sh هو ملف اختياري ، تم تصميم البرنامج النصي bash لإنشاء شاشة توقف لأرشفة Zip (a) وإنشاء ملف فيديو من محفوظات Git باستخدام أداة Gource ، وليس للملف علاقة ببرنامج Kodi plugin نفسه ، بل هو ضروري لتوزيع البرنامج المساعد بشكل مناسب. انها مستقلة تماما ، أي امتلاك هذا الملف فقط ، يمكنك دائمًا إنشاء أرشيف مضغوط كامل للمكون الإضافي (إذا كان لديك اتصال بالإنترنت).
  • fanart.jpg - صورة خلفية البرنامج المساعد
  • icon.png - الرمز الرئيسي
  • الموارد - الدليل مع موارد البرنامج المساعد
  • screensaver.py - الملف الرئيسي للمكون الإضافي ، يحتوي على جميع التعليمات البرمجية المصدر للمكون الإضافي في Python ، اسم الملف يمكن أن يكون أي شيء ، الشيء الرئيسي هو أن هذا الاسم مكتوب في ملف addon.xml

وصف موارد البرنامج المساعد


يحتوي دليل الموارد على الملفات التالية:

  • اللغة / الإنجليزية / strings.po - سلاسل واجهة البرنامج المساعد الأصلي باللغة الإنجليزية
  • language / Russian / strings.po - الترجمة إلى الروسية ، يتم تضمين الملف في آلية Kodi القياسية لترجمة المحتوى إلى اللغات الوطنية للبلدان ، تحتوي بداية الملف على رأس نص قياسي لعدة أسطر (يمكن العثور على مثال على موقع kodi.wiki ، قسم الإضافات) ، ثم هناك موجز ويب يتكون من ثلاثة حقول:

    • msgctxt - رابط إلى رقم سطر فريد
    • msgstr - معرف سلسلة النص الأصلي باللغة الإنجليزية
    • msgstr - ترجمة القيمة msgid إلى اللغة الوطنية ، في هذه الحالة ، إلى الروسية (دليل روسي)

  • settings.xml - الملف الرئيسي لإعدادات البرنامج المساعد ، يصف قائمة رسومية لخصائص البرنامج المساعد ، والتي يمكن تغيير معلمات السلسلة الخاصة بها ، حيث:

    • معرف مورد نص معرف
    • تسمية - تسمية رقمية فريدة لحقل النص (تتوافق مع حقل msgctxt في ملف strings.po للترجمات)
    • النوع - نوع مورد محدد مسبقًا (يتم وصف جميع الأنواع الممكنة على موقع kodi.wiki ، قسم الإضافات)
    • القيمة الافتراضية - القيمة الافتراضية للمعلمة (يمكنك إعادة تعيين المعلمة إلى هذه القيمة باستخدام قائمة Kodi التي تحمل الاسم نفسه)

  • الموارد / الجلود / default / 1080i / kodi-universe.xml - ملف تكوين xml
  • الموارد / الجلود / default / 720p / kodi-universe.xml - ملف xml للتكوين الذي يصف موقع عناصر التحكم الإضافية (عناصر التحكم) ، وهندستها ، والأحجام الإجمالية ، وموضع العناصر ، ونوع الرؤية ، إلخ. يتم تحديد اسم التكوين اعتمادًا على وضع محول الفيديو (على سبيل المثال ، 1080i أو 720p)

محتويات الروسية / strings.po
# Kodi Media Center language file # Addon Name: Screensaver Kodi Universe # Addon id: screensaver.kodi.universe # Addon Provider: berserktv msgid "" msgstr "" "Project-Id-Version: Kodi Addons\n" "Report-Msgid-Bugs-To: alanwww1@kodi.org\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Kodi Translation Team\n" "Language-Team: English \ (http://www.transifex.com/projects/p/xbmc-addons/language/en/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: en\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" msgctxt "#32001" msgid "Screensaver" msgstr " " msgctxt "#32002" msgid "Video file" msgstr "" msgctxt "#32003" msgid "Not Video" msgstr "  " 



محتويات settings.xml
  <?xml version="1.0" encoding="utf-8" standalone="yes"?> <settings height="800"> <category label="32001"> <setting id="videofile" label="32002" type="video"/> <setting id="not-video" type="bool" \ label="32003" default="false"/> </category> </settings> 


موارد الوسائط للمكون الإضافي:

  • resources / skins / default / media / black.jpg - خلفية سوداء تملأ الشاشة قبل بدء الفيديو
  • الموارد / الجلود / الافتراضي / وسائل الإعلام / buran.jpg - صورة مستقبلية لسفينة الفضاء "بوران ، على أجنحة الحلم"
  • الموارد / الجلود / الإعداد الافتراضي / الوسائط / kodi-universe.mkv - ملف الفيديو الرئيسي الذي يتم تشغيله بشكل دوري بواسطة البرنامج المساعد حتى حدث الصحوة

ملف تكوين جذر البرنامج المساعد - addon.xml


Addon.xml - هو ملف التكوين الرئيسي للمكون الإضافي ، حيث يأخذ Kodi منه جميع المعلومات اللازمة لتشغيل المكون الإضافي ودمجه في مركز الوسائط المتعددة.

محتوى addon.xml
  <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <addon id="screensaver.kodi.universe" name="Kodi Universe" \ version="0.1.2" provider-name="berserktv"> <requires> <import addon="xbmc.python" version="2.7"/> </requires> <extension point="xbmc.ui.screensaver" library="screensaver.py" /> <extension point="xbmc.addon.metadata"> <platform>all</platform> <source>https://github.com/berserktv/screensaver.kodi.universe </source> <summary lang="en">Kodi Universe</summary> <summary lang="ru"> </summary> <description lang="en">Screensaver - Kodi Universe </description> <description lang="ru">  -  </description> <license>GNU GENERAL PUBLIC LICENSE. Version 2, June 1991</license> </extension> </addon> 


المعالم الرئيسية للبرنامج المساعد هي:

  • الملحق الملحق
    • معرف - معرف نص فريد من البرنامج المساعد
    • اسم - اسم البرنامج المساعد
    • نسخة - نسخة البرنامج المساعد
    • اسم موفر - اسم موفر البرنامج المساعد

  • يتطلب القسم - التبعيات
    في هذا القسم ، الوحدات التي تعتمد عليها عملية هذا المكون الإضافي
  • قسم التمديد - التمديدات
    في هذا القسم (قد يكون هناك عدة) ، يشار إلى نوع المكون الإضافي ،
    نقطة الدخول الرئيسية للمكون الإضافي:
    point = "xbmc.ui.screensaver" library = "screensaver.py"

    في حالتنا ، يكون البرنامج المساعد هو "شاشة التوقف" التي يتم إرسالها إليها
    التحكم عن طريق استدعاء البرنامج النصي بيثون يسمى "screensaver.py"

    يمكن أيضًا تحديد point = "xbmc.addon.metadata" في قسم الإضافات
    مع نوع النظام الأساسي الذي يمكن أن يعمل عليه البرنامج المساعد ، واسم البرنامج المساعد ووصفه
    بلغة / لغات معينة ، وكذلك نوع البرنامج المساعد LICENSE
    يمكن أن يكون إجمالي كمية البيانات التعريفية التي يمكن تحديدها في قسم الامتداد هذا
    يمكنك العثور على معلومات كبيرة وأكثر تفصيلاً على الموقع الإلكتروني
    kodi.tv

تنفيذ البرنامج المساعد


نظرًا لأن المكون الإضافي يجب أن يكون بسيطًا ومباشرًا للغاية ، فسأحدد تنفيذه في تطبيقه على شاشة توقف واحدة لملف المصدر الرئيسي. الموجود في الدليل الجذر لشاشة التوقف (أ)

من أجل استدعاء البرنامج النصي python ، قمت بتسجيله في ملف addon.xml ، راجع القسم أعلاه

لغة برمجة Python مرنة للغاية ، فهي تسمح لك بتنفيذ نفس الإجراء بعدة طرق ، ومن أجل الوضوح ، سأستخدم الأسلوب الموجه للكائنات مع الفصول.

screensaver.py المحتوى
  # -*- coding: utf-8 -*- # Plugin for Kodi mediacenter # Kodi Universe - Very Simple Screensaver # GNU GENERAL PUBLIC LICENSE. Version 2, June 1991 import os import sys import xbmc import urllib import xbmcgui import xbmcaddon __id__ = 'screensaver.kodi.universe' __addon__ = xbmcaddon.Addon(id=__id__) __path__ = __addon__.getAddonInfo('path') def_video_url = __path__+'/resources/skins/default/media/kodi-universe.mkv' class BsPlaylist: def __init__(self,): pass def getPlaylist(self,): try: xbmc.PlayList(1).clear() except: pass self.playlist = xbmc.PlayList(1) item = xbmcgui.ListItem("item1") self.playlist.add(__addon__.getSetting("videofile"),item) return self.playlist class BsPlayer(xbmc.Player): def __init__(self,): pass def onPlayBackStarted(self): xbmc.executebuiltin("PlayerControl(RepeatAll)") def onPlayBackStopped(self): return class Screensaver(xbmcgui.WindowXMLDialog): def __init__( self, *args, **kwargs ): pass def onInit(self): video_url = __addon__.getSetting("videofile") if (video_url == ""): video_url = def_video_url __addon__.setSetting("videofile", video_url) if (__addon__.getSetting("not-video") == "true" \ or not os.path.isfile(video_url) ): return li = BsPlaylist() self.vpl = li.getPlaylist() if self.vpl: xbmc.sleep(2000) self.getControl(1).setImage("black.jpg") self.player = BsPlayer() if not xbmc.getCondVisibility("Player.HasMedia"): self.player.play(self.vpl,windowed=True) def onAction(self,action): try: xbmc.PlayList(1).clear() except: pass try: xbmc.Player().stop() except: pass try: self.close() except: pass if __name__ == '__main__': scr = Screensaver( 'kodi-universe.xml', __path__, 'default', '', ) scr.doModal() del scr 


شاشة توقف الفئة (xbmcgui.WindowXMLDialog)


الفئة الرئيسية من شاشة التوقف

تتضمن واجهة برمجة تطبيقات Python Kodi عدة وحدات أساسية: xbmc و xbmcgui و xbmcplugin و xbmcaddon و xbmcvfs . للعمل مع واجهة المستخدم الرسومية Kodi ، سأستخدم وحدة xbmcgui. تحتوي هذه الوحدة على فئات مسؤولة عن عناصر واجهة مختلفة.

لإنشاء مربع حوار مكون إضافي مع واجهته الموصوفة في ملف تكوين xml ، يتم استخدام فئة xbmcgui.WindowXMLDialog

محتوى kodi-universe.xml
  <?xml version="1.0" encoding="utf-8" standalone="yes"?> <window type="window"> <controls> <control type="image" id="1"> <description>Background image</description> <posx>0</posx> <posy>0</posy> <colordiffuse>FF555555</colordiffuse> <aspectratio scalediffuse="false" align="center" \ aligny="center">scale</aspectratio> <width>1920</width> <height>1080</height> <texture>buran.jpg</texture> </control> <control type="videowindow" id="2"> <description>VideoWindow</description> <posx>0</posx> <posy>0</posy> <width>1920</width> <height>1080</height> <visible>true</visible> </control> </controls> </window> 


يصف ملف XML للتكوين عنصرين تحكم:

الأول مع المعرف - 1 ، هو صورة خلفية - "العاصفة الثلجية ، على أجنحة الحلم" ، بأحجام معينة ، محاذاة إلى وسط الشاشة.

العنصر الثاني ذو المعرف - 2 ، هو نافذة لتشغيل الفيديو ، مع وجود إشارة على الرؤية وبعض الأبعاد الهندسية.

ترث فئة شاشة التوقف من فئة WindowXMLDialog ، وتحتوي على ثلاث طرق:

  • يتم استدعاء أسلوب المُنشئ __init__ تلقائيًا عند إنشاء الكائن
  • OnInit - طريقة التهيئة الرسومية ، تسمى قبل عرض النافذة الأولى
  • طريقة onAction هي طريقة لمعالجة الأحداث يتم استدعاؤها عند حدوث أحداث معينة ، في هذه الحالة ، عند حدوث حدث صحوة ، أي النقر فوق زر الماوس أو لوحة المفاتيح أو تحريك مؤشر الماوس أو وصول أي حدث من لوحة التحكم.

تستخدم فئة شاشة التوقف فئتين مساعدتين:

  • فئة BsPlayer - الموروثة من فئة مشغل فيديو XBMC القياسي xbmc.Player ، تحتوي الفئة على ثلاث طرق:
    1. يتم استدعاء أسلوب المُنشئ __init__ تلقائيًا عند إنشاء الكائن
    2. تجاوز أسلوب بدء تشغيل الفيديو onPlayBackStarted
    3. تجاوز طريقة نهاية الفيديو onPlayBackStopped

      ملاحظة: منذ أن قمت بإعادة تعريف طريقة إيقاف التشغيل وهي فارغة ،
      ستعمل القاعدة: لا تتوقف لنذهب

  • فئة BsPlaylist - فئة قائمة مصممة لإرجاع كائن xbmc.PlayList
    يحتوي الفصل على طريقتين:

    1. يتم استدعاء أسلوب المُنشئ __init__ تلقائيًا عند إنشاء الكائن
    2. طريقة getPlaylist لتحديد قائمة تشغيل باستخدام قائمة XBMC القياسية - xbmc.PlayList

الخوارزمية العامة لشاشة التوقف (أ) هي كما يلي:

  1. عندما يحدث حدث استدعاء شاشة التوقف (أ) - عدم نشاط المستخدم لعدد الدقائق المحددة وعدم تشغيل الفيديو / الصوت النشط ، ينقل Kodi التحكم إلى البرنامج النصي screensaver.py
  2. بناءً على ملف تكوين xml ، يتم إنشاء نافذة الرسم الرئيسية للمكون الإضافي. عند تهيئة النافذة الرسومية ، يتم تحميل موارد سلسلة إعدادات البرنامج المساعد (القائمة هي "الإعدادات").

إذا لم يتم تحديد ملف الفيديو
__addon __. getSetting ("videofile")

يتم ملؤها مع المعلمة الافتراضية
video_url = def_video_url
__addon __. setSetting ("videofile"، video_url)

إذا لم يكن هناك علم - "تعطيل تشغيل الفيديو"
__addon __. getSetting ("not-video")

تظهر الصورة المستقبلية "عاصفة ثلجية على أجنحة الحلم" لمدة ثانيتين
xbmc.sleep (2000)

علاوة على معرف عنصر التحكم 1 ، يتم تعيين صورة خلفية سوداء
self.getControl (1) .setImage ("black.jpg")

وبعد ذلك يبدأ مشغل الفيديو XBMC بقائمة تشغيل بملف واحد
self.player.play (self.vpl ، windowed = True)

يتم تشغيل ملف الفيديو في دائرة حتى اللحظة التي يأتي فيها
حدث اليقظة أي أي إجراء نشط للمستخدم

إنشاء تصورات لبرنامج Kodi المساعد في أوبونتو


ملاحظة:
سيتم تشغيل جميع التعليمات الموضحة أدناه ضمن نظام التشغيل Linux ، أي توزيع Ubuntu

من الممكن أيضًا تنفيذ الخطوات الموضحة أدناه في نظام تشغيل متوافق مع دبيان - الشرط الرئيسي لبدء التشغيل هو وجود مدير حزمة Apt في النظام ، أي مدير يسمح لك بتثبيت برنامج Deb في النظام. بالطبع ، يمكنك تنفيذ الخطوات التالية على أي نظام Linux ، ولكن هذا سيتطلب خطوات إضافية وقد يتغير تسلسل بعض الأوامر (على سبيل المثال: تثبيت حزم RPM بدلاً من Deb ، إلخ)

Gource هو مشروع مثير جدا للاهتمام ورائع. تمت تسمية Gource على اسم المصدر ، أي شفرة المصدر + G (الرسومات). هذا التطبيق يتيح لك تصور تاريخ التغييرات في نظام التحكم في الإصدار. يفهم Gource أصلاً Git ، لأنظمة أخرى مثل SVN ، يوجد Mercurial محولات تتيح لك تحويل قاعدة التخزين إلى Git Format.

Gource - يجعلها جميلة بشكل لا يصدق مع OpenGL ، ولديها عدد كبير من المعلمات لعملها. هذه الأداة القوية بشكل لا يصدق لتوليد التصور "الساحر" الذي سأستخدمه.

لإنشاء تصور ، أحتاج إلى تسلسل من الأوامر الموضحة في البرنامج النصي bash

لإنشاء الفيديو ، أحتاج إلى برنامجين رئيسيين:
Gource - لإنشاء ملف الفيديو المصدر لسجل Git لأي مشروع محدد
FFmpeg - مكتبة لترميز وفك تشفير الفيديو والصوت

البرنامج النصي لإنشاء ملف فيديو المساعد


إنشاء محتويات
  #!/bin/bash # This is script of the generation video from "Gource". # # project: Screensaver Kodi Universe (https://berserk.tv) # This script creates a ZIP archive of a Kodi screensaver. # GNU GENERAL PUBLIC LICENSE. Version 2, June 1991 # #     , #        # git zip ffmpeg gource    sudo OUT_DIR="output" OUT="kodi-universe.mkv" NAME_PROJ="screensaver.kodi.universe" MEDIA_PATH="${NAME_PROJ}/resources/skins/default/media" NAME_REP="https://github.com/berserktv/${NAME_PROJ}.git" GSFILE="output.ppm" SECONDS_PER_DAY="1" GOURCE_FRAME_RATE="30" RESOLUTION="-1920x1080" CODEC_OUT_FRAME_RATE="25" # -vcodec -     , # libx264         (h.264) # -profile -    (baseline, main, high, # high10, high422, high444) # -pix_fmt -    (yuv420p, yuv422p, yuv444p) FFPARAM="-vcodec libx264 -profile:v high422 -pix_fmt yuv420p" GSPARAM1="--camera-mode track ${RESOLUTION} --stop-position 1.0 \ --seconds-per-day ${SECONDS_PER_DAY}" GSPARAM2="--git-branch origin/master --multi-sampling \ --stop-at-end --hide-filenames" GSPARAM3="--highlight-users --file-idle-time 13 --max-files 0 --hide date" GSPARAM4="--title Kodi --bloom-multiplier 1.0 --bloom-intensity 1.0" VIS="visualize" # GIT         GIT_REP="https://github.com/xbmc/xbmc.git" # arg1 -   git , #         # example: ./create.sh "https://github.com/facebook/react.git" if [ -n "$1" ]; then GIT_REP="$1"; fi #   git zip ffmpeg  gource packages="git zip ffmpeg gource" for i in $packages; do if ! dpkg -s $i | grep -q "install ok installed"; then sudo apt-get install -y $i; fi done #    test -d ${OUT_DIR} && rm -rf ${OUT_DIR} test -d ${OUT_DIR} || mkdir -p ${OUT_DIR} cd ${OUT_DIR} #  Screensaver  GIT ,   if ! git clone ${NAME_REP} ${NAME_PROJ}; then echo "Error, not load ${NAME_REP}, exit ..."; exit 1; fi if ! git clone ${GIT_REP} ${VIS}; then echo "Error, not load ${GIT_REP}, exit ..."; exit 2; fi #    Screensaver(a) gource ${VIS} ${GSPARAM1} ${GSPARAM2} ${GSPARAM3} ${GSPARAM4} \ --output-framerate ${GOURCE_FRAME_RATE} --output-ppm-stream ${GSFILE} ffmpeg -y -r ${GOURCE_FRAME_RATE} -f image2pipe -vcodec ppm \ -i ${GSFILE} ${FFPARAM} -r ${CODEC_OUT_FRAME_RATE} ${OUT} && sync mv -f ${OUT} ${MEDIA_PATH} rm -f ${GSFILE} #     #   GIT    screensaver() test -d ${NAME_PROJ}/.git && rm -fr ${NAME_PROJ}/.git zip -r ${NAME_PROJ}.zip ${NAME_PROJ} 


يجب تشغيل البرنامج النصي كمستخدم عادي ، ولكن أثناء بدء التشغيل ، يتطلب البرنامج النصي تثبيت برامج git zip ffmpeg gource التالية

إذا لم تكن موجودة ، سيحاول البرنامج النصي تثبيتها باستخدام أمر تصعيد الامتياز - sudo .

باختصار ، يقوم البرنامج النصي بما يلي:

  • يقوم بتنزيل مشروعين من الإنترنت باستخدام Github.
    المشروع الأول هو شاشة التوقف نفسها
    المشروع الثاني - XBMC (Kodi)

    إذا قمت بتحديد وسيطة في سطر الأوامر تمثل مسار Git ، فيمكنك تحميل أي مشروع Git للتصور ، مثال على تحميل مشروع Git آخر:

     ./create.sh https://github.com/facebook/react.git 

    في هذه الحالة ، آخذ محرك Facebook الشهير للتصور - React
  • يقوم بتشغيل برنامج Gource باستخدام وسيطات سطر الأوامر لإنشاء مقاطع فيديو بتنسيق PPM غير مضغوط.
    سيتم إنشاء الفيديو حتى يغلق المستخدم نافذة Gource بالماوس (النقر على التقاطع) أو حتى يضغط المستخدم على مفتاح ESC

    ملاحظة:
    لا أنصحك بإنشاء مقطع فيديو يستمر لأكثر من ثلاث دقائق ، لأن هذا قد يستغرق وقتًا طويلاً وسيطلب منك تخزين أكثر من 30 جيجابايت من المساحة الحرة على محرك الأقراص الثابتة. دقيقة واحدة من الصور بدقة 1920 × 1080 (FullHD) وتردد 30 لقطة في الثانية يتطلب حوالي 10 غيغابايت من مساحة القرص الثابت. هذا ملف مؤقت ، وبعد إنشاء حاوية الفيديو MKV الصحيحة (ترميز h.264) باستخدام FFmpeg ، يتم حذف هذا الملف ويظل الملف الناتج ، والذي يستغرق 20 ميغابايت لمدة دقيقة من فيديو FullHD بمعدل 25 لقطة في الثانية.

    باستخدام إعدادات Gource التي يستخدمها البرنامج النصي ، ستحصل على فرصة لاختيار أي قسم وقت من بداية تطوير المشروع إلى الوقت الحاضر ، ويكون المقياس الخطي في أسفل نافذة Gource مسؤولاً عن هذا. يمكنك استخدام الماوس لتحديد أي وقت ، ويبدأ التصور من هذه اللحظة ، أي تختفي جميع الكائنات السابقة على الشاشة ، مما يجعل الفيديو أكثر ديناميكية.


  • بدء تشغيل برنامج FFmpeg بقائمة من الوسائط لإنشاء حاوية MKV من مجموعة صور Gource الأصلية ؛
  • ينشئ أرشيف Zip النهائي مع مشروع Screensaver (a) وملف الفيديو الذي تم إنشاؤه ؛

خيارات Gource


  • 01 - وضع الكاميرا وضع الكاميرا المسار
    (يتتبع المستخدمين النشطين الحاليين)
  • 02 - موقف نهاية 1.0 موقف
    (يحدد موضع النهاية للتشغيل ، يتراوح من 0.0 إلى 1.0)
  • 03 - ثانية في اليوم 1 عدد الأيام في الفيديو الثاني
    (تحدد المعلمة مقدار العمل الذي ستراه في الفاصل الزمني لثانية واحدة من الفيديو)
  • 04 - فرع من فرع / مشروع العمل الرئيسي
  • 05 - توقف عند النهاية بعد بوابة التسجيل
  • 06 - تمكين تجانس العينات المتعددة
  • 07 - إخفاء أسماء الملفات إزالة أسماء الملفات
  • 08 - تسليط الضوء على المستخدمين تسليط الضوء على أسماء المستخدمين
  • 09 - ملف وقت الخمول 13 وقت التوقف عن الملف
    (مقدار الوقت الذي يتم بعده إزالة اسم الملف من الشاشة)
  • 10 -max-files 0 أقصى عدد من الملفات
    (قيمة 0 تزيل الحد الأقصى لعدد أسماء الملفات المعروضة)
  • 11 - إخفاء تاريخ إزالة التاريخ الذي يتم عرض الإطار الحالي
  • 12 - لقب كودي الاسم الذي يظهر في الركن الأيسر السفلي من الفيديو
  • 13 - ازدهار المضاعف 1.0 يتحكم في تأثير "ازهر الضوء" باستخدام نصف القطر.
  • 14 - شدة الإزهار 1.0 تتحكم في تأثير "الإزهار الخفيف" باستخدام الشدة.
  • 15 - إخراج الإطارات 30 إطار إخراج في الثانية
  • 16 - اسم ملف إخراج الإخراج - الدفق - الدفق في تنسيق جزء في المليون

ملاحظة: قد تكون بعض المعلمات متبادلة ،
قائمة كاملة من المعلمات يمكن العثور عليها هنا .

فيديو تعليمي قصير لشاشة التوقف (أ)



1) قم بتنزيل المشروع من جيثب:
  git clone https://github.com/berserktv/screensaver.kodi.universe.git 


2) قم بإنشاء مقطع فيديو وإنشاء أرشيف مضغوط للمكون الإضافي:
  cd screensaver.kodi.universe chmod u+x create.sh ./create.sh 


3) وقت توليد الفيديو واستخدام مساحة القرص الحرة:
       .           -    20      Gource (PPM)   MKV      FFmpeg. (  h.264)  ,   Git  XBMC (Kodi)   700            .       PPM   10     ( FullHD, 30   ). 


4) تثبيت شاشة التوقف في كودي
     ""   Kodi (        )   Kodi - "" => " " => " Zip "   ,     Kodi Universe    Screensaver(),     .  Settings ( ) => " " => "" 

Source: https://habr.com/ru/post/ar466067/


All Articles