Cómo editar transmisiones HLS MP4 fragmentadas (M3U8) con el SDK de edición de video
By Olga Krovyakova - modified October 2, 2023, created April 1, 2019
Con la versión 4.2 recientemente lanzada, el SDK de edición de video de Solveig Multimedia amplía los formatos admitidos.
La versión actual generalmente se centra en los formatos de transmisión en línea.
Video Editing SDK v.4.2 admite los siguientes formatos:
- Transmisiones MP4 HLS fragmentadas
- Archivos MP4 alojados en HTTP
- Vídeos en línea de youtube
En este artículo encontrará la demostración de la compatibilidad con transmisiones HLS MP4 fragmentadas.
PRUEBA GRATIS el SDK de edición de vídeo
Compatibilidad con transmisiones fragmentadas de MP4 HLS
Video Editing SDK v.4.2 admite las siguientes funciones para transmisiones HLS MP4 fragmentadas:
Reproducción.
Puede abrir fácilmente la transmisión Fragmented MP4 HLS M3U8 y trabajar con ella como con los archivos locales. Puede navegar por el archivo y reproducirlo. Sólo las partes necesarias para la vista previa de la transmisión se descargarán a su PC.
Para obtener una vista previa de la transmisión HLS MP4 fragmentada, puede crear el siguiente gráfico:
El gráfico contiene una fuente SolveigMM HLS como filtro de fuente y un decodificador de video Elecard AVC como filtro decodificador de video. Ambos filtros se enviaron con el SDK.
Utilice la aplicación de muestra SMM Trim C++ para probar la compatibilidad con la reproducción y el recorte de transmisiones HLS MP4 fragmentadas.
El siguiente vídeo demuestra lo que puede hacer con las transmisiones HLS MP4 fragmentadas mediante el SDK de edición de vídeo v.4.2:
Edición.
El SDK de edición de video ahora es capaz de recortar las transmisiones HLS MP4 fragmentadas. Video Editing Engine es el componente principal a cargo. Lo que debe hacer es configurar el motor de edición de video, especificar el XTL, describir su tarea actual, luego ejecutarlo y esperar a que finalice.
Video Editing Engine es un componente COM que expone el ITrimmerObjControly lo crea de la siguiente manera:
hr = ::CoCreateInstance( CLSID_TrimmerObjControl, NULL, CLSCTX_INPROC, IID_ITrimmerObjControl, (void**)&m_pITrimmerObjControl ); |
Para configurar el motor de edición debe utilizar la interfaz IModuleConfig :
hr = m_pITrimmerObjControl->QueryInterface(IID_IModuleConfig, (void **)&m_pModuleCfgEditObj); |
Debe usar la interfaz obtenida para configurar una cadena XTL que contenga su tarea de recorte y, opcionalmente, especificar la devolución de llamada para rastrear el progreso de la operación:
VARIANTE var1 = {0}, var2 = {0}; var1.vt = VT_BSTR; var1.bstrVal = ...; //cadena de tarea en formato XTL hr = m_pModuleCfgEditObj->SetValue ( &SMAT_XTLString, &var1); var2.vt = VT_BYREF|VT_UI1; var2.pbVal = (BYTE*) &m_xCTrimmerObjControlCB; //puntero a la clase de devolución de llamada hr = m_pModuleCfgEditObj->SetValue ( &SMAT_Callback, &var2); VARIANTE var_res = {0}; hr = m_pModuleCfgEditObj->CommitChanges(&var_res); |
El proceso de recorte se inicia invocando el método ITrimmerObjControl::Start() :
hr = m_pITrimmerObjControl->Inicio(); |
Y durante el proceso de recorte puedes pedirle al motor de edición un valor de progreso:
VARIANTE var = {0}; hr = m_pModuleCfgEditObj->GetValue ( &SMAT_Progress, &var); |
Cuando finaliza el procesamiento, el motor de edición invoca ITrimmerObjControlCB::OnStop() desde la devolución de llamada.
A continuación puede ver el ejemplo de picadura XTL, que contiene una tarea de recorte:
<versión de líneas de tiempo = "2"> |
El archivo fuente en este XTL es el archivo HLS MP4 fragmentado, alojado en http://smarteditingonline.solveigmm.com. Se guardarán dos intervalos (representados por etiquetas 'clip') desde el archivo fuente en el archivo de salida:
- 160413589 - 229542097 UNIDADES (o 16.041 - 22.954 seg) y
- 469719350 - 572525849 UNIDADES (o 46.971 - 57.252 seg)
Si el archivo fuente contiene múltiples transmisiones (por ejemplo, para diferentes valores de tasa de bits), se recreará la estructura fuente.
El archivo de prueba http://smarteditingonline.solveigmm.com/files/test_multibitrate.m3u8 contiene 2 transmisiones diferentes con diferentes valores de tasa de bits (vea la imagen a continuación).
Después de recortar, la carpeta de salida (C:\hls) contendrá 2 subcarpetas con ambas transmisiones y el archivo de lista de reproducción M3U8 (output.m3u8) con la descripción de las configuraciones de las transmisiones. La siguiente imagen muestra la estructura del HLS recortado:
La estructura del archivo M3U8 de salida:
#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 = NINGUNO 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 = NINGUNO 1000K/prog_index.m3u8 |
El archivo recortado se puede encontrar en el siguiente enlace:
http://smarteditingonline.solveigmm.com/sdkdemo/hls/output.m3u8
Consulte los códigos fuente de la aplicación de muestra SMM Trim C++ para obtener una descripción detallada sobre cómo configurar y ejecutar el motor de edición de video para realizar la operación de recorte.
PRUEBA GRATIS el SDK de edición de vídeo
Preguntas frecuentes
Qué es una transmisión MP4 HLS fragmentada (M3U8)?
Entonces, ¿por qué el archivo MP4 debe estar fragmentado? Si desea utilizar HEVC/H.265 o AVC/H.264, debe usarlo de acuerdo con los estándares de codificación de video de Apple en su Especificación de creación HLS. Los archivos MP4 fragmentados también son compatibles con MPEG-DASH, una alternativa a HLS, por lo que puedes utilizar los mismos archivos; la única diferencia es el archivo de manifiesto (lista de reproducción). Esto da como resultado menos requisitos de codificación y almacenamiento, lo que debería ahorrar gastos.
Puedo editar transmisiones MP4 HLS fragmentadas con el software de edición de video tradicional?
En resumen, editar transmisiones MP4 HLS fragmentadas con software de edición de video tradicional generalmente implica convertir los segmentos en un archivo de video completo antes de editarlos. Este proceso simplifica la compatibilidad, pero puede resultar en la pérdida de ciertas características específicas de HLS.
Hay otras funciones de edición disponibles para transmisiones MP4 HLS fragmentadas además del recorte?
- Reproducción. La transmisión MP4 HLS M3U8 fragmentada es tan fácil de acceder y trabajar con ella como los archivos locales. El archivo se puede reproducir y explorar. Su computadora solo descargará las secciones de la transmisión necesarias para reproducir la vista previa.
- Edición. Las transmisiones MP4 HLS fragmentadas se pueden editar con el uso de un kit de desarrollo de software de edición de video. El núcleo del sistema es el motor de edición de vídeo. Después de configurar el motor de edición de video y proporcionar el XTL que describe la tarea actual, puede iniciar el programa y esperar a que finalice.
Para obtener información sobre cómo configurar y ejecutar el motor de edición de vídeo para recortar, consulte los códigos fuente de la aplicación de muestra SMM Trim C++.
Qué plataformas son compatibles con el SDK?
Existen pautas específicas para el manejo de subtítulos en una transmisión MP4 HLS fragmentada?
Puedo monetizar o insertar anuncios en una transmisión MP4 HLS fragmentada?
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!