FILE¶
media.ingest.file
Descrição¶
A entrada file transforma um arquivo MP4 ou Matroska local num stream ao vivo de verdade: o arquivo toca em loop. É uma ferramenta de produção para canais de vinheta: um canal técnico de «voltamos já», um canal de promoção e um fallback para quando as fontes caem.
Configuração¶
Configure o stream pela API do central. Trecho de configuração:
streams:
- name: promo
inputs:
- file:
path: /storage/promo.mp4
dvr: {}
Parâmetros¶
| Parâmetro | Descrição |
|---|---|
path |
caminho do arquivo MP4 ou Matroska no streamer. O processo Sapsan deve poder lê-lo. |
Opções de transporte¶
Sistema de arquivos local, contêiner MP4 ou Matroska. A reprodução é cíclica; não requer conexão de rede.
Codecs compatíveis¶
- H.264
- HEVC / H.265
- AV1
- JPEG (MP4)
- AAC
- AC-3
- E-AC-3
- MPEG Audio (MP4: Layer II / III; Matroska: MP3)
- Opus
MP4 e Matroska são contêineres. O leitor Matroska processa arquivos .mkv e .webm; os demais caminhos usam o leitor MP4. Matroska aceita vídeo H.264, HEVC e AV1; JPEG se aplica ao MP4. Em MP4, AV1 requer av01/av1C, Opus requer Opus/dOps e MPEG Audio é identificado por esds ou uma sample entry MP3. A sample entry mp4a por si só não significa AAC. Ler frames comprimidos do arquivo não os transcodifica automaticamente.
Comportamento em caso de erro¶
O estado da entrada e a causa da falha estão nas estatísticas do stream. Desconexão ou ausência de quadros usa os mecanismos de repetição e comutação para reserva.
Aplicação de alterações¶
Aplique as alterações pela API do central. Alterar o endereço ou o formato reabre a captura e pode interrompê-la durante a conexão. Verifique depois o estado e a chegada de quadros.
Contadores¶
As tabelas mostram os nomes exatos dos campos de estatísticas do protocolo, incluindo contadores de eventos e indicadores do valor atual. Campos zerados podem ser omitidos. API e Prometheus expõem projeções diferentes; uma única resposta da Admin API não contém necessariamente toda a lista. O detalhe depende da licença de contadores.
Totais comuns da entrada: bytes, frames, errors, warnings. Eles agregam dados do protocolo; não devem ser somados novamente aos contadores do protocolo.
FilePlay¶
| Campo | Tipo |
|---|---|
bytes |
counter |
frames |
counter |
memory_bytes |
gauge |
Outros detalhes¶
Como preparar o arquivo com ffmpeg¶
Para um arquivo MBR tocar sem emendas, todas as qualidades devem estar perfeitamente alinhadas: timestamps idênticos e keyframes nos mesmos lugares. Isso é conseguido com uma única passada de ffmpeg usando o filtro split:
ffmpeg -y -i source.mkv \
-filter_complex "\
[0:v:0]split=3[vhi][vme][vlo]; \
[vhi]scale=1920:1080:force_original_aspect_ratio=decrease,pad=1920:1080:(ow-iw)/2:(oh-ih)/2,setsar=1,fps=25,setpts=PTS-STARTPTS[v1]; \
[vme]scale=1280:720:force_original_aspect_ratio=decrease,pad=1280:720:(ow-iw)/2:(oh-ih)/2,setsar=1,fps=25,setpts=PTS-STARTPTS[v2]; \
[vlo]scale=960:540:force_original_aspect_ratio=decrease,pad=960:540:(ow-iw)/2:(oh-ih)/2,setsar=1,fps=25,setpts=PTS-STARTPTS[v3]" \
-map "[v1]" -c:v:0 libx264 -b:v:0 6000k -g:v:0 100 -keyint_min:v:0 100 \
-sc_threshold:v:0 0 -x264-params:v:0 "scenecut=0:open_gop=0" \
-map "[v2]" -c:v:1 libx264 -b:v:1 3000k -g:v:1 100 -keyint_min:v:1 100 \
-sc_threshold:v:1 0 -x264-params:v:1 "scenecut=0:open_gop=0" \
-map "[v3]" -c:v:2 libx264 -b:v:2 1200k -g:v:2 100 -keyint_min:v:2 100 \
-sc_threshold:v:2 0 -x264-params:v:2 "scenecut=0:open_gop=0" \
-map 0:a:0 -c:a:0 aac -b:a:0 192k -ac 2 -ar 48000 \
-metadata:s:v:0 title="1080p" -metadata:s:v:1 title="720p" -metadata:s:v:2 title="540p" \
-metadata:s:a:0 language=eng \
-movflags +faststart \
promo.mp4
O que importa aqui:
- uma única passada, uma única fonte,
split— todas as qualidades ganham timestamps idênticos; setpts=PTS-STARTPTS— a linha do tempo de cada qualidade começa no zero;- o mesmo
fpsem todas as qualidades; - GOP rígido:
-g=-keyint_min,-sc_threshold 0escenecut=0:open_gop=0— keyframes estritamente a cada N quadros e nos mesmos lugares; o codificador não pode inseri-los nas mudanças de cena; - áudio AAC a 48 kHz estéreo;
-movflags +faststart— o índice no começo do arquivo;-metadata:s:v title=.../language=...— as etiquetas de qualidade e os idiomas das faixas acabam nas playlists.
Um exemplo completo e funcional com várias faixas de áudio está no repositório do sapsan: storage/king.sh.
Verificação¶
Abra http://server/streaming/v/promo/index.m3u8 — na playlist master devem estar todas as qualidades, e a comutação entre elas não deve engasgar.