Os marcadores SCTE são usados principalmente para inserir anúncios na saída de vídeo, indicando ao receptor (por exemplo, um servidor de streaming) em que momento inserir os anúncios e com qual duração. Isso permite que sistemas de terceiros selecionem dinamicamente anúncios a partir de um banco de dados. Você pode ler mais sobre o SCTE-35 em geral neste site.
Neste artigo:
→ Introdução
→ Exemplos de marcadores SCTE-35
→ Teste o marcador SCTE-35 localmente
→ Teste do marcador SCTE-35 no Nimble Streamer
→ Informações adicionais
Introdução
Recomendamos também nosso artigo geral sobre a SCTE.
Você pode associar o SCTE Marker a 4 objetos diferentes no PLAYDECK:
– Clipes (em qualquer posição)
– Blocos (Início e Fim)
– Sobreposições (Mostrar e Ocultar)
– Botões de ação
Em vez de fornecer um marcador SCTE predefinido, optamos por uma abordagem diferente: você mesmo deve criar seu próprio marcador SCTE. Isso pode exigir um certo tempo de adaptação, mas, no final das contas, é muito mais flexível. A vantagem é que você sempre terá compatibilidade com todos os receptores. Para coletar a duração do clipe e outras “variáveis”, fornecemos certos “placeholders”.
Observe que o SCTE precisa estar ativado nas opções do Stream:

Exemplos de marcadores SCTE-35
Vamos dar uma olhada em alguns exemplos de SCTE-35. Trata-se da forma mais utilizada do SCTE-35, conhecida como “emenda”.
Nota: O formato SCTE-35 apresentado aqui funciona melhor com o Nimble Streamer (veja abaixo). Dependendo do seu servidor de streaming, o formato pode ser diferente. Consulte o seu provedor.
Isso inserirá um anúncio e retornará automaticamente ao seu programa após o tempo definido. A duração será definida automaticamente pelo PLAYDECK para o clipe que estiver sendo reproduzido no momento. Esse valor pode ser substituído por {blockduration} ou por um valor inserido manualmente. Se você escolher um valor manual para a duração, a fórmula é: DURAÇÃO DO CLIPE multiplicada por 90000 e arredondada. A razão por trás disso é que 90000 é a escala de tempo padrão usada pela maioria dos sistemas SCTE. Exemplo: o clipe tem 12,4 segundos, portanto, a duração SCTE seria 1116000.
Em vez de enviar uma duração, você também pode enviar dois marcadores SCTE separados para iniciar e encerrar o anúncio. Eles são chamados de CUE-OUT (saída do programa para o anúncio) e CUE-IN (retorno ao programa).
Como você provavelmente já deve ter observado, a única diferença é que o “outOfNetworkIndicator” assume os valores 1 (CUE-OUT) e 0 (CUE-IN). O próprio sistema SCTE emparelha os dois marcadores com base no “spliceEventId”.
Nota: Os placeholders suportados são: {timestamp} {timestampunix} {airtimenext} {airtimenextunix} {plannednext} {plannednextunix} {clipid} {blockid} {blockduration} {clipduration}
Teste o marcador SCTE-35 localmente
Abra o PLAYDECK. Não é necessário carregar nenhum clipe por enquanto. Clique com o botão direito do mouse em qualquer botão de ação, crie uma nova ação e selecione COMANDOS/SCTE:

Insira a etiqueta de amostra SCTE-35 clicando em SCTE-35. Feche as janelas pop-up clicando em OK (duas vezes):

Agora podemos enviar uma tag SCTE-35 para qualquer fluxo compatível (UDP, DVB, SRT). Se você clicar na opção “Ação” agora, nada acontecerá, pois ainda não temos um fluxo.
Vamos criar um fluxo UDP de teste, no qual simplesmente enviaremos a saída para um arquivo, para não precisarmos nos preocupar com questões relacionadas ao servidor (por enquanto). Copie as configurações conforme indicado a seguir e inicie o fluxo clicando em INICIAR AGORA. Não se esqueça de habilitar o SCTE-35 na opção “Parâmetro”:

Queremos enviar agora nossa tag SCTE-35 de amostra para a transmissão. Então, feche as Configurações e clique no botão de ação várias vezes; depois, volte às Configurações e interrompa a transmissão com a opção “INTERROMPER AGORA”.
Suas tags do SCTE-35 foram registradas pelo PLAYDECK. Você pode verificar os registros voltando ao seu código do SCTE-35 no botão “Ação” e clicando em “ABRIR REGISTROS DE EVENTOS”:

