Pular para o conteúdo

Perfis iniciais do Senta: 8 comandos FFmpeg prontos

Na primeira execução, o Senta cria automaticamente 8 perfis prontos - eles aparecem na página Profiles imediatamente. Esta página explica o comando ffmpeg de cada um: o que ele faz, por que cada flag está ali e quando o perfil é (ou não é) adequado para uso como está.

Antes de passar pelos perfis um a um, uma tabela com as flags que se repetem na maioria deles (a lista completa está na documentação oficial do ffmpeg):

FlagO que faz
-ySobrescreve a saída sem pedir confirmação.
-hide_bannerNão exibe o banner de compilação/versão do ffmpeg na inicialização.
-re / -readrate 1Lê a entrada na sua própria velocidade (real), em vez de o mais rápido possível - necessário para que um arquivo possa ser transmitido como uma fonte ao vivo.
-stream_loop -1Repete o arquivo de entrada - recomeça do início quando termina, indefinidamente.
-map 0:0 -map 0:1Inclui explicitamente as trilhas 0 (vídeo) e 1 (áudio) da entrada - uma garantia para o caso de o ffmpeg escolher as trilhas erradas.
-c:v, -c:aCodec de vídeo e de áudio, respectivamente. copy significa “passar o stream sem alterações, sem recodificar”.
-b:v, -b:aBitrate alvo de vídeo e de áudio.
-preset fastEquilíbrio entre velocidade e eficiência de compressão para codificadores por software (libx264/libx265) - fast troca um pouco de qualidade/tamanho por velocidade de codificação.
-profile:v mainO perfil Main do H.264 - bom equilíbrio entre compatibilidade com players e qualidade.
-filter:v yadifDesentrelaçamento - remove artefatos de entrelaçamento de fontes gravadas de forma entrelaçada.
-forced-idr 1Faz o codificador (relevante para NVENC) emitir quadros IDR completos nos pontos de keyframe, em vez de quadros I leves - importante se o stream for segmentado depois (HLS/DASH) ou alternado entre fontes.
-rTaxa de quadros da saída.
-gTamanho do GOP - o intervalo entre keyframes, em quadros.
-keyint_minIntervalo mínimo entre keyframes.
-f mpegtsFormato do contêiner de saída - MPEG-TS.
-gpuÍndice da GPU NVIDIA a usar na codificação por hardware NVENC.
${i} / ${o}As variáveis padrão de entrada/saída - veja Variáveis.
ffmpeg -y -hide_banner -i ${i} -map 0:0 -map 0:1 ${cv} ${gpu} -preset fast -profile:v main -filter:v yadif -forced-idr 1 -b:v 4M -c:a aac -b:a 128k -r 25 -g 8 -keyint_min 13 -f mpegts ${o}
WHERE
[
{
"desc": "gpu",
"data": {
"name": "GPU",
"description": "Select GPU which stream will use, set empty if you don't use GPU",
"command": "-gpu $value",
"default": ""
}
},
{
"desc": "cv",
"data": {
"name": "Video codec",
"description": "To copy original codec set copy",
"command": "-c:v $value",
"default": "",
"extension": {
"type": "select",
"options": ["h264_nvenc", "libx264", "libx265", "hevc_nvenc", "libaom-av1", "libvpx", "libvpx-vp9", "copy"]
}
}
}
]

Transcodificação HD com bitrate de 4 Mbps. Ao criar um stream, você pode escolher o codec de vídeo em uma lista suspensa - hardware (h264_nvenc, hevc_nvenc), software (libx264, libx265, libaom-av1, libvpx*) ou simplesmente copy para não recodificar o vídeo - além de qual GPU usar na transcodificação.

  • Vantagens: o mais flexível dos perfis iniciais - o codec é escolhido no momento de criar o stream, sem precisar editar o perfil.
  • Desvantagens: o desentrelaçamento (yadif) e as configurações de GOP estão fixos no perfil, não expostos como variáveis - se a fonte for progressiva ou você precisar de outro intervalo de keyframes, será preciso copiar e editar o perfil manualmente.
ffmpeg -re -y -hide_banner -i ${i} -map 0:0 -map 0:1 -c:v h264_nvenc -gpu 0 -preset fast -profile:v main -filter:v yadif -forced-idr 1 -b:v 1M -c:a aac -b:a 128k -r 25 -g 8 -keyint_min 13 -f mpegts ${o}

O mesmo conjunto de flags do HD, mas com bitrate fixo de 1 Mbps e sem variáveis - o codec (h264_nvenc) e a GPU (0) estão fixos diretamente no comando.

  • Vantagens: configuração mínima - pronto para uso imediato se você tem uma placa NVIDIA com NVENC.
  • Desvantagens: não executa de forma alguma sem uma GPU compatível com NVENC; para mudar o codec ou o índice da GPU é preciso editar o comando diretamente.
