Bezaubernder Bildschirmschoner fĂŒr Kodi

Bild alt

Kodi einen Bildschirmschoner zuweisen


Das Projekt wurde entwickelt, um einen "bezaubernden" Bildschirmschoner mit einer minimalen Menge an Quellcode in Python zu erstellen. Das Projekt ist das einfachste Plugin fĂŒr das Multimedia Center Kodi.

Das Projekt zeigt, wie Sie einen sehr schönen Bildschirmschoner erstellen können, der vollstĂ€ndig auf der Arbeit der "OpenSource" -Community basiert. Als Integrationsprojekt ist dies ein Beispiel fĂŒr das Schreiben von zwei unabhĂ€ngigen Komponenten, von denen jede etwa 80 Codezeilen benötigt. Die erste Komponente ist ein Inhaltsgenerator, ein Shell-Skript, die zweite Komponente ist ein Kodi Multimedia Center-Plugin, das fĂŒr die Anzeige von Inhalten verantwortlich ist.

Und schließlich können Sie als Programmierer und mit dem Git-Versionskontrollsystem Ihre Arbeit visualisieren, in eine Videodatei schreiben und das Ergebnis auf einem Fernseher oder Computerbildschirm genießen, indem Sie sich mit einer Tasse Kaffee in Ihrem Stuhl zurĂŒcklehnen. Und an kĂŒhlen Herbstabenden können Sie beruhigend unter Ihrem Bildschirmschoner schlafen, ohne zu vergessen, den Timer des GerĂ€ts in Kodi auszuschalten.

PrÀambel


Sie können drei Dinge endlos betrachten:
wie Feuer brennt, wie Wasser fließt und wie andere Menschen arbeiten.

Da das Plugin fĂŒr das „Kodi Multimedia Center“ geschrieben wurde, werde ich die Arbeit des Superteams der „Kodi Programmers“ visualisieren.

Verwenden von Plugins in Kodi


Das Kodi Multimedia Center ist ein sehr leistungsfÀhiges und flexibles Programm, das in Verbindung mit der externen Bibliothek ffmpeg Audio- und Videodateien dekodiert.

Um eine Drittanbieteranwendung zu erstellen, verwendet Kodi den Erweiterungsmechanismus „Addons“ oder einfach Plug-Ins. Um mein eigenes Plugin zu erstellen, benötige ich einige Kenntnisse und ein wenig Kenntnisse der Programmiersprache Python.

Der Kodi-Plugin-Mechanismus ist Ă€ußerst flexibel und bequem. Python ist eine interpretierte Sprache, was bedeutet, dass ich nichts kompilieren, in ein separates Softwarepaket kompilieren, unter Build-Dateien wie "Makefile" usw. leiden muss.

FĂŒr die endgĂŒltige Verteilung des Kodi-Plugins packen Sie es einfach in das Zip-Archiv und beachten Sie dabei einige Regeln fĂŒr die Verzeichnisstruktur. Mit dem endgĂŒltigen Zip-Archiv kann es auf jedem GerĂ€t installiert werden, auf dem Kodi arbeitet: einem Computer, einem Tablet und schließlich einem Fernseher (dh einer Reihe von Fernsehern + Einzelplatten), wobei das Archiv als Plug-In-Quelle angegeben wird.