Você também pode tornar visíveis as tags SCTE-35, que estão na sua transmissão gravada. Para isso, precisamos de uma ferramenta separada chamada “DVBInspector”. Essa ferramenta também requer o JAVA Runtime, portanto, baixe ambos:
Esta ferramenta requer o JAVA Runtime. Caso ainda não esteja instalado, você pode baixá-lo aqui:
https://www.oracle.com/java/technologies/downloads/
Agora, descompacte o arquivo “DVBinspector-1.18.0-dist.zip” (ou similar) e execute o “DVBinspector-1.18.0.jar”. Em seguida, arraste e solte seu arquivo TS no aplicativo. Abra a árvore da seguinte maneira para visualizar seu marcador SCTE.

Teste do marcador SCTE-35 no Nimble Streamer
O Nimble Streamer é o nosso serviço de streaming preferido. É econômico, fácil de configurar e manter, mas ainda assim oferece a complexidade necessária para casos de uso avançados:
Instale a versão de avaliação de 14 dias do Nimble no mesmo computador em que o PLAYDECK está sendo executado. Isso não é obrigatório, mas simplifica o processo, já que você não precisa se preocupar com a configuração de rede. O Nimble também solicitará que você crie uma conta no WMSPanel, que é uma ferramenta de configuração baseada na web para o Nimble, já que o Nimble Streamer em si é instalado sem interface de usuário.
INFORMAÇÃO: Para que esta amostra do SCTE-35 funcione, você NÃO precisa ter os plug-ins “Nimble Live Transcoder” ou “Nimble Advertizer” se estiver testando em uma instalação ativa. Eles vêm desativados por padrão na instalação de avaliação.
Depois de colocar o Nimble em funcionamento, há mais uma configuração que você precisa fazer manualmente. Abra o arquivo de configuração do servidor Nimble aqui:
c:\Arquivos de Programas\Nimble Streamer\conf\nimble.conf
No final deste arquivo, adicione as seguintes linhas e salve o arquivo.
scte35_processing_enabled = true
scte35_forwarding_enabled = true
hls_ad_scte35_forwarding_enabled = true
hls_ad_marker_format = cue
hls_ad_splice_out_cont_marker_enabled = true
Importante: Você precisa reiniciar o Nimble agora, seja reiniciando o computador ou reiniciando manualmente o serviço do Windows “Nimble Streamer”.
Aqui estão as linhas novamente, mas com comentários para você (não use essas):
scte35_processing_enabled = true // Ativa o módulo SCTE de forma geral. Necessário para todas as outras opções
scte35_forwarding_enabled = true // Permite a passagem dos marcadores SCTE-35 pelo Live Transcoder
hls_ad_scte35_forwarding_enabled = true // Ativa o encaminhamento de marcadores SCTE-35 para fluxos HLS
hls_ad_marker_format = cue // Configura o Nimble para usar marcadores CUE-OUT e CUE-IN
hls_ad_splice_out_cont_marker_enabled = true // Habilita a inserção automática de EXT-X-CUE-OUT-CONT
Agora vamos configurar seus Streams no WMSPanel:
Primeiro, vamos definir nosso fluxo de entrada. Vá até “Nimble Streamer” no menu, selecione “MPEGTS In” e clique no botão “Adicionar fluxo UDP”; em seguida, adicione o fluxo de entrada desta forma. Você pode usar qualquer outra porta, caso a 5001 já esteja em uso.

A seguir, vamos configurar o formato do fluxo de saída. Queremos usar o HLS aqui para demonstrar a conversão do marcador SCTE de UDP para HLS. Na mesma página, vá até “MPEGTS Out” e clique no botão “Adicionar fluxo de saída”, depois adicione da seguinte forma. Certifique-se de selecionar o fluxo de entrada como fonte de vídeo e áudio.

A seguir, continuamos nossa configuração no PLAYDECK. Acesse as configurações de saída de transmissão e altere a URL da transmissão para “udp://127.0.0.1:5001”.
INFORMAÇÃO: Você pode escolher qualquer codec de vídeo de sua preferência. Neste caso, escolhi o H.264 para que minha GPU NVIDIA faça a codificação, o que reduzirá o uso da CPU. Ative também o SCTE-35 na opção “Parâmetro”.