ffmpeg -re -y -hide_banner -stream_loop -1 -i ${i} -gpu 1 -r 30000/1001 -g 8 -keyint_min 13 -preset fast -profile:v main -filter:v yadif -forced-idr 1 -c:v h264_nvenc -b:v 4M -c:a aac -b:a 128k -f mpegts ${o} -r 30000/1001 -g 8 -keyint_min 13 -preset fast -profile:v main -filter:v yadif -forced-idr 1 -vf scale=568:-1 -c:v h264_nvenc -b:v 1M -c:a aac -b:a 128k -f mpegts ${o}

Um único processo ffmpeg com duas saídas ao mesmo tempo: um stream em resolução total a 4 Mbps e outro reduzido para 568px de largura (-vf scale=568:-1 - a altura é calculada automaticamente para preservar a proporção) a 1 Mbps. Ao criar um stream a partir deste perfil, o Senta mostra dois campos - Output #0 e Output #1, para a variante completa e a reduzida, respectivamente.

  • Vantagens: um comando em vez de dois streams separados - evita decodificar a entrada duas vezes (ela é decodificada uma só vez para as duas saídas).
  • Desvantagens: maior carga na GPU (as duas variantes são codificadas ao mesmo tempo), dependência total do NVENC e de -gpu 1 - o índice da GPU está fixo no comando, em vez de exposto como variável.
ffmpeg -readrate 1 -y -hide_banner -stream_loop -1 -vcodec copy -acodec aac -i ${i} ${o}

Copia o vídeo sem recodificar e converte a trilha de áudio para AAC - útil quando o áudio da fonte está em um formato não suportado por um player ou CDN (AC3, por exemplo) e você não quer recodificar o vídeo.

  • Vantagens: quase não usa CPU/GPU - apenas o áudio é recodificado.
  • Desvantagens: o bitrate do AAC não é definido explicitamente, então vale o padrão do ffmpeg, o que pode surpreender; se o áudio da fonte já for AAC, este perfil não é necessário.
// Add a logo to the video
ffmpeg -i ${i} ${logo} -filter_complex "[1][0]scale2ref=oh*mdar:ih*0.2[logo][video];[video][logo]overlay=(main_w-overlay_w)-${x}:${y}" -y ${o}
WHERE
[
{
"desc": "logo",
"data": {
"name": "Logo path",
"description": "Print the path to the image file with the logo",
"command": "-i $value",
"default": ""
}
},
{
"desc": "x",
"data": {
"name": "Shift along the X axis",
"description": "Offset from the top right corner along the X axis",
"command": "$value",
"default": ""
}
},
{
"desc": "y",
"data": {
"name": "Shift along the Y axis",
"description": "Offset from the top right corner along the Y axis",
"command": "$value",
"default": ""
}
}
]

Sobrepõe uma imagem (o logotipo) ao vídeo. O scale2ref primeiro redimensiona o logotipo conforme a altura do vídeo (ih*0.2 - 20% da altura do quadro, com a largura calculada automaticamente pelo scale2ref para preservar a proporção do logotipo); em seguida, o overlay o posiciona com um deslocamento x/y a partir do canto superior direito do quadro.

  • Vantagens: o caminho e a posição do logotipo são definidos por variáveis, sem precisar mexer no comando.
  • Desvantagens: o comando não tem -c:v/-c:a nem -f - o ffmpeg deduz o formato de saída pela extensão do arquivo em ${o} (por exemplo, output.ts); se o destino for um endereço de rede sem extensão (udp://...), você precisará adicionar um formato por conta própria, por exemplo -f mpegts. O logotipo só pode ser ancorado no canto superior direito - para outra posição é preciso alterar a fórmula do overlay.
// Remove sound from video
ffmpeg -i ${i} -an -c:v copy ${o}

Remove o áudio (-an - sem áudio) e copia o stream de vídeo sem alterações.

  • Vantagens: quase instantâneo - o vídeo não é recodificado.
  • Desvantagens: como o vídeo é uma cópia simples, este perfil não funciona se você também precisar mudar para um contêiner/codec incompatível com a fonte.
// Simple testcard with 8 color bars and 1kHz tone
// You don't need any input file, just run it
ffmpeg -re -f lavfi -i pal100bars=size=1920x1080:rate=25 -c:v libx264 -g 12 -b:v 2M -f mpegts ${o}

Gera uma imagem de teste - barras de cores PAL - por meio da fonte lavfi integrada do ffmpeg, sem nenhum arquivo de entrada.

  • Vantagens: não precisa de uma fonte de vídeo real - você pode verificar o caminho Senta → rede → player em um minuto.
  • Desvantagens: resolução, bitrate e taxa de quadros estão fixos no comando, não expostos como variáveis.
// Streaming a static file
ffmpeg -re -stream_loop -1 -i ${i} -vcodec mpeg4 -aspect 16:9 -f mpegts ${o}

Repete um arquivo local para simular uma fonte ao vivo - este é exatamente o perfil usado no exemplo do Início rápido.

  • Vantagens: a forma mais simples de transformar qualquer arquivo em um stream de teste em execução contínua.
  • Desvantagens: o codec (mpeg4) é antiquado em comparação com h264/h265 e menos eficiente em bitrate; a proporção é fixa em 16:9, independentemente do vídeo real.