Kodi Plugin Struktur


 └── screenaver.kodi.universe
     ├── README.md
     ├── addon.xml
     ├── changelog.txt
     ├── create.sh
     ├── fanart.jpg
     ├── icon.png
     ├── Ressourcen
     │ ├ Sprache
     │ │ ├ Englisch
     │ │ │ └ strings.po
     │ │ └ Russisch
     │ │ └ strings.po
     │ ├ settings.xml
     │ └ Skins
     │ └ Standard
     │ ├ 720p
     │ │ └ kodi-universe.xml
     │ ├ 1080i
     │ │ └ kodi-universe.xml
     │ └ Medien
     │ ├ black.jpg
     │ ├ buran.jpg
     │ └ kodi-Universe.mkv
     └── Bildschirmschoner.py


  • README.md - optionale Datei, enthĂ€lt eine Beschreibung des Projekts fĂŒr github.com
  • addon.xml - Eine Datei mit einer Beschreibung des Plugins, die den Plugin-Typ, die Codierung, die Version, die AbhĂ€ngigkeiten, den Autorennamen usw. enthĂ€lt.
  • changelog.txt - eine optionale Datei mit einer Liste von ProjektĂ€nderungen
  • create.sh ist eine optionale Datei. Ein Bash-Skript dient zum Erstellen eines Bildschirmschoners fĂŒr das Zip-Archiv (a) und zum Generieren einer Videodatei aus dem Git-Verlauf mit dem Gource-Tool. Die Datei hat keine Beziehung zum Kodi-Plugin selbst. Sie ist fĂŒr die bequeme Verteilung des Plugins erforderlich. Es ist vollstĂ€ndig autonom, d.h. Wenn Sie nur diese Datei haben, können Sie jederzeit ein vollstĂ€ndiges Zip-Archiv des Plugins erstellen (wenn Sie ĂŒber eine Internetverbindung verfĂŒgen).
  • fanart.jpg - Plugin Hintergrundbild
  • icon.png - das Hauptsymbol
  • resources - Verzeichnis mit Plugin-Ressourcen
  • screenaver.py - Die Hauptdatei des Plugins enthĂ€lt den gesamten Quellcode fĂŒr das Plugin in Python. Der Dateiname kann beliebig sein. Hauptsache, dieser Name wird in die Datei addon.xml geschrieben

Beschreibung der Plugin-Ressourcen


Das Ressourcenverzeichnis enthÀlt die folgenden Dateien:

  • language / English / strings.po - Original-Plugin-Interface-Strings in Englisch
  • language / Russian / strings.po - Übersetzung ins Russische, die Datei ist im Kodi-Standardmechanismus fĂŒr die Übersetzung von Inhalten in die Landessprachen enthalten, der Anfang der Datei enthĂ€lt einen mehrzeiligen Standardtext-Header (ein Beispiel finden Sie auf der Website kodi.wiki , Abschnitt Plugins). Dann gibt es ZeilenvorschĂŒbe, die aus drei Feldern bestehen:

    • msgctxt - Link zu einer eindeutigen Zeilennummer
    • msgid - Original-Textzeichenfolgen- ID in Englisch
    • msgstr - Übersetzung des msgid- Werts in die Landessprache, in diesem Fall ins Russische (russisches Verzeichnis)

  • settings.xml - Die Hauptdatei der Plugin-Einstellungen beschreibt das grafische MenĂŒ der Plugin-Eigenschaften, deren Zeichenfolgenparameter geĂ€ndert werden können, wobei:

    • id - Kennung der Textressource
    • label - eine eindeutige numerische Bezeichnung fĂŒr das Textfeld (entspricht dem msgctxt-Feld in der Datei strings.po der Übersetzungen)
    • Typ - Ein vordefinierter Ressourcentyp (alle möglichen Typen sind auf der Website kodi.wiki , Abschnitt Plugins, beschrieben.)
    • Standard - Der Standardwert des Parameters (Sie können den Parameter ĂŒber das gleichnamige Kodi-MenĂŒ auf diesen Wert zurĂŒcksetzen.)

  • resources / skins / default / 1080i / kodi-universe.xml - XML-Konfigurationsdatei
  • resources / skins / default / 720p / kodi-universe.xml - XML-Konfigurationsdatei, die den Speicherort der Plug-In-Steuerelemente (Steuerelemente), ihre Geometrie, GesamtgrĂ¶ĂŸen, Position der Elemente, Art der Sichtbarkeit usw. beschreibt. Der Konfigurationsname wird abhĂ€ngig vom Modus des Videoadapters festgelegt (z. B. 1080i oder 720p).

Inhalt von Russian / 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 "  " 



Inhalt von 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> 


