Chi siamo Prodotti Supporto Blog

Come modificare flussi HLS MP4 frammentati (M3U8) con l'SDK di editing video

image

 

  By Olga Krovyakova - modified October 2, 2023, created April 1, 2019

Con la nuova versione 4.2, l'SDK di editing video di Solveig Multimedia estende i formati supportati.
La versione attuale è generalmente focalizzata sui formati di streaming basati su online.

Video Editing SDK v.4.2 supporta i seguenti formati:

  • Stream HLS MP4 frammentati
  • File MP4 ospitati su HTTP
  • Video on-line di YouTube

In questo articolo troverai la dimostrazione del supporto dei flussi HLS MP4 frammentati.

 

PROVA GRATUITAMENTE l'SDK di editing video

 

Supporto per flussi HLS MP4 frammentati

Video Editing SDK v.4.2 supporta le seguenti funzionalità per i flussi HLS MP4 frammentati:

Riproduzione.

Puoi facilmente aprire il flusso Fragmented MP4 HLS M3U8 e lavorarci proprio come con i file locali. È possibile navigare nel file e riprodurlo. Solo le parti necessarie per l'anteprima dello streaming verranno scaricate sul tuo PC.

Per visualizzare l'anteprima del flusso HLS MP4 frammentato, puoi creare il seguente grafico:

Graph to preview the fragmented MP4 HLS stream

Il grafico contiene una sorgente SolveigMM HLS come filtro sorgente e un decoder video Elecard AVC come filtro decoder video. Entrambi i filtri sono forniti con l'SDK.

Utilizzare l'applicazione di esempio C++ Trim SMM per testare il supporto della riproduzione e del taglio dei flussi HLS MP4 frammentati.
Il seguente video mostra cosa puoi fare con i flussi HLS MP4 frammentati tramite Video Editing SDK v.4.2:

button

La modifica.

L'SDK di editing video è ora in grado di tagliare i flussi HLS MP4 frammentati. Il motore di editing video è il componente principale responsabile. Quello che devi fare è configurare il motore di editing video, specificare l'XTL, descrivendo l'attività corrente, quindi eseguirlo e attendere il completamento.

Il motore di editing video è un componente COM, che espone ITrimmerObjControle lo crei come segue:

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

Per configurare il motore di editing è necessario utilizzare l'interfaccia IModuleConfig :

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

È necessario utilizzare l'interfaccia ottenuta per impostare una stringa XTL, contenente l'attività di taglio e, facoltativamente, specificare il callback per tenere traccia dell'avanzamento dell'operazione:

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

var1.vt = VT_BSTR;
var1.bstrVal = ...; //stringa dell'attività in formato XTL
hr = m_pModuleCfgEditObj->SetValue( &SMAT_XTLString, &var1 );

var2.vt = VT_BYREF|VT_UI1;
var2.pbVal = (BYTE*) &m_xCTrimmerObjControlCB; //puntatore alla classe di callback
hr = m_pModuleCfgEditObj->SetValue( &SMAT_Callback, &var2 );

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

Si avvia il processo di ritaglio richiamando il metodo ITrimmerObjControl::Start() :

hr = m_pITrimmerObjControl->Start();

E durante il processo di ritaglio puoi chiedere al motore di editing un valore di avanzamento:

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

Una volta completata l'elaborazione, il motore di editing richiama ITrimmerObjControlCB::OnStop() dal callback.

Di seguito puoi vedere l'esempio della puntura XTL, che contiene un'attività di ritaglio:

<versione delle sequenze temporali="2">
 <sequenza temporale>
  <gruppo output="C:\hls\output.m3u8">
   <traccia video="1" audio="1" testo="1" bandiere="">
    <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">
   </traccia>
  </gruppo>
 </sequenza temporale>
</linea del tempo>

Il file di origine in questo XTL è il file HLS MP4 frammentato, ospitato su http://smarteditingonline.solveigmm.com. Due intervalli (rappresentati dai tag 'clip') verranno salvati dal file sorgente al file di output:

  • 160413589 - 229542097 UNITÀ (o 16.041 - 22.954 sec) e
  • 469719350 - 572525849 UNITÀ (o 46.971 - 57.252 sec)

Se il file sorgente contiene più flussi (ad esempio per valori di bitrate diversi), la struttura sorgente verrà ricreata.
Il file di test http://smarteditingonline.solveigmm.com/files/test_multibitrate.m3u8 contiene 2 flussi diversi con valori di bitrate diversi (vedere l'immagine sotto).

image

Dopo aver tagliato la cartella di output (C:\hls) conterrà 2 sottocartelle con entrambi gli stream e il file della playlist M3U8 (output.m3u8) con la descrizione delle configurazioni degli stream. L'immagine seguente mostra la struttura dell'HLS tagliato:

image

La struttura del file M3U8 di output:

