image

Video Editing SDK 5 für Linux – Hauptfunktionen

24.05.2022 15 Minutes Olga Krovyakova 622 Comments Off (DE)

Video Editing SDK for Linux ist ein Tool für Entwickler, die mit Video und Audio arbeiten und intelligente Desktop- oder Cloud-Anwendungen für die Videobearbeitung entwickeln möchten, die wichtige Multimedia Formate und Codecs unterstützen.

Das SDK implementiert eine SolveigMM Smart Rendering-Technologie, die eine beliebige Verarbeitung von Mediendateien mit unterschiedlichen Komprimierung Parametern gemäß den Parametern der angegebenen Referenzdatei ermöglicht. Das Herzstück des SDK ist ein Video Editing Engine-Objekt, das eine Vielzahl von Bearbeitungsvorgängen im Smart-Modus unterstützt. Diese Operationen können vom Dienstprogramm smm_batchsplit ausgeführt werden. Es ist ein Befehlszeilendienstprogramm zum Verarbeiten von Stapeln von Mediendateien. Alle Bearbeitungs Konfigurationen müssen in einer Batchdatei (*.xtl) beschrieben werden.

Überprüfen Sie die verfügbare Dokumentation zum Video Editing SDK for Linux. Es ist auch eine Beschreibung der HTML5 Video Editor-API verfügbar.

Und unten ist die Liste der Operationen, die mit Hilfe des SDK und smm_batchsplit durchgeführt werden können.

Trimmen

Diese Funktion ermöglicht das Trimmen, das Ausschneiden einer beliebigen Anzahl von Fragmenten aus vorcodierten Eingabedateien in schnellen und verlustfreien Modi mit Frame-Genauigkeit in Kombination mit dem verlustfreien Zusammenführen von Mediendateien.

Für die Stapelverarbeitung können Sie folgenden XTL-Code verwenden:


<timelines version="3">
  <timeline>
    <group output="../output/sample_mp4_0001.mp4">
      <track video="1" audio="1" accuracy="frame">
        <clip src="../mp4/test_file.mp4" start="00:00:01:00" stop="00:00:06:00" timeFormat="time10ms" />
        <clip src="../mp4/test_file.mp4" start="00:00:07:00" stop="00:00:12:00" timeFormat="time10ms" />
      </track>
    </group>
  </timeline>
</timelines>

Als Ergebnis wird die Datei „sample_mp4_0001.mp4“ aus der Quelldatei „test_file.mp4“ erstellt, die aus 2 Intervallen der Quelldatei besteht – Sekunden 1-6 und 7-12.

Die Ausgabedatei für dieses Projekt wird hier angezeigt:

 

Fügen Sie Effekte/Übergänge in die Ausgabedatei ein

Die Engine kann mehrere Effekte und Übergänge auf MP4 AVC- und MXF XAVC-Videos anwenden:

– einblenden ausblenden,

– sich auflösen

Auflösen

Das Beispiel zeigt den Auflösungs Übergang zwischen 2 Videos. Die Dauer des Übergangs beträgt 3 Sekunden.

Das folgende XTL-Projekt kann verwendet werden, um den Übergang zu demonstrieren:


<timelines version="3">
  <timeline>
    <group output="../output/transition_dissolve.mp4">
      <track video="1" audio="1" text="0" accuracy="frame">
        <clip src="../mp4/test_file.mp4" start="00:00:00:00" stop="00:00:15:00" />
        <clip src="../mp4/test_file.mp4" start="00:00:03:00" stop="00:00:15:00" />
        <effect type="transparency" start="00:00:12:00" stop="00:00:15:00">
          <param name="bkcolor" value="black" />
          <param name="alpha" value="255">
            <linear length="00:00:03:00" value="0"/>
          </param>
        </effect>
      </track>
      <track video="1">
        <clip src="../mp4/test_file.mp4" length="00:00:12:00" flags="blank" />
        <clip src="../mp4/test_file.mp4" start="00:00:00:00" stop="00:00:03:00"/>
        <clip src="../mp4/test_file.mp4" length="00:00:12:00" flags="blank" />
        <effect type="transparency" start="00:00:12:00" stop="00:00:15:00">
          <param name="bkcolor" value="transparent" />
          <param name="alpha" value="0">
            <linear length="00:00:03:00" value="255"/>
          </param>
        </effect>
        <transition type="mix" start="00:00:12:00" stop="00:00:15:00"/>
      </track>
    </group>
  </timeline>