Medienressourcen des Plugins:

  • resources / skins / default / media / black.jpg - schwarzer Hintergrund, der den Bildschirm ausfĂŒllt, bevor das Video gestartet wird
  • resources / skins / default / media / buran.jpg - futuristisches Bild des Raumschiffs "Buran, auf den FlĂŒgeln eines Traums"
  • resources / skins / default / media / kodi-Universe.mkv - die Hauptvideodatei, die vom Plugin bis zum Aufwecken zyklisch abgespielt wird

Plugin-Stammkonfigurationsdatei - addon.xml


Addon.xml - ist die Hauptkonfigurationsdatei des Plugins, aus der Kodi alle erforderlichen Informationen entnimmt, um das Plugin zu starten und in das Multimedia Center zu integrieren.

addon.xml Inhalt
  <?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> 


Die Hauptparameter des Plugins sind:

  • Addon Abschnitt
    • id - eindeutige Textkennung des Plugins
    • name - Name des Plugins
    • version - Plugin Version
    • Anbietername - Name des Anbieters des Plugins

  • Benötigt AbschnittsabhĂ€ngigkeiten
    In diesem Abschnitt werden die Module beschrieben, von denen der Betrieb dieses Plug-Ins abhÀngt
  • Erweiterungsabschnitt - Erweiterungen
    In diesem Abschnitt (es kann mehrere geben) wird der Typ des Plugins angegeben.
    Haupteinstiegspunkt zum Plugin:
    point = "xbmc.ui.screensaver" library = "screenaver.py"

    In unserem Fall ist das Plugin der „Bildschirmschoner“, an den es ĂŒbertragen wird
    Steuerung durch Aufrufen eines Python-Skripts mit dem Namen "screenaver.py"

    point = "xbmc.addon.metadata" kann auch im Abschnitt "Erweiterungen" angegeben werden
    mit der Art der Plattform, auf der das Plugin arbeiten kann, dem Namen und der Beschreibung des Plugins
    in einer bestimmten Sprache / Sprachen sowie der Art des LIZENZ-Plugins
    Die Gesamtmenge an Metadaten, die in diesem Erweiterungsabschnitt angegeben werden kann, kann sein
    Auf der Website finden Sie ausreichend große und detailliertere Informationen
    kodi.tv

Plugin Implementierung


Da das Plugin extrem einfach und unkompliziert sein sollte, beschrÀnke ich mich bei seiner Implementierung auf eine Hauptquelldatei screenaver.py im Stammverzeichnis von screenaver (a)

Damit das Python-Skript aufgerufen werden kann, habe ich es in der Datei addon.xml registriert (siehe Abschnitt oben)

Die Programmiersprache Python ist sehr flexibel. Sie ermöglicht es Ihnen, dieselbe Aktion auf verschiedene Arten auszufĂŒhren. Aus GrĂŒnden der Übersichtlichkeit werde ich den objektorientierten Ansatz fĂŒr Klassen verwenden.

Bildschirmschoner.py Inhalt
  # -*- 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 


Klasse Bildschirmschoner (xbmcgui.WindowXMLDialog)


Die Hauptklasse des Bildschirmschoners

Die Python Kodi-API enthĂ€lt mehrere Kernmodule: xbmc, xbmcgui, xbmcplugin, xbmcaddon und xbmcvfs . Um mit der Kodi-BenutzeroberflĂ€che zu arbeiten, verwende ich das xbmcgui-Modul. Dieses Modul enthĂ€lt Klassen, die fĂŒr verschiedene Schnittstellenelemente verantwortlich sind.

Um ein Plugin-Dialogfeld mit der in der XML-Konfigurationsdatei beschriebenen Schnittstelle zu erstellen, wird die Klasse xbmcgui verwendet. WindowsXMLDialog

kodi-universe.xml Inhalt
  <?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> 


Die Konfigurations-XML-Datei beschreibt zwei Steuerelemente:

Das erste mit der Kennung - 1 ist ein Hintergrundbild - "Schneesturm auf den FlĂŒgeln eines Traums" in bestimmten GrĂ¶ĂŸen, ausgerichtet auf die Mitte des Bildschirms.

Das zweite Element mit der Kennung - 2 ist ein Fenster zum Abspielen des Videos mit einem Zeichen der Sichtbarkeit und bestimmten geometrischen Abmessungen.

Die Screensaver-Klasse erbt von der WindowXMLDialog-Klasse und verfĂŒgt ĂŒber drei Methoden:

  • Die Konstruktormethode __init__ wird beim Erstellen des Objekts automatisch aufgerufen
  • OnInit - grafische Initialisierungsmethode, die vor der ersten Fensteranzeige aufgerufen wird
  • Die onAction- Methode ist eine Ereignisverarbeitungsmethode, die aufgerufen wird, wenn bestimmte Ereignisse auftreten, in diesem Fall, wenn ein Aufweckereignis auftritt, d. H. Klicken Sie mit der Maustaste, der Tastatur, dem Bewegen des Mauszeigers oder dem Eintreffen eines Ereignisses ĂŒber das Bedienfeld.

Die Bildschirmschoner-Klasse verwendet zwei Hilfsklassen:

  • Klasse BsPlayer - Die Klasse wurde von der Standard-XBMC-Video-Player-Klasse xbmc.Player geerbt und enthĂ€lt drei Methoden:
    1. Die Konstruktormethode __init__ wird beim Erstellen des Objekts automatisch aufgerufen
    2. Überschreiben der Videostartmethode onPlayBackStarted
    3. Überschreiben der onPlayBackStopped- Videoendmethode

      Hinweis: Da ich die Methode zum Stoppen der Wiedergabe neu definiert habe und sie leer ist,
      dann funktioniert die Regel: Hör nicht auf, lass uns gehen

  • Klasse BsPlaylist - Eine Listenklasse, die ein xbmc.PlayList- Objekt zurĂŒckgibt
    Die Klasse enthÀlt zwei Methoden:

    1. Die Konstruktormethode __init__ wird beim Erstellen des Objekts automatisch aufgerufen
    2. Die Methode getPlaylist zum Definieren einer Wiedergabeliste mithilfe der Standard-XBMC-Liste - xbmc.PlayList

Der allgemeine Algorithmus von Screensaver (a) lautet wie folgt:

  1. Wenn das Screensaver-Aufrufereignis eintritt (a) - die InaktivitĂ€t des Benutzers fĂŒr die angegebene Anzahl von Minuten und das Fehlen einer aktiven Video- / Audiowiedergabe - ĂŒbertrĂ€gt Kodi die Steuerung an das Skript screenaver.py
  2. Basierend auf der XML-Konfigurationsdatei wird das Hauptgrafikfenster des Plugins erstellt. Wenn das grafische Fenster initialisiert wird, werden die Zeichenfolgenressourcen der Plugin-Einstellungen geladen (das MenĂŒ lautet "Einstellungen").

Wenn die Videodatei nicht angegeben ist
__addon __. getSetting ("Videofile")

Es wird mit einem Standardparameter gefĂŒllt
video_url = def_video_url
__addon __. setSetting ("videofile", video_url)

Wenn es kein Flag gibt - "Videowiedergabe deaktivieren"
__addon __. getSetting ("Nicht-Video")

Das futuristische Bild „Schneesturm auf den FlĂŒgeln des Traums“ wird zwei Sekunden lang gezeigt
xbmc.sleep (2000)

ferner wird durch die Kennung von Steuerung 1 ein schwarzes Hintergrundbild eingestellt
self.getControl (1) .setImage ("black.jpg")

Anschließend startet der XBMC-Videoplayer mit einer Wiedergabeliste mit nur einer Datei
self.player.play (self.vpl, windowed = True)

Die Videodatei wird bis zu dem Moment im Kreis abgespielt
Wachereignis, d.h. jede aktive Benutzeraktion

Erstellen von Visualisierungen fĂŒr das Kodi-Plugin in Ubuntu


