Über uns Produkte Support FAQ Bloggen

Wie kann man fragmentierte MP4-HLS-Streams (M3U8) mit dem Video Editing SDK bearbeiten?

image

 

   Von Olga Krovyakova - geändert am 2. Oktober 2023, erstellt am 1. April 2019

Mit der neu veröffentlichten Version 4.2 erweitert das Video Editing SDK von Solveig Multimedia die unterstützten Formate.

Die aktuelle Version konzentriert sich generell auf online-basierten Stream-Formate.

Das Videobearbeitungs-SDK v.4.2 unterstützt die folgenden Formate:

  • Fragmentierte MP4-HLS-Streams
  • HTTP-gehostete MP4-Dateien
  • YouTube-Online-Videos

In diesem Artikel finden Sie eine Demonstration der Unterstützung für fragmentierte MP4-HLS-Streams.

 

Video Editing SDK KOSTENLOS TESTEN

 

Unterstützung für fragmentierte MP4-HLS-Streams

Video Editing SDK v.4.2 unterstützt die folgenden Funktionen für fragmentierte MP4-HLS-Streams:

Wiedergabe.

Sie können den fragmentierten MP4 HLS M3U8-Stream ganz einfach öffnen und damit genauso wie mit lokalen Dateien arbeiten. Sie können durch die Datei navigieren und sie wiedergeben. Nur Teile, die für die Vorschau des Streams erforderlich sind, werden auf Ihren PC heruntergeladen.

Um eine Vorschau des fragmentierten MP4-HLS-Streams anzuzeigen, können Sie das folgende Diagramm erstellen:

Graph to preview the fragmented MP4 HLS stream 

Das Diagramm enthält eine SolveigMM HLS-Quelle als Quellfilter und einen Elecard AVC Video Decoder als Videodecoderfilter. Beide Filter werden mit dem SDK geliefert.

Verwenden Sie die SMM Trim C++-Beispielanwendung, um die Unterstützung der Wiedergabe und des Schneidens von fragmentierten MP4-HLS-Streams zu testen.

Das folgende Video zeigt, wie Sie mit dem Video Editing SDK v.4.2 mit den fragmentierten MP4-HLS-Streams alles machen können:

button

Bearbeitung.

Das Video Editing SDK ist jetzt in der Lage, fragmentierte MP4-HLS-Streams zu schneiden. Video Editing Engine ist die Hauptkomponente, die dafür verantwortlich ist. Was Sie tun müssen, ist die Videobearbeitungs-Engine zu konfigurieren, die XTL anzugeben, Ihre aktuelle Aufgabe zu beschreiben, sie dann auszuführen und auf den Abschluss zu warten.

Video Editing Engine ist eine COM-Komponente, die das ITrimmerObjControl freilegt, und Sie erstellen es wie folgt:

hr = ::CoCreateInstance( CLSID_TrimmerObjControl, NULL, CLSCTX_INPROC, IID_ITrimmerObjControl, (void**)&m_pITrimmerObjControl );

Um die Editing Engine zu konfigurieren, sollten Sie die IModuleConfig-Schnittstelle verwenden:

hr = m_pITrimmerObjControl->QueryInterface(IID_IModuleConfig, (void **)&m_pModuleCfgEditObj);

Sie müssen die erhaltene Schnittstelle verwenden, um eine XTL-Zeichenfolge festzulegen, die Ihre Schnittaufgabe enthält, und optional den callback angeben, um den Vorgangsfortschritt zu verfolgen:

VARIANT var1 = {0}, var2 = {0};

var1.vt = VT_BSTR;
var1.bstrVal = ...; //task string in XTL format
hr = m_pModuleCfgEditObj->SetValue( &SMAT_XTLString, &var1 );

var2.vt = VT_BYREF|VT_UI1;
var2.pbVal = (BYTE*) &m_xCTrimmerObjControlCB; //pointer to the callback class
hr = m_pModuleCfgEditObj->SetValue( &SMAT_Callback, &var2 );

VARIANT var_res = {0};
hr = m_pModuleCfgEditObj->CommitChanges(&var_res);

Sie starten den Trimmprozess, indem Sie die Methode ITrimmerObjControl::Start() aufrufen:

hr = m_pITrimmerObjControl->Start();

Während des Zuschneidevorgangs können Sie die Editing Engine nach einem Fortschrittswert fragen:

