Come modificare flussi HLS MP4 frammentati (M3U8) con l'SDK di editing video
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:
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:
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"> |
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).
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:
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)?
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?
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?
- 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?
Esistono linee guida specifiche per la gestione di didascalie o sottotitoli in un flusso HLS MP4 frammentato?
Posso monetizzare o inserire annunci in un flusso HLS MP4 frammentato?
Olga 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!