#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 =NESSUNO
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 =NESSUNO
1000K/prog_index.m3u8

Il file ritagliato può essere trovato dal seguente collegamento:
http://smarteditingonline.solveigmm.com/sdkdemo/hls/output.m3u8

Fare riferimento ai codici sorgente dell'applicazione di esempio SMM Trim C++ per la descrizione dettagliata su come configurare ed eseguire il motore di editing video per eseguire l'operazione di ritaglio.

 

PROVA GRATUITAMENTE l'SDK di editing video

 

Domande frequenti

 

Cos'è un flusso HLS MP4 frammentato (M3U8)?

Uno streaming HLS MP4 frammentato è un popolare formato di streaming video che utilizza file MP4 frammentati e la playlist M3U8 per fornire contenuti video su Internet. Dividendo il video in segmenti più piccoli e fornendo funzionalità di streaming adattive, HLS garantisce una riproduzione fluida e compatibilità su un'ampia gamma di dispositivi e piattaforme.

Quindi, perché il file MP4 deve essere frammentato? Se desideri utilizzare HEVC/H.265 o AVC/H.264, devi utilizzarlo secondo gli standard di codifica video di Apple nelle specifiche di creazione HLS. I file MP4 frammentati sono compatibili anche con MPEG-DASH, un'alternativa a HLS, quindi puoi utilizzare gli stessi file; l'unica differenza è il file manifest (playlist). Ciò si traduce in minori requisiti di codifica e archiviazione, il che dovrebbe far risparmiare sulle spese.

 

Posso modificare flussi HLS MP4 frammentati con un software di editing video tradizionale?

La modifica di flussi HLS MP4 frammentati con un software di editing video tradizionale può essere complessa a causa della natura segmentata del formato. Il software tradizionale è progettato per funzionare con file video completi anziché con singoli segmenti. Per modificare i flussi HLS, si consiglia di convertirli in un singolo file video utilizzando strumenti specializzati prima di importarli nel software di editing tradizionale. Questo passaggio di conversione potrebbe comportare la perdita delle funzionalità di streaming adattivo e dei metadati associati allo streaming originale.

In sintesi, la modifica di flussi HLS MP4 frammentati con un software di editing video tradizionale comporta in genere la conversione dei segmenti in un file video completo prima della modifica. Questo processo semplifica la compatibilità, ma potrebbe comportare la perdita di alcune funzionalità specifiche di HLS.

 

Sono disponibili altre funzioni di modifica per i flussi HLS MP4 frammentati oltre al ritaglio?

Le seguenti funzionalità sono disponibili per i flussi HLS MP4 frammentati in Video Editing SDK v.4.2:
  • Riproduzione. Il flusso frammentato MP4 HLS M3U8 è altrettanto facile da accedere e da utilizzare quanto i file locali. Il file può essere riprodotto e sfogliato. Il tuo computer scaricherà solo le sezioni dello streaming necessarie per riprodurre l'anteprima.
  • Modifica. I flussi HLS MP4 frammentati possono essere modificati con l'uso di un kit di sviluppo software di editing video. Il cuore del sistema è il motore di editing video. Dopo aver configurato il motore di editing video e fornito l'XTL che descrive l'attività attuale, è possibile avviare il programma e attendere che finisca.

Per informazioni su come configurare ed eseguire il motore di editing video per il taglio, vedere i codici sorgente dell'applicazione di esempio SMM Trim C++.

 

Quali piattaforme sono supportate con l'SDK?

L'SDK di editing video è disponibile su piattaforme Windows, Linux, macOS e Android.

 

Esistono linee guida specifiche per la gestione di didascalie o sottotitoli in un flusso HLS MP4 frammentato?

Quando si gestiscono didascalie o sottotitoli in un flusso HLS MP4 frammentato, è importante utilizzare un formato di didascalie supportato (ad esempio, WebVTT o TTML), garantire l'allineamento con i segmenti video, includere una playlist multimediale di didascalie separata, considerare la sincronizzazione tra flussi di varianti e test di visualizzazione e accessibilità.

 

Posso monetizzare o inserire annunci in un flusso HLS MP4 frammentato?

Sì, è possibile monetizzare o inserire annunci in un flusso HLS MP4 frammentato. HLS supporta vari metodi per l'inserimento e la monetizzazione degli annunci. L'approccio più comune consiste nell'utilizzare marcatori di annunci all'interno dello stream che indicano dove inserire gli annunci. L'inserimento degli annunci può essere eseguito sia lato server che lato client.

 

 About the author

imageOlga Krovyakova is the Technical Support Manager in Solveig Multimedia since 2010.

She is the author of many text and video guidelines of company's products: Video Splitter, HyperCam, WMP Trimmer Plugin, AVI Trimmer+ and TriMP4.

She works with programs every day and therefore knows very well how they work. Сontact Olga via support@solveigmm.com if you have any questions. She will gladly assist you!