</timelines>

Die erste Spur der XTL wird erstellt, um die gesamte Struktur und Dauer der Ausgabedatei darzustellen. Es enthält alle Dateien, aus denen die Ausgabedatei besteht.

Es enthält das „Effekt“-Tag, um das Timing für jede der Überblendungen zu beschreiben, wobei die Nummer dieselbe sein sollte wie die Anzahl der Überblendungen. Jedes „Effekt“-Tag sollte den „Ausblende“-Teil der ersten von zwei Dateien beschreiben, die von der aktuellen Überblendung betroffen sind.

Für jede zweite Datei des betroffenen Paares ist eine zusätzliche Spur erforderlich. Solche Tracks müssen die folgenden Informationen enthalten:

  1. Typ und Nummer des Streams, auf den der Übergang angewendet wird. Bitte beachten Sie, dass nur eine Art von Stream angegeben werden sollte.
  2. „Effekt“-Tag, das das „Einblenden“ der zweiten Datei beschreibt
  3. „Übergang“-Tag, das anzeigt, dass der aktuelle Track gemäß diesem Tag verarbeitet und der Ausgabedatei hinzugefügt wird.

Als Ergebnis für dieses xtl sollte die Datei transition_dissolve.mp4 erstellt werden, die aus 2 gleichen Videos und 1 Überblendung zwischen ihnen ab der 12. Sekunde für eine Dauer von 3 Sekunden besteht.

Die Ausgabedatei für dieses Projekt wird hier angezeigt:

 

Ein- und Ausblenden

Das Beispiel zeigt die Effekte „Einblenden“ und „Ausblenden“ bei 2 kombinierten Videos. Jeder Effekt hält 3 Sekunden an.

Die Beschreibung des XTL für diese Art von Übergängen sieht wie folgt aus:


<timelines version="3">
   <timeline>
     <group output="../output/transition_fadeout_fadein.mp4">
       <track video="1" audio="1" text="0" accuracy="frame">
         <clip src="../mp4/test_file.mp4" start="00:00:00:00" stop="00:00:15:00" />
         <clip src="../mp4/test_file.mp4" start="00:00:00:00" stop="00:00:15:00" />
         <effect type="transparency" start="00:00:12:00" stop="00:00:15:00">
           <param name="bkcolor" value="black" />
           <param name="alpha" value="255">
             <linear length="00:00:03:00" value="0"/>
           </param>
         </effect>
         <effect type="transparency" start="00:00:15:00" stop="00:00:18:00">
           <param name="bkcolor" value="black" />
           <param name="alpha" value="0">
             <linear length="00:00:03:00" value="255"/>
           </param>
         </effect>
       </track>
     </group>
   </timeline>
</timelines>

Das Beispiel enthält 2 Dateien, beschrieben in den „Clip“-Tags und 2 „Effect“-Tags – das erste ist für das „Ausblenden“ und das zweite für das „Einblenden“. Diese Tags enthalten auch zusätzliche Parameter in „param“-Tags – eine Hintergrundfarbe und einen Transparenzwert und eine Variation Funktion.

Als Ergebnis für dieses XTL-Projekt sollte die Datei transition_fadeout_fadein.mp4 erstellt werden, die aus 2 gleichen Videos besteht – das erste Video hat am Ende einen „Fade-out“-Effekt und das zweite Video einen „Fade-in“-Effekt an seinem Ende Anfang.

Sie können die Ausgabedatei hier überprüfen:

 

Audiosegmente stumm schalten

Die Funktion ermöglicht das Stummschalten von Audio in den angegebenen Teilen der Mediendatei.

Das XTL-Projekt, das „Audio stummschalten“ ausführt, ist unten dargestellt:


<timelines version="3">
  <timeline>
    <group output="../output/audio_mute.mp4">
      <track video="1" audio="1" text="0" accuracy="frame">
        <clip src="../mp4/test_file.mp4" start="00:00:00:00" stop="00:00:05:00" timeFormat="time10ms" flags="audio_silence"/>
        <clip src="../mp4/test_file.mp4" start="00:00:05:00" stop="00:00:10:00" timeFormat="time10ms" />
        <clip src="../mp4/test_file.mp4" start="00:00:10:00" stop="00:00:15:00" timeFormat="time10ms" flags="audio_silence"/>
      </track>
    </group>
  </timeline>