INFORMAÇÃO: Observe que o PLAYDECK não é capaz de transmitir HLS diretamente. Se você selecionar “Apple HTTP Live Streaming” como formato de transmissão, a saída será gravada em um arquivo. Portanto, você precisa especificar um destino de arquivo como “URL de transmissão”, por exemplo, “c:\Users\Public\Documents\stream.m3u8”. Em seguida, use esse arquivo para transmitir usando qualquer servidor de streaming. O PLAYDECK não é capaz de gravar tags HLS SCTE no arquivo de manifesto HLS (o arquivo *.3u8).
Em seguida, queremos que o PLAYDECK envie SCTE automaticamente, não apenas por meio de um botão, mas em função do clipe. Para isso, inserimos qualquer clipe e clicamos no ícone COMANDOS na barra de ferramentas; depois, adicionamos um novo comando, selecionamos PLAY TIME 0 e inserimos o exemplo SCTE-35:

INFORMAÇÃO: Você também pode adicionar marcadores SCTE a blocos, sobreposições e botões de ação.
Agora vamos começar: coloque o clipe em CUE e PLAY e inicie a transmissão nas configurações do PLAYDECK. Vá até o WMSPanel e abra, no menu “Nimble Streamer”, a opção “Live Streams”. Você verá agora 1 transmissão ao vivo em andamento. Clique nela e selecione o ponto de interrogação na extremidade direita, assim.

Na lista de “URLs para reproduzir”, selecione aquele com a extensão “playlist.m3u8” e clique em “Copiar”. Agora, cole essa URL em qualquer navegador que tenha um reprodutor HLS integrado ou instalado. Para este exemplo, usaremos o navegador Chrome com a seguinte extensão de reprodutor HLS:
https://chromewebstore.google.com/detail/hls-player-m3u8-streaming/eakdijdofmnclopcffkkgmndadhbjgka
Depois de inserir essa URL no Chrome, você verá a transmissão do PLAYDECK sendo reproduzida imediatamente. Agora vou mostrar como monitorar seu marcador SCTE. No Chrome, pressione F12 para abrir as Ferramentas do Desenvolvedor. Na parte superior, clique na guia “Rede”. Você verá vários arquivos “chunks.m3u8”, que fazem parte do seu stream. Clique em um dos arquivos Chunk (também chamados de Manifesto HLS) e selecione “Visualizar” ao lado dele. Agora você verá a tag SCTE HLS. Se ela não estiver lá, clique em outro chunk, pois enviamos o SCTE apenas no início do clipe.

É isso aí! Alcançamos nossos objetivos de teste. A seguir, mais informações que podem ser relevantes para se aprofundar no assunto.
Informações adicionais
Fazer login no PLAYDECK
Registramos todas as tags SCTE recebidas e enviadas. Isso também lhe dá a oportunidade de testar suas tags SCTE enviadas simplesmente conectando sua saída a uma entrada (tanto SDI quanto fluxos de dados) e deixando que o PLAYDECK detecte suas tags SCTE. Você pode abrir os arquivos de log pelo menu principal “Logs”:

Registro no Nimble Streamer
Se algo der errado ou não ocorrer como esperado, um bom ponto de partida é verificar os arquivos de log do Nimble. No Windows, o log pode ser encontrado aqui:
c:\Arquivos de Programas\Nimble Streamer\log
O registro em log está habilitado por padrão na versão de avaliação do Nimble, mas caso você precise ativá-lo, aqui estão as opções para o arquivo “nimble.conf”.
log_access = arquivo
logging = depuração
Agora abra o arquivo de log e procure por “SCTE”. Você poderá ver algo como isto, o que indica que há um erro de digitação no seu marcador SCTE no PLAYDECK:
[SCTE35] Tipo de comando de emenda não suportado = 6 para [mynewapp/mynewstream]
Se o seu SCTE Marker for analisado com sucesso no Nimble, ele terá a seguinte aparência:
[SCTE35] splice_insert: event_id=4157 oon=1 immediate=1 pts_adjustment=0 pts=0 actual_pts=202593600 duration=2707200 data=0xfc....
Ferramenta: TSDuck
Esta é uma coleção de ferramentas e plug-ins com uma ampla biblioteca para manipular fluxos de transporte MPEG. Com ela, você poderá inserir marcadores SCTE fora do PLAYDECK com base em um algoritmo ou outra lógica complexa.
Ferramenta: x9k3
Esta ferramenta também pode converter marcadores SCTE-35 em fluxos UDP ou arquivos MPEG-TS em tags HLS SCTE. Isso permite que você configure um servidor de streaming que não possua conversão automática de SCTE-35 para HLS.