VARIANT var = {0};
hr = m_pModuleCfgEditObj->GetValue( &SMAT_Progress, &var );

Wenn die Verarbeitung abgeschlossen ist, ruft die Editing Engine das ITrimmerObjControlCB::OnStop() aus dem callback auf.

Unten sehen Sie das XTL-String-Beispiel, das eine Schnittaufgabe enthält:

<timelines version="2">
 <timeline>
  <group output="C:\hls\output.m3u8">
   <track video="1" audio="1" text="1" flags="">
    <clip src="http://smarteditingonline.solveigmm.com/files/test_multibitrate.m3u8"
                    start="160413589" stop="229542097" timeFormat="100ns_units">
    <clip src="http://smarteditingonline.solveigmm.com/files/test_multibitrate.m3u8"
                    start="469719350" stop="572525849" timeFormat="100ns_units">
   </track>
  </group>
 </timeline>
</timelines>

Die Quelldatei in dieser XTL ist die fragmentierte MP4-HLS-Datei, die auf http://smarteditingonline.solveigmm.com gehostet wird. Zwei Intervalle (dargestellt durch 'clip'-Tags) werden von der Quelldatei in die Ausgabedatei gespeichert:

  • 160413589 - 229542097 EINHEITEN (oder 16.041 - 22.954 Sek.) und
  • 469719350 - 572525849 EINHEITEN (oder 46,971 - 57,252 Sek.)

Wenn die Quelldatei mehrere Streams enthält (z. B. für unterschiedliche Bitratenwerte), wird die Quellstruktur neu erstellt.

Die Testdatei http://smarteditingonline.solveigmm.com/files/test_multibitrate.m3u8 enthält zwei verschiedene Streams mit unterschiedlichen Bitratenwerten (siehe Bild unten).

image

Nach dem Trimmen enthält der Ausgabeordner (C:\hls) zwei Unterordner mit beiden Streams und die M3U8-Playlist-Datei (output.m3u8) mit der Beschreibung der Stream-Konfigurationen. Das folgende Bild zeigt den Aufbau des beschnittenen HLS:

image

Die Struktur der ausgegebenen M3U8-Datei:

#EXTM3U

#EXT-X-STREAM-INF:AVERAGE-BANDWIDTH=1007161,BANDWIDTH=1275068,VIDEO-RANGE=SDR,CODECS="mp4a.40.2, avc1.42c01f",RESOLUTION=1280x720,FRAME-RATE=24.000,CLOSED-CAPTIONS=NONE
500K/prog_index.m3u8

#EXT-X-STREAM-INF:AVERAGE-BANDWIDTH=1564155,BANDWIDTH=2042932,VIDEO-RANGE=SDR,CODECS="mp4a.40.2, avc1.42c01f",RESOLUTION=1280x720,FRAME-RATE=24.000,CLOSED-CAPTIONS=NONE
1000K/prog_index.m3u8

Die zurechtgeschnittene Datei finden Sie unter folgendem Link:
http://smarteditingonline.solveigmm.com/sdkdemo/hls/output.m3u8

In den Quellcodes der SMM Trim C++-Beispielanwendung finden Sie eine detaillierte Beschreibung zum Konfigurieren und Ausführen der Videobearbeitungs-Engine zum Ausführen des Schnittvorgangs.

 

Video Editing SDK KOSTENLOS TESTEN

 

Häufig gestellte Fragen

 

Was ist ein fragmentierter MP4-HLS-Stream (M3U8)?

Ein fragmentierter MP4-HLS-Stream ist ein beliebtes Video-Streaming-Format, das fragmentierte MP4-Dateien und die M3U8-Wiedergabeliste verwendet, um Videoinhalte über das Internet bereitzustellen. Durch die Aufteilung des Videos in kleinere Segmente und die Bereitstellung adaptiver Streaming-Funktionen gewährleistet HLS eine reibungslose Wiedergabe und Kompatibilität über eine Vielzahl von Geräten und Plattformen hinweg.

Also, warum muss die MP4-Datei fragmentiert werden? Wenn Sie HEVC / H.265 oder AVC / H.264 verwenden möchten, müssen Sie es gemäß den Standards für die Videocodierung von Apple in ihrer HLS-Authoring-Spezifikation verwenden. Fragmentierte MP4-Dateien sind auch mit MPEG-DASH kompatibel, einer Alternative zu HLS, sodass Sie dieselben Dateien verwenden können. Der einzige Unterschied ist die Manifestdatei (Wiedergabeliste). Dies führt zu weniger Kodierungs- und Speicheranforderungen, was Kosten sparen sollte.

 