</timelines>

Dieses Projekt erstellt die Datei „audio_mute.mp4“. Die ersten und letzten 5 Sekunden der Ausgabedatei sind stumm. Sehen Sie hier das Ergebnis:

 

Ton mischen

Mit der Mischfunktion können Sie den Ton aus den separaten M4A- oder MP3-Audiodateien sowie die Audio-AAC-, MP3- oder PCM-Streams aus den anderen MP4-Dateien in Ihre Datei überlagern. Dies kann auch als Voice-Over bezeichnet werden.

Hier ist das XTL-Projektbeispiel:


<timelines version="3">
  <timeline>
    <group output="../output/audio_mix.mp4">
      <track video="1" audio="0" text="0" accuracy="frame">
        <clip src="../mp4/test_file.mp4" start="00:00:00:00" stop="00:00:15:00" timeFormat="time10ms" />
      </track>
      <track video="0" audio="1" text="0" accuracy="frame">
        <clip src="../mp4/test_file.mp4" start="00:00:00:00" stop="00:00:15:00" timeFormat="time10ms" />
      </track>
      <track audio="1">
        <clip src="../mp3/mp3_single.mp3" length="00:00:02:00" flags="audio_silence" />
        <clip src="../mp3/mp3_single.mp3" start="00:00:00:00" stop="00:00:10:00" timeFormat="time10ms" />
        <clip src="../mp3/mp3_single.mp3" length="00:00:03:00" flags="audio_silence" />
        <transition type="mix" start="00:00:02:00" stop="00:00:12:00">
          <param name="audio" value="1"/>
        </transition>
      </track>
    </group>
  </timeline>
</timelines>

Bemerkungen:

Dieses Projekt erzeugt die Datei „audio_mix.mp4“. Die Datei enthält eine Quelldatei test_file.mp4, in die ein 10-Sekunden-Intervall des Tons aus der Datei mp3_single.mp3 eingemischt wird.

 

Arbeiten mit Bildern

Mit dem SDK können Sie Bilder für Ihr Video verwenden. Folgende Operationen können durchgeführt werden:

Überlagern von Bildern auf einem Video

Sie können Ihrer Videodatei ein Bild überlagern oder ein Wasserzeichen oder Logo hinzufügen. Es ist verfügbar für MP4-Dateien mit AVC-Video, MXF mit XAVC.

Das Beispiel zeigt, wie Bilder auf Videos überlagert werden.


<timelines version="3">
  <timeline>
    <group output="../output/image_overlay.mp4">
      <track video="1" audio="1" text="0" accuracy="frame">
        <clip src="../mp4/test_file.mp4" start="00:00:00:00" stop="00:00:15:00" timeFormat="time10ms" />
      </track>
      <track video="1">
        <clip src="../logo.png" length="00:00:02:00" flags="blank" />
        <clip src="../logo.png" length="00:00:05:00" />
        <clip src="../logo.png" length="00:00:08:00" flags="blank" />
        <transition type="pip" start="00:00:02:00" stop="00:00:07:00">
          <param name="x" value="10"/>
          <param name="y" value="10"/>
          <param name="width" value="100"/>
          <param name="height" value="28"/>
        </transition>
      </track>
    </group>
  </timeline>
</timelines>

Dieses XTL-Projekt erstellt eine image_overlay.mp4-Datei und überlagert das SolveigMM-Logo an einer bestimmten Position ab Sekunde 2 und zeigt es für eine Dauer von 10 Sekunden an.

Sehen Sie sich die Ausgabedatei hier an:

 

Bilder in ein Video umwandeln

Sie können ein neues MP4 (AVC)- oder MXF (XAVC)-Video aus einem Satz von PNG/JPG-Bildern zusammenstellen.

Die Komprimierung Parameter müssen entweder durch Angabe der Referenzdatei oder durch direkte Beschreibung eingestellt werden:


<timelines version="3">
  <timeline>
    <group output="../output/image_to_video.mp4" out_type="mp4">
      <task type="transcoding">
        <param name="vcodec" value="type=h264,fps_n=25,fps_d=1,width=1280,height=720,profile=baseline,bitrate=1000"/>
      </task>
      <track video="1" audio="0" text="0">
        <clip src="../jpg/kitten.jpg" length="00:00:04:00" />
      </track>
    </group>
  </timeline>
