Über uns Produkte Support

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

image

 

   Von Olga Krovyakova - 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:

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

 

 

Ü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!