Kann ich fragmentierte MP4-HLS-Streams mit herkömmlicher Videobearbeitungssoftware bearbeiten?

Das Bearbeiten fragmentierter MP4-HLS-Streams mit herkömmlicher Videobearbeitungssoftware kann aufgrund der Segmentierung des Formats eine Herausforderung darstellen. Herkömmliche Software wurde entwickelt, um mit vollständigen Videodateien und nicht mit einzelnen Segmenten zu arbeiten. Um HLS-Streams zu bearbeiten, wird empfohlen, sie mit speziellen Tools in eine einzelne Videodatei zu konvertieren, bevor Sie sie in herkömmliche Bearbeitungssoftware importieren. Dieser Konvertierungsschritt kann zum Verlust von adaptiven Streaming-Funktionen und Metadaten führen, die dem ursprünglichen Stream zugeordnet sind.

Zusammenfassend lässt sich sagen, dass das Bearbeiten fragmentierter MP4-HLS-Streams mit herkömmlicher Videobearbeitungssoftware normalerweise das Konvertieren der Segmente in eine vollständige Videodatei vor dem Bearbeiten umfasst. Dieser Vorgang vereinfacht die Kompatibilität, kann jedoch zum Verlust bestimmter HLS-spezifischer Funktionen führen.

 

Gibt es neben dem Trimmen noch andere Bearbeitungsfunktionen für fragmentierte HLS-MP4-Streams?

Die folgenden Funktionen sind für fragmentierte MP4-HLS-Streams in Video Editing SDK v.4.2 verfügbar:
  • Wiedergabe. Der fragmentierte MP4 HLS M3U8-Stream ist genauso einfach zugänglich und zu bearbeiten wie lokale Dateien. Die Datei kann abgespielt und durchsucht werden. Ihr Computer lädt nur die Abschnitte des Streams herunter, die zum Abspielen der Vorschau erforderlich sind.
  • Bearbeitung. Fragmentierte MP4-HLS-Streams können mit einem Entwicklungskit für Videobearbeitungssoftware bearbeitet werden. Der Kern des Systems ist die Videobearbeitungs-Engine. Nachdem Sie die Videobearbeitungs-Engine eingerichtet und die XTL bereitgestellt haben, die die aktuelle Aufgabe beschreibt, können Sie das Programm starten und warten, bis es beendet ist.

Informationen zum Einrichten und Ausführen der Videobearbeitungs-Engine zum Trimmen finden Sie in den Quellcodes der Beispielanwendung SMM Trim C++.

 

Welche Plattformen werden mit dem SDK unterstützt?

Das Videobearbeitungs-SDK ist für Windows-, Linux-, macOS- und Android-Plattformen verfügbar.

 

Gibt es spezielle Richtlinien für den Umgang mit Bildunterschriften oder Untertiteln in einem fragmentierten MP4-HLS-Stream?

Beim Umgang mit Bildunterschriften oder Untertiteln in einem fragmentierten MP4-HLS-Stream ist es wichtig, ein unterstütztes Untertitelformat (z. B. WebVTT oder TTML) zu verwenden, die Ausrichtung mit Videosegmenten sicherzustellen, eine separate Wiedergabeliste für Untertitel Medien einzuschließen, die Synchronisierung über verschiedene Streams in Betracht zu ziehen und gründlich auf Anzeige und Zugänglichkeit zu testen.

 

Kann ich Anzeigen monetarisieren oder in einen fragmentierten MP4-HLS-Stream einfügen?

Kann ich Anzeigen monetarisieren oder in einen fragmentierten MP4-HLS-Stream einfügen?

 

Über die Autorin

imageOlga Krovyakova ist seit 2010 Technical Support Manager bei Solveig Multimedia.

Sie ist Autorin zahlreicher Text- und Video-Richtlinien für Produkte: Video Splitter, HyperCam, WMP Trimmer Plugin, AVI Trimmer+ und TriMP4.

Sie arbeitet jeden Tag mit Programmen und weiß daher sehr gut, wie sie funktionieren. Wenden Sie sich bei Fragen an Olga über support@solveigmm.com.

Sie hilft Ihnen gerne weiter!