</timelines>

Das mit diesem XTL-Projekt erstellte Ausgabevideo besteht aus dem kitten.jpg-Bild, das für eine Dauer von 4 Sekunden präsentiert wird und mit dem H264-Codec codiert ist.

Hier ist die Ausgabedatei für dieses Projekt:

 

Gemeinsame Übergänge

Das Beispiel demonstriert die Anwendung aller möglichen Effekte in einer einzigen Datei.


<timelines version="3">
  <timeline>
    <group output="../output/transitions_avc_mp4.mp4">
<!--specify compression parameters for the transcoding-->
      <param name="reference_file" value="../mp4/test_video_1.mp4"/>
<!--add common output file structure, work only with the video stream-->
      <track video="1" audio="0" accuracy="frame">
        <clip src="../mp4/test_video_1.mp4" start="00:00:00:00" stop="00:00:02:00" />
        <clip src="../mp4/test_video_1.mp4" start="00:00:01:00" stop="00:00:02:00" />
        <--declare a fade-in on the beginning of the first file-->
        <effect type="transparency" start="00:00:00:00" stop="00:00:01:00" >
          <param name="bkcolor" value="black" />
          <param name="alpha" value="0">
            <linear length="00:00:01:00" value="255" />
          </param>
        </effect>
<!--prepare the fade-out part of the dissolve transition between 2 files, the rest part is in the separate track below-->
        <effect type="transparency" start="00:00:01:00" stop="00:00:02:00" >
          <param name="bkcolor" value="black" />
          <param name="alpha" value="255">
            <linear length="00:00:01:00" value="0" />
          </param>
        </effect>
<!--declare a fade-out on the ending of the second video file-->
        <effect type="transparency" start="00:00:02:00" stop="00:00:03:00" >
          <param name="bkcolor" value="black" />
          <param name="alpha" value="255">
            <linear length="00:00:01:00" value="0" />
          </param>
        </effect>
      </track>
<!--finalize the dissolve effect by specifying a fade-in part on the second file and declaring a mix transition-->
      <track video="1">
        <clip src="../mp4/test_video_1.mp4" length="00:00:01:00" flags="blank" />
        <clip src="../mp4/test_video_1.mp4" start="00:00:00:00" stop="00:00:01:00" />
        <clip src="../mp4/test_video_1.mp4" length="00:00:01:00" flags="blank" />
        <effect type="transparency" start="00:00:01:00" stop="00:00:02:00">
          <param name="bkcolor" value="transparent" />
          <param name="alpha" value="0">
            <linear length="00:00:01:00" value="255" />
          </param>
        </effect>
        <transition type="mix" start="00:00:01:00" stop="00:00:02:00"/>
      </track>
<!--declare a picture overlay-->
      <track video="1">
        <clip src="../png/attractive.png" length="00:00:01:00" flags="blank"/>
        <clip src="../png/attractive.png" length="00:00:01:00" />
        <clip src="../png/attractive.png" length="00:00:01:00" flags="blank"/>
        <transition type="pip" start="00:00:01:00" stop="00:00:02:00">
          <param name="x" value="0"/>
          <param name="y" value="0"/>
          <param name="width" value="184"/>
          <param name="height" value="112"/>
        </transition>
      </track>
<!--add audio from the same input files-->
      <track video="0" audio="1" accuracy="frame">
        <clip src="../mp4/test_video_1.mp4" start="00:00:00:00" stop="00:00:02:00" />
        <clip src="../mp4/test_video_1.mp4" start="00:00:01:00" stop="00:00:02:00" />
      </track>
<!--declare mixing of the additional audio from the separate mp3 file-->
      <track audio="1">
        <clip src="../mp3/mp3_single.mp3" length="00:00:00:50" flags="audio_silence"/>
        <clip src="../mp3/mp3_single.mp3" start="00:00:00:00" stop="00:00:02:00" />
        <clip src="../mp3/mp3_single.mp3" length="00:00:00:50" flags="audio_silence"/>
        <transition type="mix" start="00:00:00:50" stop="00:00:02:50"/>
      </track>
    </group>
  </timeline>
