Como editar fluxos MP4 HLS fragmentados (M3U8) com o SDK de edição de vídeo
By Olga Krovyakova - modified October 2, 2023, created April 1, 2019
Com a recém-lançada versão 4.2, o SDK de edição de vídeo da Solveig Multimedia amplia os formatos suportados.
A versão atual geralmente se concentra nos formatos de stream online.
O SDK de edição de vídeo v.4.2 oferece suporte aos seguintes formatos:
- Fluxos MP4 HLS fragmentados
- Arquivos MP4 hospedados em HTTP
- Vídeos on-line do YouTube
Neste artigo você encontrará a demonstração do suporte a fluxos HLS MP4 fragmentados.
EXPERIMENTE o SDK de edição de vídeo GRATUITAMENTE
Suporte a fluxos MP4 HLS fragmentados
O SDK de edição de vídeo v.4.2 oferece suporte aos seguintes recursos para fluxos HLS MP4 fragmentados:
Reprodução.
Você pode abrir facilmente o fluxo fragmentado MP4 HLS M3U8 e trabalhar com ele da mesma forma que com os arquivos locais. Você pode navegar pelo arquivo e reproduzi-lo. Apenas as partes necessárias para a visualização do stream serão baixadas para o seu PC.
Para visualizar o fluxo HLS MP4 fragmentado, você pode construir o seguinte gráfico:
O gráfico contém uma fonte SolveigMM HLS como filtro de origem e um decodificador de vídeo Elecard AVC como filtro de decodificador de vídeo. Ambos os filtros são fornecidos com o SDK.
Use o aplicativo de amostra SMM Trim C++ para testar o suporte à reprodução e corte de fluxos MP4 HLS fragmentados.
O vídeo a seguir demonstra o que você pode fazer com os fluxos HLS MP4 fragmentados por meio do SDK de edição de vídeo v.4.2:
Edição.
O SDK de edição de vídeo agora é capaz de cortar fluxos HLS MP4 fragmentados. O mecanismo de edição de vídeo é o principal componente responsável. O que você precisa fazer é configurar o mecanismo de edição de vídeo, especificar o XTL, descrevendo sua tarefa atual, executá-lo e aguardar a conclusão.
Video Editing Engine é um componente COM, expondo o ITrimmerObjControl, e você o cria da seguinte maneira:
hr = ::CoCreateInstance( CLSID_TrimmerObjControl, NULL, CLSCTX_INPROC, IID_ITrimmerObjControl, (void**)&m_pITrimmerObjControl ); |
Para configurar o Motor de Edição você deve usar a interface IModuleConfig :
hr = m_pITrimmerObjControl->QueryInterface(IID_IModuleConfig, (void **)&m_pModuleCfgEditObj); |
Você deve usar a interface obtida para definir uma string XTL, contendo sua tarefa de corte e, opcionalmente, especificar o retorno de chamada para rastrear o progresso da operação:
VARIANTE var1 = {0}, var2 = {0}; var1.vt = VT_BSTR; var1.bstrVal = ...; //string de tarefa no formato XTL hr = m_pModuleCfgEditObj->SetValue( &SMAT_XTLString, &var1 ); var2.vt = VT_BYREF|VT_UI1; var2.pbVal = (BYTE*) &m_xCTrimmerObjControlCB; //ponteiro para a classe de retorno de chamada hr = m_pModuleCfgEditObj->SetValue( &SMAT_Callback, &var2 ); VARIANTE var_res = {0}; hr = m_pModuleCfgEditObj->CommitChanges(&var_res); |
Você inicia o processo de corte invocando o método ITrimmerObjControl::Start() :
hr = m_pITrimmerObjControl->Iniciar(); |
E durante o processo de corte você pode solicitar ao mecanismo de edição um valor de progresso:
VARIANTE var = {0}; hr = m_pModuleCfgEditObj->GetValue( &SMAT_Progress, &var ); |
Quando o processamento é concluído, o mecanismo de edição invoca o ITrimmerObjControlCB::OnStop() do retorno de chamada.
Abaixo você pode ver o exemplo do sting XTL, que contém uma tarefa de corte:
<versão dos cronogramas = "2"> |
O arquivo de origem neste XTL é o arquivo HLS MP4 fragmentado, hospedado em http://smarteditingonline.solveigmm.com. Dois intervalos (representados pelas tags 'clip') serão salvos do arquivo de origem no arquivo de saída:
- 160413589 - 229542097 UNIDADES (ou 16,041 - 22,954 seg) e
- 469719350 - 572525849 UNIDADES (ou 46,971 - 57,252 seg)
Se o arquivo de origem contiver vários fluxos (por exemplo, para diferentes valores de taxa de bits), a estrutura de origem será recriada.
O arquivo de teste http://smarteditingonline.solveigmm.com/files/test_multibitrate.m3u8 contém 2 fluxos diferentes com valores de taxa de bits diferentes (veja a imagem abaixo).
Após o corte, a pasta de saída (C:\hls) conterá 2 subpastas com ambos os streams e o arquivo da playlist M3U8 (output.m3u8) com a descrição das configurações dos streams. A imagem a seguir mostra a estrutura do HLS aparado:
A estrutura do arquivo M3U8 de saída:
#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 =NENHUMA 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 =NENHUMA 1000K/prog_index.m3u8 |
O arquivo cortado pode ser encontrado no seguinte link:
http://smarteditingonline.solveigmm.com/sdkdemo/hls/output.m3u8
Consulte os códigos-fonte do aplicativo de exemplo SMM Trim C++ para obter uma descrição detalhada sobre como configurar e executar o mecanismo de edição de vídeo para executar a operação de corte.
EXPERIMENTE o SDK de edição de vídeo GRATUITAMENTE
Perguntas frequentes
O que é um fluxo MP4 HLS fragmentado (M3U8)?
Então, por que o arquivo MP4 deve ser fragmentado? Se quiser usar HEVC/H.265 ou AVC/H.264, você deverá usá-lo de acordo com os padrões de codificação de vídeo da Apple em sua especificação de autoria HLS. Arquivos MP4 fragmentados também são compatíveis com MPEG-DASH, uma alternativa ao HLS, para que você possa utilizar os mesmos arquivos; a única diferença é o arquivo de manifesto (playlist). Isso resulta em menos requisitos de codificação e armazenamento, o que deve economizar despesas.
Posso editar fluxos MP4 HLS fragmentados com software de edição de vídeo tradicional?
Em resumo, a edição de fluxos MP4 HLS fragmentados com software de edição de vídeo tradicional normalmente envolve a conversão dos segmentos em um arquivo de vídeo completo antes da edição. Este processo simplifica a compatibilidade, mas pode resultar na perda de determinados recursos específicos do HLS.
Existem outras funções de edição disponíveis para fluxos HLS MP4 fragmentados além do corte?
- Reprodução. O fluxo fragmentado MP4 HLS M3U8 é precisamente tão fácil de acessar e trabalhar quanto arquivos locais. O arquivo pode ser reproduzido e navegado. Seu computador baixará apenas as seções do stream necessárias para reproduzir a visualização.
- Edição. Fluxos HLS MP4 fragmentados podem ser editados com o uso de um kit de desenvolvimento de software de edição de vídeo. O núcleo do sistema é o mecanismo de edição de vídeo. Depois de configurar o mecanismo de edição de vídeo e fornecer o XTL que descreve a tarefa atual, você pode iniciar o programa e aguardar sua conclusão.
Para obter informações sobre como configurar e executar o mecanismo de edição de vídeo para corte, consulte os códigos-fonte do aplicativo de exemplo SMM Trim C++.
Quais plataformas são suportadas pelo SDK?
Existem diretrizes específicas para lidar com legendas ou legendas em um fluxo MP4 HLS fragmentado?
Posso monetizar ou inserir anúncios em um fluxo MP4 HLS fragmentado?
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!