Sobre Produtos Suporte Blog

Como editar fluxos MP4 HLS fragmentados (M3U8) com o SDK de edição de vídeo

image

 

  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:

Graph to preview the fragmented MP4 HLS stream

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:

button

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">
 <linha do tempo>
  <saída do grupo = "C:\hls\output.m3u8">
   <faixa video="1" audio="1" text="1" flags="">
    <clipe src = "http://smarteditingonline.solveigmm.com/files/test_multibitrate.m3u8"
                    start="160413589" stop="229542097" timeFormat="100ns_units">
    <clipe src = "http://smarteditingonline.solveigmm.com/files/test_multibitrate.m3u8"
                    start="469719350" stop="572525849" timeFormat="100ns_units">
   </acompanhar>
  </grupo>
 </linha do tempo>
</linhas do tempo>

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).

image

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:

image

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)?

Um fluxo MP4 HLS fragmentado é um formato popular de streaming de vídeo que utiliza arquivos MP4 fragmentados e a lista de reprodução M3U8 para fornecer conteúdo de vídeo pela Internet. Ao dividir o vídeo em segmentos menores e fornecer recursos de streaming adaptáveis, o HLS garante reprodução suave e compatibilidade em uma ampla variedade de dispositivos e plataformas.

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?

A edição de fluxos MP4 HLS fragmentados com software de edição de vídeo tradicional pode ser um desafio devido à natureza segmentada do formato. O software tradicional é projetado para funcionar com arquivos de vídeo completos, em vez de segmentos individuais. Para editar streams HLS, é recomendado convertê-los em um único arquivo de vídeo usando ferramentas especializadas antes de importá-los para um software de edição tradicional. Esta etapa de conversão pode resultar na perda de recursos de streaming adaptativos e metadados associados ao stream original.

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?

Os seguintes recursos estão disponíveis para fluxos HLS MP4 fragmentados no SDK de edição de vídeo v.4.2:
  • 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?

O SDK de edição de vídeo está disponível nas plataformas Windows, Linux, macOS e Android.

 

Existem diretrizes específicas para lidar com legendas ou legendas em um fluxo MP4 HLS fragmentado?

Ao lidar com legendas ou legendas em um fluxo MP4 HLS fragmentado, é importante usar um formato de legenda compatível (por exemplo, WebVTT ou TTML), garantir o alinhamento com segmentos de vídeo, incluir uma lista de reprodução de mídia de legenda separada, considerar a sincronização entre fluxos variantes e cuidadosamente teste de exibição e acessibilidade.

 

Posso monetizar ou inserir anúncios em um fluxo MP4 HLS fragmentado?

Sim, é possível monetizar ou inserir anúncios em um fluxo MP4 HLS fragmentado. O HLS oferece suporte a vários métodos de inserção e monetização de anúncios. A abordagem mais comum é usar marcadores de anúncios no stream que indicam onde os anúncios devem ser inseridos. A inserção de anúncios pode ser realizada no lado do servidor ou no lado do cliente.

 

 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!