</timelines>

Als Ausgabe für diese XTL wird die Datei transitions_avc_mp4.mp4 erstellt, in der verschiedene Übergänge demonstriert werden:

  • Einblendung der ersten Datei für eine Dauer von 1 Sekunde ab 0 Sek.
  • Zwischen der ersten und der zweiten Datei für eine Dauer von 1 Sekunde auflösen, beginnend bei 1 Sekunde.
  • Ausblendung am Ende der zweiten Dateien für eine Dauer von 1 Sekunde, beginnend bei 2 Sekunden.
  • Überlagerndes Bild für die Dauer von 1 Sekunde, beginnend bei 1 Sekunde.
  • Audiotracks separat aus denselben Quelldateien hinzufügen
  • Quelldateien Mischen von Audio aus der externen MP3-Datei für eine Dauer von 2 Sekunden, beginnend bei 0,5 Sek.

Es findet eine Transcodierung statt, um eine Ausgabedatei mit den Parametern zu erstellen, die in der Referenzdatei test_video_1.mp4 angegeben sind.

Sie können die Ausgabedatei für dieses Projekt hier überprüfen:

 

HTML5 Online Video Editor als Beispiel

Die obige Beschreibung zeigt, dass das Video Editing SDK 5 für Linux eine Vielzahl nützlicher Funktionen enthält. Und das sind nicht nur potenzielle Funktionen – wir nutzen diese Funktionalität bereits. Das SDK enthält den HTML5 Video Editor sowohl als Online- als auch als On-Premise-Lösung. HTML5 Video Editor verwendet die SDK-Engine im Backend und unterstützt alle vom SDK bereitgestellten Funktionen.

HTML5 Video Editor-Web Demo:
https://smarteditingonline.solveigmm.com/

Bitte sehen Sie sich dieses Video an, um zu erfahren, wie Sie Videos online mit dem HTML5 Video Editor bearbeiten:

 

Dienstprogramme

Manchmal ist es möglicherweise weniger bequem, das XTL-Projekt zu erstellen, um eine bestimmte Aufgabe auszuführen. Für solche Fälle haben wir ein paar nützliche Dienstprogramme hinzugefügt, die Funktionen ausführen und kein XTL benötigen:

smm_ts2mp4

Es ist ein Befehlszeilendienstprogramm, das das mit Start-/Endzeiten angegebene Segment aus einer MPEG-TS-Datei mit AVC HEVC-Video und AAC-Audio in die MP4-Datei transmuxt. Ein Beispiel für die Verwendung des Dienstprogramms:

./smm_ts2mp4.sh -frameacc -source /samples/media/h264-ts/sample_h264_aac.ts -dest /tmp/output.mp4 -starttime 10000000 -endtime 20000000

-source – legt den Namen der MPEG-TS-Quelldatei fest
-dest – legt den Namen der ausgegebenen MP4-Datei fest
-starttime und -endtime geben die Start-/Stoppzeit des Intervalls in Einheiten von 100 Nanosekunden an
-frameacc – aktiviert die Frame-Genauigkeit für das Trimmen

smm_mp4transc

Es ist ein Befehlszeilentool, das eine MP4-Datei mit AVC- oder HEVC-Video und AAC-Audio mit genau demselben Codec und denselben Container Parametern transkodiert, die von der Referenz-MP4-Datei (AVC-Video, AAC-Audio) angegeben werden.
Ein Anwendungsbeispiel:

./smm_mp4transc.sh -sourcemp4 ../samples/media/mp4/test_video_1.mp4 -refmp4 ../samples/media/mp4/sample_mp4_hd.mp4 -destmp4 /tmp/output.mp4

-sourcemp4 – legt den Namen der MP4-Quelldatei fest
-refmp4 – gibt die Referenzdatei an, deren Parameter für die Kodierung verwendet werden
-destmp4 – legt den Namen der ausgegebenen MP4-Datei fest

Das folgende Bild zeigt die Parameter des Originalvideos
before transcoding

Hier ist eine Referenzdatei Parameter:
transcoding reference

 

Und das Bild unten zeigt die Informationen des transcodierten Videos

after transcoding

Wir können sehen, dass das transcodierte Video unterschiedliche Auflösungs-, Profil- und Level-Parameter usw. hat.

1.1 / 5 - 9