Hinweis:
Alle unten beschriebenen Anweisungen werden unter dem Linux-Betriebssystem ausgefĂŒhrt, nĂ€mlich der Ubuntu-Distribution

Es ist auch möglich, die unten beschriebenen Schritte in einem Debian-kompatiblen Betriebssystem auszufĂŒhren - die Hauptbedingung fĂŒr den Start ist das Vorhandensein des Apt- Paketmanagers im System, d. H. Ein Manager, mit dem Sie Deb- Software im System installieren können. NatĂŒrlich können Sie die folgenden Schritte auf jedem Linux-System ausfĂŒhren, dies erfordert jedoch zusĂ€tzliche Schritte, und die Reihenfolge einiger Befehle kann sich Ă€ndern (Beispiel: Installieren von RPM-Paketen anstelle von Deb usw.)

Gource ist ein sehr interessantes und faszinierendes Projekt. Die Quelle ist nach der Quelle benannt, d.h. Quellcode + G (Grafik). Mit dieser Anwendung können Sie den Änderungsverlauf im Versionskontrollsystem visualisieren. Gource versteht Git von Haus aus. FĂŒr andere Systeme wie SVN und Mercurial gibt es Konverter, mit denen Sie die Speicherbasis in das Git-Format konvertieren können.

Gource - macht mit OpenGL unglaublich schön und hat eine große Anzahl von Parametern fĂŒr seine Arbeit. Dieses unglaublich leistungsstarke Tool zum Generieren einer "bezaubernden" Visualisierung werde ich verwenden.

Um eine Visualisierung zu erstellen, benötige ich eine Folge von Befehlen, die in einem Bash- Skript beschrieben sind

Um das Video zu generieren, benötige ich zwei Hauptprogramme:
Gource - um die Quellvideodatei fĂŒr den Git-Verlauf eines bestimmten Projekts zu erstellen
FFmpeg - eine Bibliothek zum Codieren und Decodieren von Video und Audio

Skript zum Generieren einer Plugin-Videodatei


create.sh Inhalt
  #!/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} 


Das Skript sollte als normaler Benutzer ausgefĂŒhrt werden, aber wĂ€hrend des Starts erfordert das Skript die Installation der folgenden git zip ffmpeg-Quellprogramme

Wenn sie fehlen, versucht das Skript, sie mit dem Höhenbefehl sudo zu installieren.

Kurz gesagt, das Skript fĂŒhrt Folgendes aus:

  • Mit Github werden zwei Projekte aus dem Internet heruntergeladen.
    Das erste Projekt ist Screensaver selbst
    Zweites Projekt - XBMC (Kodi)

    Wenn Sie in der Befehlszeile ein Argument angeben, das einen Git-Pfad darstellt, können Sie jedes Git-Projekt zur Visualisierung laden. Ein Beispiel fĂŒr das Laden eines anderen Git-Projekts:

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

    In diesem Fall nehme ich die bekannte Facebook-Engine zur Visualisierung - React
  • FĂŒhrt das Gource- Programm mit Befehlszeilenargumenten aus, um Videofragmente im unkomprimierten PPM-Format zu generieren.
    Das Video wird generiert, bis der Benutzer das Gource-Fenster mit der Maus schließt (auf das Kreuz klicken) oder bis der Benutzer die ESC- Taste drĂŒckt

    Hinweis:
    Ich empfehle nicht, ein Video zu erstellen, das lĂ€nger als drei Minuten dauert , da dies sehr lange dauern kann und Sie mehr als 30 GB freien Speicherplatz auf Ihrer Festplatte speichern mĂŒssen. Eine Minute Bilder mit einer Auflösung von 1920 × 1080 (FullHD) und einer Frequenz von 30 Bildern pro Sekunde erfordert etwa 10 GB Festplattenspeicher. Dies ist eine temporĂ€re Datei. Nach dem Generieren des richtigen MKV-Videocontainers (h.264-Codec) mit FFmpeg wird diese Datei gelöscht und die resultierende Datei bleibt erhalten. FĂŒr eine Minute FullHD-Video mit 25 Bildern pro Sekunde werden 20 MB benötigt.

    Mit den vom Skript verwendeten Gource-Einstellungen haben Sie die Möglichkeit, einen beliebigen Zeitabschnitt vom Beginn des Projekts bis zur Gegenwart auszuwĂ€hlen. Die lineare Skala am unteren Rand des Gource-Fensters ist dafĂŒr verantwortlich. Sie können jederzeit mit der Maus auswĂ€hlen, und die Visualisierung beginnt ab diesem Moment, d. H. Alle vorherigen Objekte auf dem Bildschirm verschwinden, wodurch das Video dynamischer wird.


  • Startet das FFmpeg-Programm mit einer Liste von Argumenten zum Erstellen eines MKV-Containers aus dem ursprĂŒnglichen Gource-Image-Set.
  • Erstellt das endgĂŒltige Zip-Archiv mit dem Bildschirmschoner-Projekt (a) und der generierten Videodatei.

Quellenoptionen


  • 01 - Kameramodus Track- Kameramodus
    (verfolgt aktuell aktive Benutzer)
  • 02 - Stoppposition 1.0 Endposition
    (Legt die Endposition fĂŒr die Wiedergabe fest und reicht von 0,0 bis 1,0)
  • 03 - Sekunden pro Tag 1 Anzahl Tage pro Sekunde Video
    (Der Parameter bestimmt, wie viel Arbeit Sie im Intervall von einer Sekunde des Videos sehen werden.)
  • 04 --git-branch origin / master project work branch
  • 05 - Stopp am Ende nach Beendigung des Git-Protokolls
  • 06 - Multi-Sampling- GlĂ€ttungsfreigabe
  • 07 --hide-filenames entfernt Dateinamen
  • 08 --highlight-Benutzer markieren Benutzernamen
  • 09 --Datei-Leerlaufzeit 13 Ausfallzeit fĂŒr Datei
    (die Zeitspanne, nach der der Dateiname von der Anzeige entfernt wird)
  • 10 --max-files 0 maximale Anzahl von Dateien
    (Der Wert 0 hebt die Begrenzung der Anzahl der angezeigten Dateinamen auf.)
  • 11 - Datum ausblenden Entfernen Sie das Datum, fĂŒr das der aktuelle Frame angezeigt wird
  • 12 - Titel Kodi der Name, der in der unteren linken Ecke des Videos angezeigt wird
  • 13 --bloom-multiplier 1.0 steuert den Effekt der " LichtblĂŒte " anhand des Radius.
  • 14 - BlĂŒtenintensitĂ€t 1.0 steuert den Effekt der "LichtblĂŒte" unter Verwendung der IntensitĂ€t.
  • 15 - Ausgabe-Framerate 30 Ausgabebilder pro Sekunde
  • 16 --output-ppm-stream name Name der Ausgabedatei im PPM-Format

Hinweis: Einige Parameter können sich gegenseitig ausschließen.
Eine vollstÀndige Liste der Parameter finden Sie hier .

Kurzes Video-Tutorial fĂŒr Screensaver (a)



1) Laden Sie das Projekt von github herunter:
  git clone https://github.com/berserktv/screensaver.kodi.universe.git 


2) Generiere ein Video und erstelle ein Zip-Archiv des Plugins:
  cd screensaver.kodi.universe chmod u+x create.sh ./create.sh 


3) Zeit fĂŒr die Videoerzeugung und Nutzung des freien Speicherplatzes:
       .           -    20      Gource (PPM)   MKV      FFmpeg. (  h.264)  ,   Git  XBMC (Kodi)   700            .       PPM   10     ( FullHD, 30   ). 


4) Installieren Sie den Bildschirmschoner in Kodi
     ""   Kodi (        )   Kodi - "" => " " => " Zip "   ,     Kodi Universe    Screensaver(),     .  Settings ( ) => " " => "" 

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


All Articles