⚠️ Este é um site de tradução não oficial, sem relação com o projeto FFmpeg. Para informações oficiais, consulte a página original (https://ffmpeg.org/ffmpeg-codecs.html).

Documentação de codecs do FFmpeg

1 Descrição

Este documento descreve os codecs (decoders e encoders) fornecidos pela biblioteca libavcodec.

2 Opções de codec

A libavcodec oferece algumas opções globais genéricas que podem ser definidas em todos os encoders e decoders. Além disso, cada codec pode oferecer suporte às chamadas opções privadas, específicas de um determinado codec.

Às vezes, uma opção global pode afetar apenas um tipo específico de codec, podendo não fazer sentido ou ser ignorada por outro, então é preciso conhecer o significado das opções especificadas. Além disso, algumas opções servem apenas para decodificação ou codificação.

As opções podem ser definidas especificando -option value nas ferramentas do FFmpeg, ou definindo o valor explicitamente nas opções de AVCodecContext, ou ainda usando a API libavutil/opt.h para uso via programação.

Segue a lista de opções compatíveis:

b integer (encoding,audio,video)

Define a taxa de bits em bits/s. O valor padrão é 200K.

ab integer (encoding,audio)

Define a taxa de bits do áudio (em bits/s). O valor padrão é 128K.

bt integer (encoding,video)

Define a tolerância de taxa de bits do vídeo (em bits/s). No modo de 1 passada, a tolerância de taxa de bits especifica o quanto o controle de taxa pode se afastar do valor médio de taxa de bits desejado. Isso não está relacionado à taxa de bits mínima/máxima. Reduzir demais a tolerância tem efeito negativo na qualidade.

flags flags (decoding/encoding,audio,video,subtitles)

Define flags genéricas.

Valores possíveis:

‘mv4’

Usa quatro vetores de movimento por macrobloco (mpeg4).

‘qpel’

Usa compensação de movimento de 1/4 de pixel.

‘loop’

Usa o filtro de loop.

‘qscale’

Usa qscale fixo.

‘pass1’

Usa o controle de taxa interno de 2 passadas no modo de primeira passada.

‘pass2’

Usa o controle de taxa interno de 2 passadas no modo de segunda passada.

‘gray’

Decodifica/codifica somente em escala de cinza.

‘psnr’

Define as variáveis error[?] durante a codificação.

‘truncated’

O bitstream de entrada pode estar truncado aleatoriamente.

‘drop_changed’

Não gera quadros cujos parâmetros diferem do primeiro quadro decodificado no fluxo. O erro AVERROR_INPUT_CHANGED é retornado quando um quadro é descartado.

‘ildct’

Usa DCT entrelaçada.

‘low_delay’

Força baixa latência.

‘global_header’

Coloca os cabeçalhos globais no extradata em vez de em cada keyframe.

‘bitexact’

Grava apenas dados independentes de plataforma, compilação e tempo (exceto o (I)DCT). Isso garante que os checksums de arquivos e dados sejam reprodutíveis e coincidam entre plataformas. Seu uso principal é para testes de regressão.

‘aic’

Aplica a codificação intra avançada do H263 / predição AC do mpeg4.

‘ilme’

Aplica estimativa de movimento entrelaçada.

‘cgop’

Usa GOP fechado.

‘output_corrupt’

Gera até mesmo quadros potencialmente corrompidos.

time_base rational number

Define a base de tempo do codec.

É a unidade fundamental de tempo (em segundos) em que os timestamps dos quadros são representados. Para conteúdo com fps fixo, a timebase deve ser 1 / frame_rate e os incrementos de timestamp devem ser sempre 1.

g integer (encoding,video)

Define o tamanho do grupo de imagens (GOP). O valor padrão é 12.

ar integer (decoding/encoding,audio)

Define a taxa de amostragem do áudio (em Hz).

ac integer (decoding/encoding,audio)

Define o número de canais de áudio.

cutoff integer (encoding,audio)

Define a largura de banda de corte. (Compatível apenas com determinados encoders; consulte as respectivas seções da documentação.)

frame_size integer (encoding,audio)

Define o tamanho de quadro do áudio.

Cada quadro enviado, exceto o último, deve conter exatamente frame_size amostras por canal. Pode ser 0 quando o codec tem CODEC_CAP_VARIABLE_FRAME_SIZE definido; nesse caso, o tamanho do quadro não é restrito. Alguns decoders definem esse valor para indicar tamanho de quadro constante.

frame_number integer

Define o número do quadro.

delay integer qcomp float (encoding,video)

Define a compressão da escala de quantização de vídeo (VBR). É usada como constante na equação de controle de taxa. Faixa recomendada para o rc_eq padrão: 0.0-1.0.

qblur float (encoding,video)

Define o desfoque da escala de quantização de vídeo (VBR).

qmin integer (encoding,video)

Define a escala de quantização mínima de vídeo (VBR). Deve estar entre -1 e 69; o valor padrão é 2.

qmax integer (encoding,video)

Define a escala de quantização máxima de vídeo (VBR). Deve estar entre -1 e 1024; o valor padrão é 31.

qdiff integer (encoding,video)

Define a diferença máxima entre as escalas de quantização (VBR).

bf integer (encoding,video)

Define o número máximo de quadros B entre quadros que não são B.

Deve ser um número inteiro entre -1 e 16. 0 significa que os quadros B estão desativados. Se o valor -1 for usado, um valor automático é escolhido dependendo do encoder.

O valor padrão é 0.

b_qfactor float (encoding,video)

Define o fator QP entre quadros P e B.

codec_tag integer bug flags (decoding,video)

Aplica soluções alternativas para bugs de encoder não detectados automaticamente.

Valores possíveis:

‘autodetect’ ‘xvid_ilace’

bug de entrelaçamento do Xvid (autodetectado se fourcc==XVIX)

‘ump4’

(autodetectado se fourcc==UMP4)

‘no_padding’

bug de padding (autodetectado)

‘amv’ ‘qpel_chroma’ ‘std_qpel’

qpel padrão antigo (autodetectado por fourcc/versão)

‘qpel_chroma2’ ‘direct_blocksize’

bug de direct-qpel-blocksize (autodetectado por fourcc/versão)

‘edge’

bug de padding de borda (autodetectado por fourcc/versão)

‘hpel_chroma’ ‘dc_clip’ ‘ms’

Solução alternativa para vários bugs em decoders defeituosos da Microsoft.

‘trunc’

quadros truncados

strict integer (decoding/encoding,audio,video)

Especifica com que rigor seguir os padrões.

Valores possíveis:

‘very’

está em conformidade estrita com uma versão mais antiga e mais rigorosa da especificação ou do software de referência

‘strict’

está em conformidade estrita com tudo o que consta na especificação, não importam as consequências

‘normal’ ‘unofficial’

permite extensões não oficiais

‘experimental’

permite recursos experimentais não padronizados, além de decoders e encoders experimentais (inacabados/em desenvolvimento/não totalmente testados). Observação: decoders experimentais podem representar um risco de segurança; não os use para decodificar entradas não confiáveis.

b_qoffset float (encoding,video)

Define o offset de QP entre quadros P e B.

err_detect flags (decoding,audio,video)

Define as flags de detecção de erros.

Valores possíveis:

‘crccheck’

verifica os CRCs incorporados

‘bitstream’

detecta desvios da especificação do bitstream

‘buffer’

detecta comprimento de bitstream incorreto

‘explode’

interrompe a decodificação ao detectar um erro pequeno

‘ignore_err’

ignora erros de decodificação e continua decodificando. É útil quando você deseja analisar o conteúdo de um vídeo e, portanto, quer que tudo seja decodificado independentemente do que ocorra. Essa opção não resultará em um vídeo agradável de assistir em caso de erros.

‘careful’

considera como erros aquilo que viola a especificação e que não foi observado na prática

‘compliant’

considera como erros todas as não conformidades com a especificação

‘aggressive’

considera como erro aquilo que um encoder sensato não deveria fazer

has_b_frames integer block_align integer rc_override_count integer maxrate integer (encoding,audio,video)

Define a tolerância máxima de taxa de bits (em bits/s). Exige que bufsize esteja definido.

minrate integer (encoding,audio,video)

Define a tolerância mínima de taxa de bits (em bits/s). É mais útil ao configurar uma codificação CBR. Em outros casos, tem pouca utilidade.

bufsize integer (encoding,audio,video)

Define o tamanho do buffer de controle de taxa (em bits).

i_qfactor float (encoding,video)

Define o fator QP entre quadros P e I.

i_qoffset float (encoding,video)

Define o offset de QP entre quadros P e I.

dct integer (encoding,video)

Define o algoritmo de DCT.

Valores possíveis:

‘auto’

seleciona automaticamente um bom algoritmo (padrão)

‘fastint’

inteiro rápido

‘int’

inteiro preciso

‘mmx’ ‘altivec’ ‘faan’

DCT AAN em ponto flutuante

lumi_mask float (encoding,video)

Comprime áreas claras com mais intensidade que as áreas de tom médio.

tcplx_mask float (encoding,video)

Define o mascaramento de complexidade temporal.

scplx_mask float (encoding,video)

Define o mascaramento de complexidade espacial.

p_mask float (encoding,video)

Define o mascaramento inter.

dark_mask float (encoding,video)

Comprime áreas escuras com mais intensidade que as áreas de tom médio.

idct integer (decoding/encoding,video)

Seleciona a implementação de IDCT.

Valores possíveis:

‘auto’ ‘int’ ‘simple’ ‘simplemmx’ ‘simpleauto’

Escolhe automaticamente uma IDCT compatível com a simple

‘arm’ ‘altivec’ ‘sh4’ ‘simplearm’ ‘simplearmv5te’ ‘simplearmv6’ ‘simpleneon’ ‘xvid’ ‘faani’

IDCT AAN em ponto flutuante

slice_count integer ec flags (decoding,video)

Define a estratégia de ocultação de erros.

Valores possíveis:

‘guess_mvs’

busca iterativa de vetores de movimento (MV) (lenta)

‘deblock’

usa um filtro de deblocagem forte para MBs danificados

‘favor_inter’

favorece a predição a partir do quadro anterior em vez do atual

bits_per_coded_sample integer aspect rational number (encoding,video)

Define a proporção de aspecto de amostra.

sar rational number (encoding,video)

Define a proporção de aspecto de amostra. É um alias de aspect.

debug flags (decoding/encoding,audio,video,subtitles)

Exibe informações de depuração específicas.

Valores possíveis:

‘pict’

informações da imagem

‘rc’

controle de taxa

‘bitstream’ ‘mb_type’

tipo de macrobloco (MB)

‘qp’

parâmetro de quantização por bloco (QP)

‘dct_coeff’ ‘green_metadata’

exibe metadados de complexidade para o próximo quadro, GoP ou para uma duração determinada.

‘skip’ ‘startcode’ ‘er’

reconhecimento de erros

‘mmco’

operações de controle de gerenciamento de memória (H.264)

‘bugs’ ‘buffers’

alocações de buffer de imagem

‘thread_ops’

operações de thread

‘nomc’

ignora a compensação de movimento

cmp integer (encoding,video)

Define a função de comparação de estimativa de movimento em pixel inteiro.

Valores possíveis:

‘sad’

soma das diferenças absolutas, rápido (padrão)

‘sse’

soma dos erros quadráticos

‘satd’

soma das diferenças absolutas transformadas por Hadamard

‘dct’

soma das diferenças absolutas transformadas por DCT

‘psnr’

soma dos erros de quantização quadráticos (evitar, baixa qualidade)

‘bit’

número de bits necessários para o bloco

‘rd’

ótimo em taxa-distorção, lento

‘zero’

0

‘vsad’

soma das diferenças verticais absolutas

‘vsse’

soma das diferenças verticais quadráticas

‘nsse’

soma das diferenças quadráticas que preserva o ruído

‘w53’

wavelet 5/3, usado somente no snow

‘w97’

wavelet 9/7, usado somente no snow

‘dctmax’ ‘chroma’ subcmp integer (encoding,video)

Define a função de comparação de estimativa de movimento em subpixel.

Valores possíveis:

‘sad’

soma das diferenças absolutas, rápido (padrão)

‘sse’

soma dos erros quadráticos

‘satd’

soma das diferenças absolutas transformadas por Hadamard

‘dct’

soma das diferenças absolutas transformadas por DCT

‘psnr’

soma dos erros de quantização quadráticos (evitar, baixa qualidade)

‘bit’

número de bits necessários para o bloco

‘rd’

ótimo em taxa-distorção, lento

‘zero’

0

‘vsad’

soma das diferenças verticais absolutas

‘vsse’

soma das diferenças verticais quadráticas

‘nsse’

soma das diferenças quadráticas que preserva o ruído

‘w53’

wavelet 5/3, usado somente no snow

‘w97’

wavelet 9/7, usado somente no snow

‘dctmax’ ‘chroma’ mbcmp integer (encoding,video)

Define a função de comparação de macroblocos.

Valores possíveis:

‘sad’

soma das diferenças absolutas, rápido (padrão)

‘sse’

soma dos erros quadráticos

‘satd’

soma das diferenças absolutas transformadas por Hadamard

‘dct’

soma das diferenças absolutas transformadas por DCT

‘psnr’

soma dos erros de quantização quadráticos (evitar, baixa qualidade)

‘bit’

número de bits necessários para o bloco

‘rd’

ótimo em taxa-distorção, lento

‘zero’

0

‘vsad’

soma das diferenças verticais absolutas

‘vsse’

soma das diferenças verticais quadráticas

‘nsse’

soma das diferenças quadráticas que preserva o ruído

‘w53’

wavelet 5/3, usado somente no snow

‘w97’

wavelet 9/7, usado somente no snow

‘dctmax’ ‘chroma’ ildctcmp integer (encoding,video)

Define a função de comparação de DCT entrelaçada.

Valores possíveis:

‘sad’

soma das diferenças absolutas, rápido (padrão)

‘sse’

soma dos erros quadráticos

‘satd’

soma das diferenças absolutas transformadas por Hadamard

‘dct’

soma das diferenças absolutas transformadas por DCT

‘psnr’

soma dos erros de quantização quadráticos (evitar, baixa qualidade)

‘bit’

número de bits necessários para o bloco

‘rd’

ótimo em taxa-distorção, lento

‘zero’

0

‘vsad’

soma das diferenças verticais absolutas

‘vsse’

soma das diferenças verticais quadráticas

‘nsse’

soma das diferenças quadráticas que preserva o ruído

‘w53’

wavelet 5/3, usado somente no snow

‘w97’

wavelet 9/7, usado somente no snow

‘dctmax’ ‘chroma’ dia_size integer (encoding,video)

Define o tipo e o tamanho do diamante para a estimativa de movimento.

‘(1024, INT_MAX)’

estimativa de movimento completa (a mais lenta)

‘(768, 1024]’

estimativa de movimento umh

‘(512, 768]’

estimativa de movimento hex

‘(256, 512]’

estimativa de movimento em diamante l2s

‘[2,256]’

estimativa de movimento em diamante var

‘(-1, 2)’

estimativa de movimento em diamante pequeno

‘-1’

estimativa de movimento em diamante funny

‘(INT_MIN, -1)’

estimativa de movimento em diamante sab

last_pred integer (encoding,video)

Define a quantidade de preditores de movimento provenientes do quadro anterior.

precmp integer (encoding,video)

Define a função de comparação da pré-estimativa de movimento.

Valores possíveis:

‘sad’

soma das diferenças absolutas, rápido (padrão)

‘sse’

soma dos erros quadráticos

‘satd’

soma das diferenças absolutas transformadas por Hadamard

‘dct’

soma das diferenças absolutas transformadas por DCT

‘psnr’

soma dos erros de quantização quadráticos (evitar, baixa qualidade)

‘bit’

número de bits necessários para o bloco

‘rd’

ótimo em taxa-distorção, lento

‘zero’

0

‘vsad’

soma das diferenças verticais absolutas

‘vsse’

soma das diferenças verticais quadráticas

‘nsse’

soma das diferenças quadráticas que preserva o ruído

‘w53’

wavelet 5/3, usado somente no snow

‘w97’

wavelet 9/7, usado somente no snow

‘dctmax’ ‘chroma’ pre_dia_size integer (encoding,video)

Define o tipo e o tamanho do diamante para a pré-passada de estimativa de movimento.

subq integer (encoding,video)

Define a qualidade da estimativa de movimento em subpixel.

me_range integer (encoding,video)

Define o limite do intervalo de vetores de movimento (1023 para o reprodutor DivX).

global_quality integer (encoding,audio,video) slice_flags integer mbd integer (encoding,video)

Define o algoritmo de decisão de macrobloco (modo de alta qualidade).

Valores possíveis:

‘simple’

usa mbcmp (padrão)

‘bits’

usa o menor número de bits

‘rd’

usa a melhor taxa-distorção

rc_init_occupancy integer (encoding,video)

Define o número de bits que devem ser carregados no buffer de rc antes de a decodificação começar.

flags2 flags (decoding/encoding,audio,video,subtitles)

Valores possíveis:

‘fast’

Permite truques de aceleração não compatíveis com a especificação.

‘noout’

Ignora a codificação do bitstream.

‘ignorecrop’

Ignora as informações de corte do sps.

‘local_header’

Coloca os cabeçalhos globais em cada keyframe em vez de no extradata.

‘chunks’

Os dados do quadro podem ser divididos em vários chunks.

‘showall’

Exibe todos os quadros anteriores ao primeiro keyframe.

‘export_mvs’

Exporta os vetores de movimento para os side data de quadro (ver AV_FRAME_DATA_MOTION_VECTORS) nos codecs que oferecem suporte a isso. Veja também doc/examples/export_mvs.c.

‘skip_manual’

Não ignora amostras e exporta as informações de omissão como side data de quadro.

‘ass_ro_flush_noop’

Não redefine o campo ReadOrder do ASS ao executar o flush.

‘icc_profiles’

Gera/analisa perfis ICC incorporados a partir de/para tags de colorimetria.

‘fixed_frame_size’

Força os encoders de áudio a usar um tamanho de quadro fixo.

export_side_data flags (decoding/encoding,audio,video,subtitles)

Valores possíveis:

‘mvs’

Exporta os vetores de movimento para os side data de quadro (ver AV_FRAME_DATA_MOTION_VECTORS) nos codecs que oferecem suporte a isso. Veja também doc/examples/export_mvs.c.

‘prft’

Exporta o Producer Reference Time do encoder para os side data de pacote (ver AV_PKT_DATA_PRFT) nos codecs que oferecem suporte a isso.

‘venc_params’

Exporta os parâmetros de codificação de vídeo por meio de side data de quadro (ver AV_FRAME_DATA_VIDEO_ENC_PARAMS) nos codecs que oferecem suporte a isso. No momento, são o H.264 e o VP9.

‘film_grain’

Exporta os parâmetros de grão de película por meio de side data de quadro (veja AV_FRAME_DATA_FILM_GRAIN_PARAMS). Atualmente compatível com os decoders de AV1.

‘enhancements’

Exporta metadados de aprimoramento de imagem por meio de side data de quadro, por exemplo LCEVC (veja AV_FRAME_DATA_LCEVC).

threads integer (decoding/encoding,video)

Define o número de threads a ser usado, caso a implementação do codec selecionado ofereça suporte a multithreading.

Valores possíveis:

‘auto, 0’

seleciona automaticamente o número de threads a definir

O valor padrão é ‘auto’.

dc integer (encoding,video)

Define intra_dc_precision.

nssew integer (encoding,video)

Define o peso de nsse.

skip_top integer (decoding,video)

Define o número de linhas de macroblocos que são ignoradas na parte superior.

skip_bottom integer (decoding,video)

Define o número de linhas de macroblocos que são ignoradas na parte inferior.

profile integer (encoding,audio,video)

Define o perfil de codec do encoder. O valor padrão é ‘unknown’. Os perfis específicos de cada encoder estão documentados na documentação do respectivo encoder.

level integer (encoding,audio,video)

Define o nível do encoder. Esse nível depende do codec específico e pode corresponder ao nível do perfil. Por padrão é definido como ‘unknown’.

Valores possíveis:

‘unknown’ lowres integer (decoding,audio,video)

Decodifica em resoluções de 1=1/2, 2=1/4, 3=1/8.

mblmin integer (encoding,video)

Define o fator lagrangiano mínimo de macrobloco (VBR).

mblmax integer (encoding,video)

Define o fator lagrangiano máximo de macrobloco (VBR).

skip_loop_filter integer (decoding,video) skip_idct integer (decoding,video) skip_frame integer (decoding,video)

Faz o decoder descartar o processamento dependendo do tipo de quadro selecionado pelo valor da opção.

skip_loop_filter ignora a filtragem de loop do quadro, skip_idct ignora a IDCT/desquantização do quadro e skip_frame ignora a decodificação.

Valores possíveis:

‘none’

Não descarta nenhum quadro.

‘default’

Descarta quadros inúteis, como os de tamanho 0.

‘noref’

Descarta todos os quadros que não são de referência.

‘bidir’

Descarta todos os quadros bidirecionais.

‘nokey’

Descarta todos os quadros exceto os keyframes.

‘nointra’

Descarta todos os quadros exceto os quadros I.

‘all’

Descarta todos os quadros.

O valor padrão é ‘default’.

bidir_refine integer (encoding,video)

Refina os dois vetores de movimento usados nos macroblocos bidirecionais.

keyint_min integer (encoding,video)

Define o intervalo mínimo entre quadros IDR.

refs integer (encoding,video)

Define os quadros de referência a considerar para a compensação de movimento.

trellis integer (encoding,audio,video)

Define a quantização ótima de taxa-distorção.

mv0_threshold integer (encoding,video) compression_level integer (encoding,audio,video) bits_per_raw_sample integer channel_layout integer (decoding/encoding,audio)

Consulte (ffmpeg-utils)the Channel Layout section in the ffmpeg-utils(1) manual para conhecer a sintaxe exigida.

rc_max_vbv_use float (encoding,video) rc_min_vbv_use float (encoding,video) color_primaries integer (decoding/encoding,video)

Valores possíveis:

‘bt709’

BT.709

‘bt470m’

BT.470 M

‘bt470bg’

BT.470 BG

‘smpte170m’

SMPTE 170 M

‘smpte240m’

SMPTE 240 M

‘film’

Film

‘bt2020’

BT.2020

‘smpte428’ ‘smpte428_1’

SMPTE ST 428-1

‘smpte431’

SMPTE 431-2

‘smpte432’

SMPTE 432-1

‘jedec-p22’

JEDEC P22

color_trc integer (decoding/encoding,video)

Valores possíveis:

‘bt709’

BT.709

‘gamma22’

BT.470 M

‘gamma28’

BT.470 BG

‘smpte170m’

SMPTE 170 M

‘smpte240m’

SMPTE 240 M

‘linear’

Linear

‘log’ ‘log100’

Log

‘log_sqrt’ ‘log316’

Log square root

‘iec61966_2_4’ ‘iec61966-2-4’

IEC 61966-2-4

‘bt1361’ ‘bt1361e’

BT.1361

‘iec61966_2_1’ ‘iec61966-2-1’

IEC 61966-2-1

‘bt2020_10’ ‘bt2020_10bit’

BT.2020 - 10 bit

‘bt2020_12’ ‘bt2020_12bit’

BT.2020 - 12 bit

‘smpte2084’

SMPTE ST 2084

‘smpte428’ ‘smpte428_1’

SMPTE ST 428-1

‘arib-std-b67’

ARIB STD-B67

colorspace integer (decoding/encoding,video)

Valores possíveis:

‘rgb’

RGB

‘bt709’

BT.709

‘fcc’

FCC

‘bt470bg’

BT.470 BG

‘smpte170m’

SMPTE 170 M

‘smpte240m’

SMPTE 240 M

‘ycocg’

YCOCG

‘bt2020nc’ ‘bt2020_ncl’

BT.2020 NCL

‘bt2020c’ ‘bt2020_cl’

BT.2020 CL

‘smpte2085’

SMPTE 2085

‘chroma-derived-nc’

Chroma-derived NCL

‘chroma-derived-c’

Chroma-derived CL

‘ictcp’

ICtCp

color_range integer (decoding/encoding,video)

Se usado como parâmetro de entrada, serve como indicação ao decoder de qual color_range a entrada possui. Valores possíveis:

‘tv’ ‘mpeg’ ‘limited’

MPEG (219*2^(n-8))

‘pc’ ‘jpeg’ ‘full’

JPEG (2^n-1)

chroma_sample_location integer (decoding/encoding,video)

Valores possíveis:

‘left’ ‘center’ ‘topleft’ ‘top’ ‘bottomleft’ ‘bottom’ alpha_mode integer (decoding/encoding,video)

Valores possíveis:

‘premultiplied’ ‘straight’ log_level_offset integer

Define o deslocamento (offset) do nível de log.

slices integer (encoding,video)

Número de slices, usado na codificação paralelizada.

thread_type flags (decoding/encoding,video)

Seleciona quais métodos de multithreading serão usados.

O uso de ‘frame’ aumenta o atraso de decodificação em um quadro por thread, portanto clientes que não podem fornecer quadros futuros não devem usá-lo.

Valores possíveis:

‘slice’

Decodifica mais de uma parte de um único quadro por vez.

O multithreading por meio de slices só funciona quando o vídeo foi codificado com slices.

‘frame’

Decodifica mais de um quadro por vez.

O valor padrão é ‘slice+frame’.

audio_service_type integer (encoding,audio)

Define o tipo de serviço de áudio.

Valores possíveis:

‘ma’

Main Audio Service

‘ef’

Effects

‘vi’

Visually Impaired

‘hi’

Hearing Impaired

‘di’

Dialogue

‘co’

Commentary

‘em’

Emergency

‘vo’

Voice Over

‘ka’

Karaoke

request_sample_fmt sample_fmt (decoding,audio)

Define o sample format que os decoders de áudio devem preferir. O valor padrão é none.

pkt_timebase rational number sub_charenc encoding (decoding,subtitles)

Define a codificação de caracteres das legendas de entrada.

field_order field_order (video)

Define/substitui a ordem de campos do vídeo. Valores possíveis:

‘progressive’

Vídeo progressivo

‘tt’

Vídeo entrelaçado, campo superior codificado e exibido primeiro

‘bb’

Vídeo entrelaçado, campo inferior codificado e exibido primeiro

‘tb’

Vídeo entrelaçado, superior codificado primeiro, inferior exibido primeiro

‘bt’

Vídeo entrelaçado, inferior codificado primeiro, superior exibido primeiro

skip_alpha bool (decoding,video)

Defina como 1 para desabilitar o processamento do alfa (transparência). Isso funciona como a flag ‘gray’ da opção flags, que ignora a informação de croma em vez do alfa. O padrão é 0.

codec_whitelist list (input)

Lista de decoders permitidos, separados por ",". Por padrão todos são permitidos.

dump_separator string (input)

Separador usado para separar os campos exibidos na linha de comando sobre os parâmetros do fluxo. Por exemplo, para separar os campos com quebras de linha e indentação:

ffprobe -dump_separator "
                          "  -i ~/videos/matrixbench_mpeg2.mpg

max_pixels integer (decoding/encoding,video)

Número máximo de pixels por imagem. Esse valor pode ser usado para evitar falhas de falta de memória causadas por imagens grandes.

apply_cropping bool (decoding,video)

Habilita o corte se os parâmetros de corte forem múltiplos do alinhamento exigido para os parâmetros left e top. Se o alinhamento não for atendido, o corte será aplicado parcialmente para manter o alinhamento. O padrão é 1 (habilitado). Observação: o alinhamento exigido depende de AV_CODEC_FLAG_UNALIGNED estar definido e da CPU. AV_CODEC_FLAG_UNALIGNED não pode ser alterado pela linha de comando. Além disso, decoders de hardware não aplicam o corte left/top.

3 Decoders

Decoders são elementos configurados no FFmpeg que permitem a decodificação de fluxos multimídia.

Ao configurar sua compilação do FFmpeg, todos os decoders nativos compatíveis são habilitados por padrão. Decoders que exigem uma biblioteca externa devem ser habilitados manualmente por meio da opção --enable-lib correspondente. Você pode listar todos os decoders disponíveis usando a opção de configure --list-decoders.

Você pode desabilitar todos os decoders com a opção de configure --disable-decoders e habilitar/desabilitar seletivamente decoders individuais com as opções --enable-decoder=DECODER / --disable-decoder=DECODER.

A opção -decoders das ferramentas ff* exibirá a lista dos decoders habilitados.

4 Decoders de vídeo

Segue uma descrição de alguns dos decoders de vídeo atualmente disponíveis.

4.1 av1

Decoder AOMedia Video 1 (AV1).

4.1.1 Opções

operating_point

Seleciona um operating point de um bitstream AV1 escalável (0 - 31). O padrão é 0.

4.2 hevc

Decoder HEVC (também conhecido como ITU-T H.265 ou ISO/IEC 23008-2).

O decoder oferece suporte a fluxos multivisão MV-HEVC com no máximo duas visões. As visões a serem geradas na saída são selecionadas fornecendo ao decoder uma lista de IDs de visão (a opção view_ids). Essa opção pode ser definida de forma estática antes da inicialização do decoder ou a partir do callback get_format() — útil para o caso em que o número de visões ou os IDs mudam dinamicamente durante a decodificação.

Por padrão, apenas a camada base é decodificada.

Observe que, se você estiver usando a ferramenta de linha de comando ffmpeg, deve usar os especificadores de visão documentados em seu manual, em vez das opções documentadas aqui.

4.2.1 Opções

view_ids (MV-HEVC)

Especifica uma lista de IDs de visão que devem ser gerados na saída. Essa opção também pode ser definida como um único ’-1’, o que fará com que todas as visões definidas no VPS sejam decodificadas e geradas na saída.

view_ids_available (MV-HEVC)

Essa opção pode ser lida pelo chamador para obter um array dos IDs de visão disponíveis no VPS ativo. O array fica vazio para vídeo de camada única.

O valor dessa opção tem precisão garantida quando lido a partir do callback get_format(). Ele também pode ser definido em outros momentos (por exemplo, após abrir o decoder), mas nesse caso o valor é apenas informativo e pode estar incorreto (por exemplo, quando o fluxo contém múltiplos NALUs de VPS distintos).

view_pos_available (MV-HEVC)

Essa opção pode ser lida pelo chamador para obter um array das posições de visão (esquerda, direita ou não especificada) disponíveis no VPS ativo, como valores AVStereo3DView. Quando o array está disponível, seus elementos correspondem aos elementos correspondentes de view_ids_available, ou seja, view_pos_available[i] contém a posição da visão com ID view_ids_available[i].

As mesmas restrições de validade de view_ids_available se aplicam a essa opção.

4.3 rawvideo

Decoder de vídeo bruto (raw video).

Esse decoder decodifica fluxos rawvideo.

4.3.1 Opções

top top_field_first

Especifica o tipo de campo assumido para o vídeo de entrada.

-1

o vídeo é considerado progressivo (padrão)

0

assume-se bottom-field-first

1

assume-se top-field-first

4.4 libdav1d

Decoder dav1d para AV1.

libdav1d permite que a libavcodec decodifique o codec AOMedia Video 1 (AV1). Requer a presença dos cabeçalhos e da biblioteca libdav1d durante a configuração. Você precisa configurar a compilação explicitamente com --enable-libdav1d.

4.4.1 Opções

As seguintes opções são compatíveis com o wrapper libdav1d.

max_frame_delay

Define a quantidade máxima de quadros que o decoder pode armazenar internamente em buffer. O valor padrão é 0 (detecção automática).

filmgrain

Aplica grão de película ao vídeo decodificado, se presente no bitstream. Assume por padrão o valor interno padrão da biblioteca. Essa opção é obsoleta e será removida no futuro. Veja a opção global export_side_data para exportar os parâmetros de grão de película em vez de aplicá-lo.

oppoint

Seleciona um operating point de um bitstream AV1 escalável (0 - 31). Assume por padrão o valor interno padrão da biblioteca.

alllayers

Gera na saída todas as camadas espaciais de um bitstream AV1 escalável. O valor padrão é false.

4.5 libdavs2

Wrapper de decoder de vídeo AVS2-P2/IEEE1857.4.

Esse decoder permite que a libavcodec decodifique fluxos AVS2 com a biblioteca davs2.

4.6 libuavs3d

Decoder de vídeo AVS3-P2/IEEE1857.10.

libuavs3d permite que a libavcodec decodifique fluxos AVS3. Requer a presença dos cabeçalhos e da biblioteca libuavs3d durante a configuração. Você precisa configurar a compilação explicitamente com --enable-libuavs3d.

4.6.1 Opções

A seguinte opção é compatível com o wrapper libuavs3d.

frame_threads

Define a quantidade de threads de quadro a usar durante a decodificação. O valor padrão é 0 (detecção automática).

4.7 libxevd

Wrapper de decoder eXtra-fast Essential Video Decoder (XEVD) para MPEG-5 EVC.

Esse decoder requer a presença dos cabeçalhos e da biblioteca libxevd durante a configuração. Você precisa configurar a compilação explicitamente com --enable-libxevd.

O site do projeto xevd é https://github.com/mpeg5/xevd.

4.7.1 Opções

As seguintes opções são compatíveis com o wrapper libxevd. As opções ou valores equivalentes do xevd são listados entre parênteses para facilitar a migração.

Para obter uma documentação mais precisa e extensa das opções da libxevd, execute o comando xevd_app --help ou consulte a documentação da libxevd.

threads (threads)

Força o uso de um número específico de threads

4.8 QSV Decoders

A família de decoders Intel QuickSync Video (VC1, MPEG-2, H.264, HEVC, JPEG/MJPEG, VP8, VP9, AV1, VVC).

4.8.1 Opções comuns

As seguintes opções são compatíveis com todos os decoders qsv.

async_depth

Profundidade de paralelização interna; quanto maior o valor, maior a latência.

gpu_copy

Uma cópia acelerada por GPU entre a memória de vídeo e a memória do sistema

‘default’ ‘on’ ‘off’

4.8.2 Opções do HEVC

Opções extras para hevc_qsv.

load_plugin

Um plugin do usuário a carregar em uma sessão interna

‘none’ ‘hevc_sw’ ‘hevc_hw’ load_plugins

Uma lista de UIDs de plugin em hexadecimal, separados por :, a carregar em uma sessão interna

4.9 v210

Decoder não comprimido 4:2:2 de 10 bits.

4.9.1 Opções

custom_stride

Define o tamanho de linha dos dados v210 em bytes. O valor padrão é 0 (detecção automática). Você pode usar o valor especial -1 para um v210 sem stride, como visto em arquivos BOXX.

5 Decoders de áudio

Segue uma descrição de alguns dos decoders de áudio atualmente disponíveis.

5.1 ac3

Decoder de áudio AC-3.

Esse decoder implementa parte do ATSC A/52:2010 e do ETSI TS 102 366, além do formato não documentado RealAudio 3 (também conhecido como dnet).

5.1.1 Opções do decoder AC-3

-drc_scale value

Fator de escala de faixa dinâmica (Dynamic Range Scale Factor). O fator aplicado aos valores de faixa dinâmica do fluxo AC-3. Esse fator é aplicado de forma exponencial. O valor padrão é 1. Há 3 faixas de fator de escala relevantes:

drc_scale == 0

DRC desabilitado. Produz áudio de faixa completa.

0 < drc_scale <= 1

DRC habilitado. Aplica uma fração do valor de DRC do fluxo. A reprodução do áudio fica entre a faixa completa e a compressão total.

drc_scale > 1

DRC habilitado. Aplica drc_scale de forma assimétrica. Sons altos são totalmente comprimidos. Sons suaves são realçados.

5.2 flac

Decoder de áudio FLAC.

Esse decoder busca implementar a especificação completa do FLAC da Xiph.

5.2.1 Opções do decoder FLAC

-use_buggy_lpc

O encoder FLAC do lavc costumava produzir fluxos com defeito para valores altos de lpc (como o valor padrão). Essa opção permite decodificar corretamente tais fluxos usando a antiga lógica de lpc com defeito do lavc para a decodificação.

5.3 ffwavesynth

Sintetizador de ondas interno.

Esse decoder gera padrões de onda de acordo com sequências predefinidas. Seu uso é puramente interno e o formato dos dados que aceita não é documentado publicamente.

5.4 libgsm

Wrapper de decoder libgsm.

libgsm permite que a libavcodec decodifique o codec de áudio GSM full rate. Requer a presença dos cabeçalhos e da biblioteca libgsm durante a configuração. Você precisa configurar a compilação explicitamente com --enable-libgsm.

Esse decoder é compatível tanto com o GSM comum quanto com a variante da Microsoft.

5.5 libilbc

Wrapper de decoder libilbc.

libilbc permite que a libavcodec decodifique o codec de áudio Internet Low Bitrate Codec (iLBC). Requer a presença dos cabeçalhos e da biblioteca libilbc durante a configuração. Você precisa configurar a compilação explicitamente com --enable-libilbc.

5.5.1 Opções

A seguinte opção é compatível com o wrapper libilbc.

enhance

Habilita o aprimoramento do áudio decodificado quando definido como 1. O valor padrão é 0 (desabilitado).

5.6 libmpeghdec

Wrapper de decoder libmpeghdec.

libmpeghdec permite que a libmpeghdec decodifique o codec de áudio MPEG-H 3D. Requer a presença dos cabeçalhos e da biblioteca libmpeghdec durante a configuração. Você precisa configurar a compilação explicitamente com --enable-libmpeghdec --enable-nonfree.

5.7 libopencore-amrnb

Wrapper de decoder libopencore-amrnb.

libopencore-amrnb permite que a libavcodec decodifique o codec de áudio Adaptive Multi-Rate Narrowband. Para usá-lo é necessária a presença dos cabeçalhos e da biblioteca libopencore-amrnb durante a configuração. Você precisa configurar a compilação explicitamente com --enable-libopencore-amrnb.

Existe um decoder nativo do FFmpeg para AMR-NB, então os usuários podem decodificar AMR-NB sem essa biblioteca.

5.8 libopencore-amrwb

Wrapper de decoder libopencore-amrwb.

libopencore-amrwb permite que a libavcodec decodifique o codec de áudio Adaptive Multi-Rate Wideband. Para usá-lo é necessária a presença dos cabeçalhos e da biblioteca libopencore-amrwb durante a configuração. Você precisa configurar a compilação explicitamente com --enable-libopencore-amrwb.

Existe um decoder nativo do FFmpeg para AMR-WB, então os usuários podem decodificar AMR-WB sem essa biblioteca.

5.9 libopus

Wrapper de decoder libopus.

libopus permite que a libavcodec decodifique o Opus Interactive Audio Codec. Requer a presença dos cabeçalhos e da biblioteca libopus durante a configuração. Você precisa configurar a compilação explicitamente com --enable-libopus.

Existe um decoder nativo do FFmpeg para Opus, então os usuários podem decodificar Opus sem essa biblioteca.

6 Decoders de legendas

6.1 libaribb24

Decoder de legendas ARIB STD-B24.

Implementa os perfis A e C do padrão ARIB STD-B24.

6.1.1 Opções do decoder libaribb24

-aribb24-base-path path

Define o caminho base da biblioteca libaribb24. Isso é usado para a leitura de arquivos de configuração (para conversões Unicode personalizadas) e para o despejo de símbolos que não são texto como imagens nesse local.

Não definido por padrão.

-aribb24-skip-ruby-text boolean

Instrui o wrapper do decoder a ignorar blocos de texto que contêm texto ruby de meia altura.

Habilitado por padrão.

6.2 libaribcaption

Mais um decoder de legendas ARIB STD-B24, usando a biblioteca externa libaribcaption.

Implementa os perfis A e C do padrão japonês ARIB STD-B24, o ABNT NBR 15606-1 brasileiro e a versão filipina do ISDB-T.

Requer a presença dos cabeçalhos e da biblioteca libaribcaption (https://github.com/xqq/libaribcaption) durante a configuração. Você precisa configurar a compilação explicitamente com --enable-libaribcaption. Se tanto libaribb24 quanto libaribcaption estiverem habilitados, o decoder libaribcaption tem precedência.

6.2.1 Opções do decoder libaribcaption

-sub_type subtitle_type

Especifica o formato das legendas decodificadas.

‘bitmap’

Imagem gráfica.

‘ass’

Texto no formato ASS.

‘text’

Saída de texto simples, sem formatação.

O padrão é ass, assim como no decoder libaribb24. Alguns reprodutores atuais (por exemplo, mpv) esperam o formato ASS para legendas ARIB.

-caption_encoding encoding_scheme

Especifica o esquema de codificação do texto de legenda de entrada.

‘auto’

Detecta automaticamente a codificação do texto (padrão).

‘jis’

Codificação JIS de 8 bits por caractere definida na ARIB STD B24. Essa codificação é usada no Japão para legendas ISDB.

‘utf8’

Codificação UTF-8 definida na ARIB STD B24. Essa codificação é usada nas Filipinas para legendas ISDB-T.

‘latin’

Codificação de caracteres latinos definida na ABNT NBR 15606-1. Essa codificação é usada na América do Sul para legendas SBTVD / ISDB-Tb.

-font font_name[,font_name2,...]

Especifica uma lista separada por vírgulas de nomes de famílias de fontes a serem usadas na renderização de legendas do tipo bitmap ou ass. Para o tipo ass, apenas o primeiro nome de fonte é usado.

Se não for especificado, é usada a família de fontes padrão definida internamente.

-ass_single_rect boolean

A ARIB STD-B24 especifica que algumas legendas podem ser exibidas em posições diferentes ao mesmo tempo (legenda com múltiplos retângulos). Como alguns reprodutores (por exemplo, versões antigas do mpv) não conseguem lidar com vários retângulos ASS em um único AVSubtitle, nem com vários retângulos ASS de duração indeterminada com a mesma marca de tempo inicial, esta opção pode alterar o comportamento para que todo o texto seja exibido em um único retângulo ASS.

O padrão é false.

Se o seu reprodutor não conseguir lidar corretamente com AVSubtitles com vários retângulos ASS, defina esta opção como true ou defina ASS_SINGLE_RECT=1 para alterar o comportamento padrão em tempo de compilação.

-force_outline_text boolean

Especifica se o contorno do texto deve ser sempre renderizado para todos os caracteres, independentemente do que for indicado pelo estilo do caractere.

O padrão é false.

-outline_width number (0.0 - 3.0)

Especifica a largura do contorno do texto, em pontos (valor relativo).

O padrão é 1.5.

-ignore_background boolean

Especifica se a renderização da cor de fundo deve ser ignorada.

O padrão é false.

-ignore_ruby boolean

Especifica se a renderização de caracteres do tipo ruby (furigana) deve ser ignorada.

O padrão é false.

-replace_drcs boolean

Especifica se os caracteres DRCS substituídos devem ser renderizados como caracteres Unicode.

O padrão é true.

-replace_msz_ascii boolean

Especifica se os caracteres alfanuméricos de largura total MSZ (Middle Size; meia largura) devem ser substituídos por caracteres alfanuméricos de meia largura.

O padrão é true.

-replace_msz_japanese boolean

Especifica se alguns caracteres especiais japoneses de largura total MSZ (Middle Size; meia largura) devem ser substituídos por equivalentes de meia largura.

O padrão é true.

-replace_msz_glyph boolean

Especifica se os caracteres MSZ (Middle Size; meia largura) devem ser substituídos por glifos de meia largura, caso a fonte tenha suporte a isso. Esta opção funciona com o renderizador FreeType ou DirectWrite usando fontes compatíveis com Adobe-Japan1, por exemplo, IBM Plex Sans JP, Morisawa BIZ UDGothic, Morisawa BIZ UDMincho, Yu Gothic, Yu Mincho e Meiryo.

O padrão é true.

-canvas_size image_size

Especifica a resolução da tela em que as legendas serão renderizadas; normalmente, deve ser o tamanho de quadro do vídeo de entrada. Isso só se aplica quando -subtitle_type está definido como bitmap.

O decoder libaribcaption presume o seguinte tamanho de quadro de entrada para a renderização em bitmap:

  1. PROFILE_A : 1440 x 1080 com SAR (PAR) 4:3
  2. PROFILE_C : 320 x 180 com SAR (PAR) 1:1

Se o tamanho real de quadro do vídeo de entrada não corresponder à suposição acima, as legendas renderizadas podem ficar distorcidas. Para evitar que as legendas fiquem distorcidas, adicione a opção -canvas_size para especificar o tamanho real do vídeo de entrada.

Observe que a opção -canvas_size não é necessária para vídeos com tamanho diferente, mas com a mesma proporção de aspecto. Nesses casos, se a opção -canvas_size não for especificada, a legenda será esticada ou reduzida ao tamanho real do vídeo. Se a opção -canvas_size for especificada com um tamanho diferente, a legenda será esticada ou reduzida para o tamanho especificado, com o SAR calculado.

6.2.2 Exemplos de uso do decoder libaribcaption

Exibir um arquivo MPEG-TS com legenda ARIB usando a ferramenta ffplay:

ffplay -sub_type bitmap MPEG.TS

Exibir um arquivo MPEG-TS com tamanho de quadro de entrada 1920x1080 usando a ferramenta ffplay:

ffplay -sub_type bitmap -canvas_size 1920x1080 MPEG.TS

Inserir legenda ARIB em um vídeo transcodificado:

ffmpeg -sub_type bitmap -i src.m2t -filter_complex "[0:v][0:s]overlay" -vcodec h264 dest.mp4

6.3 dvbsub

6.3.1 Opções

compute_clut

-2

Calcula o clut uma vez se não houver CLUT correspondente no fluxo.

-1

Calcula o clut se não houver CLUT correspondente no fluxo.

0

Nunca calcula o CLUT

1

Sempre calcula o CLUT e substitui o que estiver presente no fluxo.

dvb_substream

Seleciona o subfluxo dvb, ou todos os subfluxos se for -1, que é o padrão.

6.4 dvdsub

Este codec decodifica as legendas em bitmap usadas em DVDs; as mesmas legendas também podem ser encontradas em pares de arquivos VobSub e em alguns arquivos Matroska.

6.4.1 Opções

palette

Especifica a paleta global usada pelos bitmaps. Quando armazenada em VobSub, a paleta normalmente é especificada no arquivo de índice; no Matroska, a paleta é armazenada nos dados extras do codec no mesmo formato usado no VobSub. Em DVDs, a paleta é armazenada no arquivo IFO e, portanto, não está disponível ao ler a partir de arquivos VOB extraídos.

O formato desta opção é uma string contendo 16 números hexadecimais de 24 bits (sem o prefixo 0x) separados por vírgulas, por exemplo 0d00ee, ee450d, 101010, eaeaea, 0ce60b, ec14ed, ebff0b, 0d617a, 7b7b7b, d1d1d1, 7b2a0e, 0d950c, 0f007b, cf0dec, cfa80c, 7c127b.

ifo_palette

Especifica o arquivo IFO do qual a paleta global é obtida. (experimental)

forced_subs_only

Decodifica somente as entradas de legenda marcadas como forçadas. Alguns títulos têm legendas forçadas e não forçadas na mesma faixa. Definir essa flag como 1 manterá somente as legendas forçadas. O valor padrão é 0.

6.5 libzvbi-teletext

A libzvbi permite que a libavcodec decodifique páginas de teletexto DVB e legendas de teletexto DVB. Requer a presença dos cabeçalhos e da biblioteca libzvbi durante a configuração. É necessário configurar a compilação explicitamente com --enable-libzvbi.

6.5.1 Opções

txt_page

Lista de números de página de teletexto a serem decodificados. Páginas que não correspondem à lista especificada são descartadas. Você pode usar a string especial * para corresponder a todas as páginas, ou subtitle para corresponder a todas as páginas de legenda. O valor padrão é *.

txt_default_region

Define o conjunto de caracteres padrão usado na decodificação, um valor entre 0 e 87 (consulte ETS 300 706, Seção 15, Tabela 32). O valor padrão é -1, que não substitui o padrão da libzvbi. Esta opção é necessária para algumas transmissões legadas de nível 1.0 que não conseguem sinalizar o conjunto de caracteres apropriado.

txt_chop_top

Descarta a linha superior do teletexto. O valor padrão é 1.

txt_format

Especifica o formato das legendas decodificadas.

bitmap

O formato padrão; você deve usá-lo para páginas de teletexto, porque determinados gráficos e cores não podem ser expressos em texto simples nem mesmo em ASS.

text

Saída de texto simples, sem formatação.

ass

Saída ASS formatada; páginas de legenda e páginas de teletexto são retornadas em estilos diferentes, as páginas de legenda são reduzidas a texto, mas procura-se manter o alinhamento e a formatação do texto.

txt_left

Deslocamento X dos bitmaps gerados; o padrão é 0.

txt_top

Deslocamento Y dos bitmaps gerados; o padrão é 0.

txt_chop_spaces

Remove os espaços do início e do fim, e elimina linhas vazias do texto gerado. Esta opção é útil para legendas baseadas em teletexto, nas quais podem existir espaços vazios no início ou no fim das linhas, ou linhas vazias entre as linhas de legenda devido a caracteres de teletexto de tamanho duplo. O valor padrão é 1.

txt_duration

Define a duração de exibição das páginas de teletexto ou legendas decodificadas, em milissegundos. O valor padrão é -1, o que significa infinito ou até que ocorra o próximo evento de legenda.

txt_transparent

Força um fundo transparente para os bitmaps de teletexto gerados. O valor padrão é 0, o que significa um fundo opaco.

txt_opacity

Define a opacidade (0-255) do fundo do teletexto. Se txt_transparent não estiver definido, isso afeta apenas os caracteres entre uma caixa de início e uma caixa de fim, tipicamente legendas. O valor padrão é 0 se txt_transparent estiver definido, e 255 caso contrário.

7 Encoders

Os encoders são elementos configurados no FFmpeg que permitem a codificação de fluxos multimídia.

Ao configurar sua compilação do FFmpeg, todos os encoders nativos compatíveis são habilitados por padrão. Encoders que exigem uma biblioteca externa devem ser habilitados manualmente por meio da opção --enable-lib correspondente. Você pode listar todos os encoders disponíveis usando a opção de configuração --list-encoders.

Você pode desabilitar todos os encoders com a opção de configuração --disable-encoders e habilitar/desabilitar encoders individuais de forma seletiva com as opções --enable-encoder=ENCODER / --disable-encoder=ENCODER.

A opção -encoders das ferramentas ff* exibirá a lista de encoders habilitados.

8 Encoders de áudio

A seguir, uma descrição de alguns dos encoders de áudio disponíveis atualmente.

8.1 aac

Encoder Advanced Audio Coding (AAC).

Este encoder é o encoder AAC padrão, implementado nativamente no FFmpeg.

8.1.1 Opções

b

Define a taxa de bits em bits/s. Definir este valor ativa automaticamente o modo de taxa de bits constante (CBR). Se esta opção não for especificada, é definida como 128kbps.

q

Define a qualidade para o modo de taxa de bits variável (VBR). Esta opção só é válida usando a ferramenta de linha de comando ffmpeg. Para quem usa a interface de biblioteca, use global_quality.

cutoff

Define a frequência de corte. Se não for especificada, permite que o encoder ajuste dinamicamente o corte para melhorar a clareza em taxas de bits baixas.

aac_coder

Define o método de codificação do encoder AAC. Valores possíveis:

‘twoloop’

Método de busca de duplo loop (TLS). Este é o método padrão.

Este método primeiro define os quantizadores de acordo com os limiares de banda e depois tenta encontrar uma combinação ideal somando ou subtraindo um valor específico de todos os quantizadores e ajustando um pouco alguns quantizadores individuais. Ajusta-se automaticamente de acordo com o fato de aac_is, aac_ms e aac_pns estarem habilitados.

‘anmr’

Solução baseada em trellis de relação ruído médio/máscara (ANMR).

Este é um coder experimental que atualmente produz qualidade inferior, é mais instável e mais lento que o coder twoloop padrão, mas tem potencial. Atualmente não tem suporte às opções aac_is ou aac_pns. Não recomendado no momento.

‘fast’

Método de quantizador constante.

Usa uma versão mais simples do algoritmo twoloop, que não tenta fazer tantos ajustes refinados. Pior em taxas de bits baixas (menos de 64kbps), mas melhor e muito mais rápido em taxas de bits mais altas.

aac_ms

Define o modo de codificação mid/side. O valor padrão "auto" usará M/S automaticamente nas bandas que se beneficiarem dessa codificação. Pode ser forçado para todas as bandas com o valor "enable", útil principalmente para depuração, ou desabilitado com "disable".

aac_is

Define o uso da ferramenta de codificação estéreo por intensidade. Por padrão, está habilitada e alterna automaticamente o IS para pares semelhantes de bandas estéreo quando isso for benéfico. Pode ser desabilitada para depuração definindo o valor como "disable".

aac_pns

Usa substituição de ruído perceptual para substituir bandas de alta frequência com baixa entropia por ruído branco imperceptível durante o processo de decodificação. Por padrão, está habilitada, mas pode ser desabilitada para fins de depuração usando "disable".

aac_tns

Habilita o uso de um filtro FIR multitap que abrange as bandas de alta frequência para ocultar o ruído de quantização durante o processo de codificação, sendo revertido pelo decoder. Além de reduzir artefatos desagradáveis na faixa alta, isso também reduz a entropia nas bandas altas e permite que mais bits sejam usados pelas bandas médio-baixas. Por padrão está habilitada, mas pode ser desabilitada para depuração definindo a opção como "disable".

aac_ltp

Habilita o uso da extensão de predição de longo prazo, que aumenta a eficiência de codificação em situações de largura de banda muito baixa, como a codificação de voz ou piano solo, estendendo picos harmônicos constantes em bandas ao longo dos quadros. Esta opção é implícita em profile:a aac_low. Use em conjunto com -ar para reduzir a taxa de amostragem.

profile

Define o perfil de codificação; valores possíveis:

‘aac_low’

O padrão, perfil AAC "Low-complexity". É o mais compatível e produz qualidade razoável.

‘mpeg2_aac_low’

Equivalente a -profile:a aac_low -aac_pns 0. O PNS foi introduzido nas especificações MPEG4.

‘aac_ltp’

Perfil de predição de longo prazo; é habilitado pela opção aac_ltp e, por sua vez, a habilita. Introduzido no MPEG4.

Se esta opção não for especificada, é definida como ‘aac_low’.

8.2 ac3 e ac3_fixed

Encoders de áudio AC-3.

Esses encoders implementam parte do ATSC A/52:2010 e do ETSI TS 102 366.

O encoder ac3 usa aritmética de ponto flutuante, enquanto o encoder ac3_fixed usa apenas aritmética inteira de ponto fixo. Isso não significa que um seja sempre mais rápido, apenas que um ou outro pode ser mais adequado a um determinado sistema. O encoder ac3_fixed não é o codec padrão para nenhum dos formatos de saída, portanto deve ser especificado explicitamente com a opção -acodec ac3_fixed para ser usado.

8.2.1 Metadados AC-3

As opções de metadados AC-3 são usadas para definir parâmetros que descrevem o áudio, mas na maioria dos casos não afetam a própria codificação de áudio. Algumas das opções afetam ou influenciam diretamente a decodificação e a reprodução do bitstream resultante, enquanto outras servem apenas para fins informativos. Algumas opções adicionarão bits ao fluxo de saída que, de outra forma, poderiam ser usados para dados de áudio, afetando assim a qualidade da saída. Essas serão indicadas de acordo com uma nota na lista de opções abaixo.

Esses parâmetros são descritos em detalhes em vários documentos disponíveis publicamente.

8.2.1.1 Opções de controle de metadados

-per_frame_metadata boolean

Permitir metadados por quadro. Especifica se o encoder deve verificar a alteração de metadados a cada quadro.

0

Os valores de metadados definidos na inicialização serão usados para todos os quadros do fluxo. (padrão)

1

Os valores de metadados podem ser alterados antes da codificação de cada quadro.

8.2.1.2 Níveis de downmix

-center_mixlev level

Nível de mixagem central. A quantidade de ganho que o decoder deve aplicar ao canal central ao fazer o downmix para estéreo. Este campo só será gravado no bitstream se houver um canal central presente. O valor é especificado como um fator de escala. Há 3 valores válidos:

0.707

Aplica um ganho de -3dB

0.595

Aplica um ganho de -4.5dB (padrão)

0.500

Aplica um ganho de -6dB

-surround_mixlev level

Nível de mixagem surround. A quantidade de ganho que o decoder deve aplicar ao(s) canal(is) surround ao fazer o downmix para estéreo. Este campo só será gravado no bitstream se houver um ou mais canais surround presentes. O valor é especificado como um fator de escala. Há 3 valores válidos:

0.707

Aplica um ganho de -3dB

0.500

Aplica um ganho de -6dB (padrão)

0.000

Silencia o(s) canal(is) surround

8.2.1.3 Informações de produção de áudio

As informações de produção de áudio são informações opcionais que descrevem o ambiente de mixagem. Ou nenhum ou ambos os campos são gravados no bitstream.

-mixing_level number

Nível de mixagem. Especifica o nível de pressão sonora (SPL) de pico no ambiente de produção quando a mixagem foi masterizada. Os valores válidos vão de 80 a 111, ou -1 para desconhecido ou não indicado. O valor padrão é -1, mas esse valor não pode ser usado se as informações de produção de áudio forem gravadas no bitstream. Portanto, se a opção room_type não tiver o valor padrão, a opção mixing_level não pode ser -1.

-room_type type

Tipo de sala. Descreve a equalização usada durante a sessão de mixagem final no estúdio ou no palco de dublagem. Uma sala grande é um palco de dublagem com a equalização em curva X padrão da indústria; uma sala pequena tem equalização plana. Este campo não será gravado no bitstream se tanto a opção mixing_level quanto a opção room_type tiverem os valores padrão.

0 notindicated

Não indicado (padrão)

1 large

Sala grande

2 small

Sala pequena

8.2.1.4 Outras opções de metadados

-copyright boolean

Indicador de copyright. Especifica se existe copyright para este áudio.

0 off

Sem copyright (padrão)

1 on

Há copyright

-dialnorm value

Normalização de diálogo. Indica o quanto o nível médio de diálogo do programa está abaixo da escala completa digital de 100% (0 dBFS). Este parâmetro determina um deslocamento de nível durante a reprodução de áudio que ajusta o volume médio do diálogo a um nível predefinido. O objetivo é igualar o nível de volume entre as fontes do programa. Um valor de -31dB não resultará em nenhuma alteração de nível de volume, em relação ao volume da fonte, durante a reprodução de áudio. Os valores válidos são números inteiros no intervalo de -31 a -1, sendo -31 o padrão.

-dsur_mode mode

Modo Dolby Surround. Especifica se o sinal estéreo usa Dolby Surround (Pro Logic). Este campo só será gravado no bitstream se o fluxo de áudio for estéreo. Usar esta opção NÃO significa que o encoder vá realmente aplicar o processamento Dolby Surround.

0 notindicated

Não indicado (padrão)

1 off

Não codificado com Dolby Surround

2 on

Codificado com Dolby Surround

-original boolean

Indicador de bitstream original. Especifica se este áudio é da fonte original e não uma cópia.

0 off

Não é a fonte original

1 on

Fonte original (padrão)

8.2.2 Informações estendidas de bitstream

As opções de bitstream estendido fazem parte da Sintaxe de Bitstream Alternativa (Alternate Bit Stream Syntax) especificada no Anexo D do padrão A/52:2010. Elas são agrupadas em 2 partes. Se qualquer parâmetro de um grupo for especificado, todos os valores desse grupo serão gravados no bitstream. Os valores padrão são usados para os que são gravados, mas não foram especificados. Se os níveis de mixagem forem gravados, o decoder usará esses valores em vez dos especificados nas opções center_mixlev e surround_mixlev, caso ele tenha suporte à Sintaxe de Bitstream Alternativa.

8.2.2.1 Informações estendidas de bitstream - Parte 1

-dmix_mode mode

Modo de downmix estéreo preferido. Permite que o usuário selecione Lt/Rt (Dolby Surround) ou Lo/Ro (estéreo normal) como o modo de downmix estéreo preferido.

0 notindicated

Não indicado (padrão)

1 ltrt

Downmix Lt/Rt preferido

2 loro

Downmix Lo/Ro preferido

-ltrt_cmixlev level

Nível de mixagem central Lt/Rt. A quantidade de ganho que o decoder deve aplicar ao canal central ao fazer o downmix para estéreo no modo Lt/Rt.

1.414

Aplica um ganho de +3dB

1.189

Aplica um ganho de +1.5dB

1.000

Aplica um ganho de 0dB

0.841

Aplica um ganho de -1.5dB

0.707

Aplica um ganho de -3.0dB

0.595

Aplica um ganho de -4.5dB (padrão)

0.500

Aplica um ganho de -6.0dB

0.000

Silencia o canal central

-ltrt_surmixlev level

Nível de mixagem surround Lt/Rt. A quantidade de ganho que o decoder deve aplicar ao(s) canal(is) surround ao fazer o downmix para estéreo no modo Lt/Rt.

0.841

Aplica um ganho de -1.5dB

0.707

Aplica um ganho de -3.0dB

0.595

Aplica um ganho de -4.5dB

0.500

Aplica um ganho de -6.0dB (padrão)

0.000

Silencia o(s) canal(is) surround

-loro_cmixlev level

Nível de mixagem central Lo/Ro. A quantidade de ganho que o decoder deve aplicar ao canal central ao fazer o downmix para estéreo no modo Lo/Ro.

1.414

Aplica um ganho de +3dB

1.189

Aplica um ganho de +1.5dB

1.000

Aplica um ganho de 0dB

0.841

Aplica um ganho de -1.5dB

0.707

Aplica um ganho de -3.0dB

0.595

Aplica um ganho de -4.5dB (padrão)

0.500

Aplica um ganho de -6.0dB

0.000

Silencia o canal central

-loro_surmixlev level

Nível de mixagem surround Lo/Ro. A quantidade de ganho que o decoder deve aplicar ao(s) canal(is) surround ao fazer o downmix para estéreo no modo Lo/Ro.

0.841

Aplica um ganho de -1.5dB

0.707

Aplica um ganho de -3.0dB

0.595

Aplica um ganho de -4.5dB

0.500

Aplica um ganho de -6.0dB (padrão)

0.000

Silencia o(s) canal(is) surround

8.2.2.2 Informações estendidas de bitstream - Parte 2

-dsurex_mode mode

Modo Dolby Surround EX. Indica se o fluxo usa Dolby Surround EX (7.1 matriciado para 5.1). Usar esta opção NÃO significa que o encoder vá realmente aplicar o processamento Dolby Surround EX.

0 notindicated

Não indicado (padrão)

1 on

Dolby Surround EX desativado

2 off

Dolby Surround EX ativado

-dheadphone_mode mode

Modo Dolby Headphone. Indica se o fluxo usa codificação Dolby Headphone (multicanal matriciado para 2.0 para uso com fones de ouvido). Usar esta opção NÃO significa que o encoder vá realmente aplicar o processamento Dolby Headphone.

0 notindicated

Não indicado (padrão)

1 on

Dolby Headphone desativado

2 off

Dolby Headphone ativado

-ad_conv_type type

Tipo de conversor A/D. Indica se o áudio passou por conversão A/D HDCD.

0 standard

Conversor A/D convencional (padrão)

1 hdcd

Conversor A/D HDCD

8.2.3 Outras opções de codificação AC-3

-stereo_rematrixing boolean

Rematriciamento estéreo. Habilita/desabilita o uso de rematriciamento para a entrada estéreo. Este é um recurso opcional do AC-3 que aumenta a qualidade ao codificar seletivamente os canais esquerdo/direito como mid/side. Esta opção é habilitada por padrão, e é altamente recomendável mantê-la habilitada, exceto para fins de teste.

cutoff frequency

Define a frequência de corte do passa-baixa. Se não for especificada, o encoder seleciona um padrão determinado por diversos outros parâmetros de codificação.

8.2.4 Opções de codificação AC-3 exclusivas de ponto flutuante

Estas opções só são válidas para o encoder de ponto flutuante e não existem para o encoder de ponto fixo, pois os recursos correspondentes não estão implementados em ponto fixo.

-channel_coupling boolean

Habilita/desabilita o uso de acoplamento de canais, um recurso opcional do AC-3 que aumenta a qualidade combinando informações de alta frequência de vários canais em um único canal. As informações de alta frequência de cada canal são enviadas com menor precisão, tanto no domínio da frequência quanto no do tempo. Isso permite usar mais bits para as frequências mais baixas, preservando informações suficientes para reconstruir as frequências altas. Esta opção é habilitada por padrão para o encoder de ponto flutuante e, em geral, deve ser mantida habilitada, exceto para fins de teste ou para aumentar a velocidade de codificação.

-1 auto

Selecionado pelo encoder (padrão)

0 off

Desativa o acoplamento de canais

1 on

Ativa o acoplamento de canais

-cpl_start_band number

Banda inicial de acoplamento. Define a banda inicial de acoplamento de canais, de 1 a 15. Se for usado um valor maior que a largura de banda, ele será reduzido para 1 a menos que a banda final de acoplamento. Se for usado auto, a banda inicial será determinada pelo encoder com base na taxa de bits, na taxa de amostragem e no layout de canais. Esta opção não tem efeito se o acoplamento de canais estiver desabilitado.

-1 auto

Selecionado pelo encoder (padrão)

8.3 flac

Encoder FLAC (Free Lossless Audio Codec)

8.3.1 Opções

As seguintes opções são compatíveis com o encoder flac do FFmpeg.

compression_level

Define o nível de compressão, que escolhe os padrões de muitas outras opções quando elas não são definidas explicitamente. Os valores válidos vão de 0 a 12; 5 é o padrão.

frame_size

Define o tamanho dos quadros em amostras por canal.

lpc_coeff_precision

Define a precisão do coeficiente LPC; os valores válidos vão de 1 a 15, 15 é o padrão.

lpc_type

Define o algoritmo LPC do primeiro estágio

‘none’

LPC não é usado

‘fixed’

coeficientes LPC fixos

‘levinson’ ‘cholesky’ lpc_passes

Número de passagens a usar na fatoração de Cholesky durante a análise LPC

min_partition_order

A ordem mínima de partição

max_partition_order

A ordem máxima de partição

prediction_order_method

‘estimation’ ‘2level’ ‘4level’ ‘8level’ ‘search’

Busca por força bruta

‘log’ ch_mode

Modo de canal

‘auto’

O modo é escolhido automaticamente para cada quadro

‘indep’

Os canais são codificados de forma independente

‘left_side’ ‘right_side’ ‘mid_side’ exact_rice_parameters

Escolhe se os parâmetros rice são calculados de forma exata ou aproximada. Se definido como 1, eles são escolhidos de forma exata, o que torna o código um pouco mais lento e melhora um pouco a compressão.

multi_dim_quant

Quantização multidimensional. Se definido como 1, um algoritmo LPC de segundo estágio é aplicado após o primeiro estágio para ajustar os coeficientes com precisão. Isso é bastante lento e melhora um pouco a compressão.

8.4 opus

Encoder Opus.

Este é um encoder nativo do FFmpeg para o formato Opus. Atualmente está em desenvolvimento e implementa apenas a parte CELT do codec. Sua qualidade costuma ser pior e, na melhor das hipóteses, é igual à do encoder libopus.

8.4.1 Opções

b

Define a taxa de bits em bits/s. Se não for especificada, usa o número de canais e o layout para fazer uma estimativa razoável.

opus_delay

Define o atraso máximo em milissegundos. Atrasos menores que 20ms reduzem a qualidade muito rapidamente.

8.5 libfdk_aac

Wrapper do encoder libfdk-aac para AAC (Advanced Audio Coding).

A biblioteca libfdk-aac é baseada no código Fraunhofer FDK AAC do projeto Android.

Esse encoder requer a presença dos cabeçalhos e da biblioteca libfdk-aac durante a configuração. Você precisa configurar a compilação explicitamente com --enable-libfdk-aac. Essa biblioteca também é incompatível com a GPL, portanto, se você permitir o uso de GPL, deve configurar com --enable-gpl --enable-nonfree --enable-libfdk-aac.

Esse encoder oferece suporte aos perfis AAC-HE.

A codificação VBR, habilitada por meio das opções vbr ou flags +qscale, é experimental e funciona apenas com algumas combinações de parâmetros.

O suporte à codificação de áudio 7.1 só está disponível na libfdk-aac 0.1.3 ou superior.

Para mais informações, consulte o projeto fdk-aac em http://sourceforge.net/p/opencore-amr/fdk-aac/.

8.5.1 Opções

As opções a seguir são mapeadas para as opções de codec compartilhadas do FFmpeg.

b

Define a taxa de bits em bits/s. Se a taxa de bits não for especificada explicitamente, ela é definida automaticamente para um valor adequado de acordo com o perfil selecionado.

Se o modo VBR estiver habilitado, essa opção é ignorada.

ar

Define a taxa de amostragem de áudio (em Hz).

channels

Define o número de canais de áudio.

flags +qscale

Habilita o modo de qualidade fixa, VBR (Variable Bit Rate). Observe que o VBR é habilitado implicitamente quando o valor de vbr é positivo.

cutoff

Define a frequência de corte. Se não for especificada (ou definida explicitamente como 0), será usado um valor calculado automaticamente pela biblioteca. O valor padrão é 0.

profile

Define o perfil de áudio.

Os seguintes perfis são reconhecidos:

‘aac_low’

AAC de baixa complexidade (LC)

‘aac_he’

AAC de alta eficiência (HE-AAC)

‘aac_he_v2’

AAC de alta eficiência versão 2 (HE-AACv2)

‘aac_ld’

AAC de baixa latência (LD)

‘aac_eld’

AAC de baixa latência aprimorado (ELD)

Se não for especificado, é definido como ‘aac_low’.

A seguir estão as opções privadas do encoder libfdk_aac.

afterburner

Habilita o recurso afterburner se definido como 1; desabilitado se definido como 0. Isso melhora a qualidade, mas também aumenta o poder de processamento necessário.

O valor padrão é 1.

eld_sbr

Habilita o SBR (Spectral Band Replication) para ELD se definido como 1; desabilitado se definido como 0.

O valor padrão é 0.

eld_v2

Habilita o ELDv2 (extensão LD-MPS para sinais estéreo ELD) para ELDv2 se definido como 1; desabilitado se definido como 0.

Observe que essa opção está disponível quando a versão do fdk-aac (AACENCODER_LIB_VL0.AACENCODER_LIB_VL1.AACENCODER_LIB_VL2) > (4.0.0).

O valor padrão é 0.

signaling

Define o estilo de sinalização SBR/PS.

Pode assumir um dos seguintes valores:

‘default’

escolhe a sinalização implicitamente (hierárquica explícita por padrão, implícita se o cabeçalho global estiver desabilitado)

‘implicit’

sinalização implícita compatível com versões anteriores

‘explicit_sbr’

sinalização SBR explícita, sinalização PS implícita

‘explicit_hierarchical’

sinalização hierárquica explícita

O valor padrão é ‘default’.

latm

Gera dados encapsulados em LATM/LOAS se definido como 1; desabilitado se definido como 0.

O valor padrão é 0.

header_period

Define o período de repetição de StreamMuxConfig e PCE (em quadros) para o envio de buffers de configuração in-band dentro da camada de transporte LATM/LOAS.

Deve ser um inteiro não negativo de 16 bits.

O valor padrão é 0.

vbr

Define o modo VBR, de 1 a 5. 1 é a qualidade mais baixa (ainda assim bastante boa) e 5 é a qualidade mais alta. Um valor de 0 desabilita o VBR e habilita o CBR (Constant Bit Rate).

Atualmente, apenas o perfil ‘aac_low’ é compatível com a codificação VBR.

Os modos VBR de 1 a 5 correspondem aproximadamente às seguintes taxas de bits médias:

‘1’

32 kbps/canal

‘2’

40 kbps/canal

‘3’

48-56 kbps/canal

‘4’

64 kbps/canal

‘5’

cerca de 80-96 kbps/canal

O valor padrão é 0.

frame_length

Define a duração do quadro de áudio em amostras. O valor padrão é o padrão interno da biblioteca. Consulte a documentação da biblioteca para obter informações sobre os valores compatíveis.

8.5.2 Exemplos

  • Use o ffmpeg para converter um arquivo de áudio em AAC VBR dentro de um container M4A (MP4):

    ffmpeg -i input.wav -codec:a libfdk_aac -vbr 3 output.m4a
    
  • Use o ffmpeg para converter um arquivo de áudio em AAC CBR de 64k kbps, usando o perfil High-Efficiency AAC:

    ffmpeg -i input.wav -c:a libfdk_aac -profile:a aac_he -b:a 64k output.m4a
    

8.6 liblc3

Wrapper do encoder liblc3 para LC3 (Low Complexity Communication Codec).

Esse encoder requer a presença dos cabeçalhos e da biblioteca liblc3 durante a configuração. Você precisa configurar a compilação explicitamente com --enable-liblc3.

Esse encoder oferece suporte ao codec LC3 do Bluetooth SIG para o protocolo LE Audio, além dos seguintes recursos do LC3plus:

  • Duração de quadro de 2.5 e 5ms.
  • Modo de alta resolução, taxas de amostragem de 48 KHz e 96 kHz.

Para mais informações, consulte o projeto liblc3 em https://github.com/google/liblc3.

8.6.1 Opções

As opções a seguir são mapeadas para as opções de codec compartilhadas do FFmpeg.

b bitrate

Define a taxa de bits em bits/s. Isso determina o tamanho fixo dos quadros codificados para uma duração de quadro selecionada.

ar frequency

Define a taxa de amostragem de áudio (em Hz).

channels

Define o número de canais de áudio.

frame_duration

Define a duração do quadro de áudio em milissegundos. O valor padrão é 10ms. As durações de quadro permitidas são 2.5ms, 5ms, 7.5ms e 10ms. O LC3 (Bluetooth LE Audio) permite 7.5ms e 10ms; e o LC3plus, 2.5ms, 5ms e 10ms.

A duração de quadro de 10ms está disponível no padrão LC3 e no LC3plus. Nesse modo, o bitstream produzido pode ser identificado tanto como LC3 quanto como LC3plus.

high_resolution boolean

Habilita o modo de alta resolução se definido como 1. O modo de alta resolução está disponível em todas as durações de quadro do LC3plus e para taxas de amostragem de 48 KHz e 96 KHz.

O encoder desativa automaticamente esse modo em taxas de amostragem mais baixas e o ativa em 96 KHz.

Esse modo deve ser preferido em taxas de bits altas. Nesse modo, a largura de banda de áudio sempre chega até a frequência de Nyquist, em comparação com o LC3 a 48 KHz, que limita a largura de banda a 20 KHz.

8.7 libmp3lame

Wrapper do encoder MP3 LAME (Lame Ain’t an MP3 Encoder).

Esse encoder requer a presença dos cabeçalhos e da biblioteca libmp3lame durante a configuração. Você precisa configurar a compilação explicitamente com --enable-libmp3lame.

Consulte libshine para um encoder MP3 de ponto fixo, embora com qualidade inferior.

8.7.1 Opções

O wrapper do libmp3lame é compatível com as opções a seguir. O equivalente em lame de cada opção é indicado entre parênteses.

b (-b)

Define a taxa de bits expressa em bits/s para CBR ou ABR. No LAME, bitrate é expresso em kilobits/s.

q (-V)

Define o ajuste de qualidade constante para VBR. Essa opção só é válida ao usar a ferramenta de linha de comando ffmpeg. Para usuários da interface de biblioteca, use global_quality.

compression_level (-q)

Define a qualidade do algoritmo. Os argumentos válidos são inteiros no intervalo de 0 a 9, em que 0 significa a maior qualidade, porém mais lenta, e 9 significa a mais rápida, produzindo a pior qualidade.

cutoff (--lowpass)

Define a frequência de corte do passa-baixa. Se não for especificada, o encoder ajusta o corte dinamicamente.

reservoir

Habilita o uso do bit reservoir quando definido como 1. O valor padrão é 1. O LAME tem isso habilitado por padrão, mas pode ser substituído usando a opção --nores.

joint_stereo (-m j)

Permite que o encoder use (quadro a quadro) estéreo L/R ou estéreo mid/side. O valor padrão é 1.

abr (--abr)

Permite que o encoder use ABR quando definido como 1. A opção --abr do lame define a taxa de bits alvo, enquanto esta opção apenas indica ao FFmpeg que use ABR, dependendo ainda de b para definir a taxa de bits.

copyright (-c)

Define a flag de copyright de áudio MPEG quando definido como 1. O valor padrão é 0 (desabilitado).

original (-o)

Define a flag de original de áudio MPEG quando definido como 1. O valor padrão é 1 (habilitado).

8.8 libopencore-amrnb

Encoder OpenCORE Adaptive Multi-Rate Narrowband.

Esse encoder requer a presença dos cabeçalhos e da biblioteca libopencore-amrnb durante a configuração. Você precisa configurar a compilação explicitamente com --enable-libopencore-amrnb --enable-version3.

Este é um encoder somente mono. Oficialmente, admite apenas a taxa de amostragem de 8000Hz, mas você pode substituí-la definindo strict como ‘unofficial’ ou um valor inferior.

8.8.1 Opções

b

Define a taxa de bits em bits por segundo. Somente as taxas de bits a seguir são compatíveis; caso contrário, a libavcodec arredondará para a taxa de bits válida mais próxima.

4750 5150 5900 6700 7400 7950 10200 12200 dtx

Permite a transmissão descontínua (gera ruído de conforto) quando definido como 1. O valor padrão é 0 (desabilitado).

8.9 libopus

Wrapper do encoder libopus, o Opus Interactive Audio Codec.

Esse encoder requer a presença dos cabeçalhos e da biblioteca libopus durante a configuração. Você precisa configurar a compilação explicitamente com --enable-libopus.

8.9.1 Mapeamento de opções

A maioria das opções do libopus é modelada a partir do utilitário opusenc do opus-tools. A seguir, uma tabela de mapeamento que descreve as opções compatíveis com o wrapper do libopus e o equivalente em opusenc, entre parênteses.

b (bitrate)

Define a taxa de bits em bits/s. A opção b do FFmpeg é expressa em bits/s, enquanto o bitrate do opusenc é expresso em kilobits/s.

vbr (vbr , hard-cbr , and cvbr)

Define o modo VBR. A opção vbr do FFmpeg tem os seguintes argumentos válidos, com as opções equivalentes do opusenc entre parênteses:

‘off (hard-cbr)’

Usa codificação de taxa de bits constante.

‘on (vbr)’

Usa codificação de taxa de bits variável (o padrão).

‘constrained (cvbr)’

Usa codificação de taxa de bits variável restrita.

compression_level (comp)

Define a complexidade do algoritmo de codificação. Os valores válidos são inteiros no intervalo de 0 a 10. 0 resulta na codificação mais rápida, porém com qualidade menor, enquanto 10 resulta na maior qualidade, porém com a codificação mais lenta. O padrão é 10.

frame_duration (framesize)

Define o tamanho máximo do quadro, ou a duração de um quadro, em milissegundos. O argumento deve ser exatamente um dos seguintes: 2.5, 5, 10, 20, 40, 60. Tamanhos de quadro menores alcançam menor latência, mas menos qualidade para uma dada taxa de bits. Tamanhos maiores que 20ms só são interessantes em taxas de bits bastante baixas. O padrão é 20ms.

packet_loss (expect-loss)

Define a porcentagem esperada de perda de pacotes. O padrão é 0.

fec (n/a)

Habilita a correção de erros adiante em banda. O packet_loss precisa ser diferente de zero para que isso tenha efeito — a frequência de ’side-data’ do FEC é proporcional à perda de pacotes esperada. O padrão é desabilitado.

application (N.A.)

Define o tipo de aplicativo pretendido. As opções válidas estão listadas abaixo:

‘voip’

Favorece uma melhor inteligibilidade da fala.

‘audio’

Favorece a fidelidade à entrada (o padrão).

‘lowdelay’

Restringe apenas aos modos de menor atraso, desabilitando os modos otimizados para voz.

cutoff (N.A.)

Define a largura de banda de corte em Hz. O argumento deve ser exatamente um dos seguintes: 4000, 6000, 8000, 12000 ou 20000, correspondendo respectivamente a narrowband, mediumband, wideband, super wideband e fullband. O padrão é 0 (corte desabilitado). Observe que o libopus força um corte wideband para taxas de bits < 15 kbps, a menos que o modo somente CELT (application definido como ‘lowdelay’) seja usado.

mapping_family (mapping_family)

Define a família de mapeamento de canais a ser usada pelo encoder. O valor padrão -1 usa a família de mapeamento 0 para entradas mono e estéreo, e a família de mapeamento 1 nos demais casos. O padrão também desabilita o mascaramento surround e as otimizações de largura de banda LFE no libopus, exigindo que a entrada contenha 8 canais ou menos.

Outros valores incluem 0 para mono e estéreo, 1 para som surround com mascaramento e otimizações de largura de banda LFE, e 255 para fluxos independentes com layout de canais não especificado.

dtx (N.A.)

Permite a transmissão descontínua quando definido como 1. O valor padrão é 0 (desabilitado).

apply_phase_inv (N.A.) (requires libopus >= 1.2)

Se definido como 0, desabilita o uso da inversão de fase para estéreo de intensidade, melhorando a qualidade dos downmixes para mono, mas reduzindo ligeiramente a qualidade do estéreo normal. O padrão é 1 (inversão de fase habilitada).

8.10 libshine

Wrapper do encoder Shine de ponto fixo para MP3.

O Shine é um encoder MP3 de ponto fixo. Seu desempenho é muito superior em plataformas sem FPU, por exemplo CPUs armel, além de alguns telefones e tablets. No entanto, como é mais voltado para desempenho do que para qualidade, não está no mesmo nível do LAME e de outros encoders de qualidade de produção. Além disso, segundo a página do projeto, esse encoder pode não estar livre de bugs, já que o código foi escrito há muito tempo e o projeto ficou inativo por pelo menos 5 anos.

Esse encoder é compatível apenas com entrada estéreo e mono. Também é exclusivamente CBR.

O projeto original (atualizado pela última vez no início de 2007) está em http://sourceforge.net/projects/libshine-fxp/. Só há suporte para o fork atualizado do projeto Savonet/Liquidsoap, em https://github.com/savonet/shine.

Esse encoder requer a presença dos cabeçalhos e da biblioteca libshine durante a configuração. Você precisa configurar a compilação explicitamente com --enable-libshine.

Consulte também libmp3lame.

8.10.1 Opções

O wrapper do libshine é compatível com as opções a seguir. O equivalente em shineenc de cada opção é indicado entre parênteses.

b (-b)

Define a taxa de bits expressa em bits/s para CBR. A opção -b do shineenc é expressa em kilobits/s.

8.11 libtwolame

Wrapper do encoder TwoLAME para MP2.

Esse encoder requer a presença dos cabeçalhos e da biblioteca libtwolame durante a configuração. Você precisa configurar a compilação explicitamente com --enable-libtwolame.

8.11.1 Opções

O wrapper do libtwolame é compatível com as opções a seguir. Os equivalentes em twolame aparecem após cada opção do FFmpeg, entre parênteses.

b (-b)

Define a taxa de bits expressa em bits/s para CBR. A opção b do twolame é expressa em kilobits/s. O valor padrão é 128k.

q (-V)

Define a qualidade para o suporte experimental a VBR. O intervalo máximo de valores vai de -50 a 50; o intervalo útil vai de -10 a 10. Quanto maior o valor, melhor a qualidade. Essa opção só é válida ao usar a ferramenta de linha de comando ffmpeg. Para usuários da interface de biblioteca, use global_quality.

mode (--mode)

Define o modo do áudio resultante. Valores possíveis:

‘auto’

Escolhe o modo automaticamente com base na entrada. Este é o padrão.

‘stereo’

Estéreo

‘joint_stereo’

Estéreo conjunto

‘dual_channel’

Canal duplo

‘mono’

Mono

psymodel (--psyc-mode)

Define o modelo psicoacústico a ser usado na codificação. O argumento deve ser um inteiro entre -1 e 4, incluindo ambos. Quanto maior o valor, melhor a qualidade. O valor padrão é 3.

energy_levels (--energy)

Habilita as extensões de níveis de energia quando definido como 1. O valor padrão é 0 (desabilitado).

error_protection (--protect)

Habilita a proteção de erros CRC quando definido como 1. O valor padrão é 0 (desabilitado).

copyright (--copyright)

Define a flag de copyright de áudio MPEG quando definido como 1. O valor padrão é 0 (desabilitado).

original (--original)

Define a flag de original de áudio MPEG quando definido como 1. O valor padrão é 0 (desabilitado).

8.12 libvo-amrwbenc

Encoder VisualOn Adaptive Multi-Rate Wideband.

Esse encoder requer a presença dos cabeçalhos e da biblioteca libvo-amrwbenc durante a configuração. Você precisa configurar a compilação explicitamente com --enable-libvo-amrwbenc --enable-version3.

Este é um encoder somente mono. Oficialmente, admite apenas a taxa de amostragem de 16000Hz, mas você pode substituí-la definindo strict como ‘unofficial’ ou um valor inferior.

8.12.1 Opções

b

Define a taxa de bits em bits/s. Somente as taxas de bits a seguir são compatíveis; caso contrário, a libavcodec arredondará para a taxa de bits válida mais próxima.

‘6600’ ‘8850’ ‘12650’ ‘14250’ ‘15850’ ‘18250’ ‘19850’ ‘23050’ ‘23850’ dtx

Permite a transmissão descontínua (gera ruído de conforto) quando definido como 1. O valor padrão é 0 (desabilitado).

8.13 libvorbis

Wrapper do encoder libvorbis.

Esse encoder requer a presença dos cabeçalhos e da biblioteca libvorbisenc durante a configuração. Você precisa configurar a compilação explicitamente com --enable-libvorbis.

8.13.1 Opções

O wrapper do libvorbis é compatível com as opções a seguir. O equivalente em oggenc de cada opção é indicado entre parênteses.

Para obter uma documentação mais precisa e completa das opções do libvorbis, consulte a documentação do libvorbisenc e do oggenc. Veja http://xiph.org/vorbis/, http://wiki.xiph.org/Vorbis-tools e oggenc(1).

b (-b)

Define a taxa de bits expressa em bits/s para ABR. A opção -b do oggenc é expressa em kilobits/s.

q (-q)

Define o ajuste de qualidade constante para VBR. O valor deve ser um número de ponto flutuante no intervalo de -1.0 a 10.0. Quanto maior o valor, melhor a qualidade. O valor padrão é ‘3.0’.

Essa opção só é válida ao usar a ferramenta de linha de comando ffmpeg. Para usuários da interface de biblioteca, use global_quality.

cutoff (--advanced-encode-option lowpass_frequency=N)

Define a largura de banda de corte em Hz; um valor 0 desabilita o corte. A opção correspondente do oggenc é expressa em kHz. O valor padrão é ‘0’ (corte desabilitado).

minrate (-m)

Define a taxa de bits mínima expressa em bits/s. A opção -m do oggenc é expressa em kilobits/s.

maxrate (-M)

Define a taxa de bits máxima expressa em bits/s. A opção -M do oggenc é expressa em kilobits/s. Isso só tem efeito no modo ABR.

iblock (--advanced-encode-option impulse_noisetune=N)

Define o viés do piso de ruído para blocos de impulso. O valor é um número de ponto flutuante de -15.0 a 0.0. Um viés negativo instrui o encoder a dar atenção especial à nitidez dos transientes no áudio codificado. A contrapartida de uma resposta transiente melhor é uma taxa de bits mais alta.

8.14 mjpeg

Encoder Motion JPEG.

8.14.1 Opções

huffman

Define a estratégia de codificação huffman. Valores possíveis:

‘default’

Usa as tabelas huffman padrão. Esta é a estratégia padrão.

‘optimal’

Calcula e usa tabelas huffman ótimas.

8.15 wavpack

Encoder de áudio sem perdas WavPack.

8.15.1 Opções

Os equivalentes para o utilitário de linha de comando wavpack são indicados entre parênteses.

8.15.1.1 Opções compartilhadas

As seguintes opções compartilhadas são válidas para esse encoder. Aqui serão documentadas apenas notas especiais sobre esse encoder em particular. Para o significado geral das opções, consulte o capítulo Opções de codec.

frame_size (--blocksize)

Para esse encoder, o intervalo dessa opção é de 128 a 131072. O padrão é decidido automaticamente com base na taxa de amostragem e no número de canais.

Para a fórmula completa de cálculo do padrão, consulte libavcodec/wavpackenc.c.

compression_level (-f , -h , -hh , and -x)

8.15.1.2 Opções privadas

joint_stereo (-j)

Define se o estéreo conjunto será habilitado. Os valores válidos são:

‘on (1)’

Força a codificação de áudio mid/side.

‘off (0)’

Força a codificação de áudio left/right.

‘auto’

Deixa o encoder decidir automaticamente.

optimize_mono

Define se a otimização para mono será habilitada. Essa opção só é válida para fluxos que não são mono. Valores disponíveis:

‘on’

habilitado

‘off’

desabilitado

9 Encoders de vídeo

Segue uma descrição de alguns dos encoders de vídeo atualmente disponíveis.

9.1 a64_multi, a64_multi5

Encoder de charset multicolor A64 / Commodore 64. O a64_multi5 é estendido com uma 5ª cor (colram).

9.2 Cinepak

Encoder Cinepak, também conhecido como CVID. Compatível com Windows 3.1 e MacOS clássico.

9.2.1 Opções

g integer

Intervalo de keyframe. Um keyframe é inserido pelo menos a cada -g quadros, às vezes antes.

q:v integer

Fator de qualidade. Quanto menor, melhor. Quanto maior, menor a taxa de bits. A tabela a seguir lista as taxas de bits ao codificar akiyo_cif.y4m para vários valores de -q:v com -g 100:

-q:v 1 1918 kb/s -q:v 2 1735 kb/s -q:v 4 1500 kb/s -q:v 10 1041 kb/s -q:v 20 826 kb/s -q:v 40 553 kb/s -q:v 100 394 kb/s -q:v 200 312 kb/s -q:v 400 266 kb/s -q:v 1000 237 kb/s max_extra_cb_iterations integer

Número máximo de passagens extras de recálculo do codebook; quanto mais, melhor, porém mais lento.

skip_empty_cb boolean

Evita o desperdício de bytes; ignora o decoder do MacOS clássico.

max_strips integer min_strips integer

O número mínimo e máximo de strips a usar. Um intervalo mais amplo às vezes melhora a qualidade. Mais strips geralmente resulta em melhor qualidade, mas custa mais bits. Menos strips tendem a gerar mais keyframes. Para compatibilidade com sistemas clássicos, use 1..3.

strip_number_adaptivity integer

Quanto o número de strips pode variar entre quadros. Quanto maior, melhor, porém mais lento.

9.3 ffv1

Encoder FFv1

9.3.1 Opções

As opções a seguir são compatíveis com o encoder FFv1 do FFmpeg.

context

Define o tamanho do contexto: 0 (padrão) é pequeno, 1 é grande.

coder

Define o coder:

‘rice’

Coder Golomb rice

‘range_def’

Coder de range com tabela padrão

‘range_tab’

Coder de range com tabela personalizada

slicecrc

-1 (padrão, automático), 1 usa crc com estado inicial e final zero, 2 usa crc com estado inicial e final diferente de zero

qtable

‘default’

padrão, automático

‘8bit’

usa o padrão de 8 bits

‘greater8bit’

usa o padrão de >8 bits

remap_optimizer

0 a 5, padrão 3; quanto esforço o encoder dedica à otimização da tabela de remapeamento.

9.4 GIF

Encoder de imagem/animação GIF.

9.4.1 Opções

gifflags integer

Define as flags usadas para a codificação GIF.

offsetting

Habilita o deslocamento de imagem.

O padrão é habilitado.

transdiff

Habilita a detecção de transparência entre quadros.

O padrão é habilitado.

gifimage integer

Habilita a codificação de uma imagem GIF completa por quadro, em vez de um GIF animado.

O valor padrão é 0.

global_palette integer

Grava uma paleta no cabeçalho GIF global sempre que possível.

Se desabilitado, uma paleta sempre será gravada em cada quadro, mesmo que uma paleta global tenha sido fornecida.

O valor padrão é 1.

9.5 Hap

Encoder de vídeo Vidvox Hap.

9.5.1 Opções

format integer

Especifica o formato Hap a ser codificado.

hap hap_alpha hap_q

O valor padrão é hap.

chunks integer

Especifica o número de chunks em que os quadros serão divididos, entre 1 e 64. Isso permite a decodificação multithread de quadros grandes, potencialmente às custas da taxa de dados. O encoder pode modificar esse valor para dividir os quadros de forma equilibrada.

O valor padrão é 1.

compressor integer

Especifica o compressor de segundo estágio a ser usado. Se definido como none, os chunks ficarão limitados a 1, já que quadros não comprimidos divididos em chunks não oferecem nenhum benefício.

none snappy

O valor padrão é snappy.

9.6 jpeg2000

O encoder nativo de jpeg 2000 é com perdas por padrão; a opção -q:v pode ser usada para definir a qualidade de codificação. A codificação sem perdas pode ser selecionada com -pred 1.

9.6.1 Opções

format integer

Pode ser definido como j2k ou jp2 (o padrão), o que possibilita armazenar pix_fmts que não sejam rgb.

tile_width integer

Define a largura do tile. O intervalo vai de 1 a 1073741824. O padrão é 256.

tile_height integer

Define a altura do tile. O intervalo vai de 1 a 1073741824. O padrão é 256.

pred integer

Permite definir o tipo de transformada wavelet discreta (DWT)

dwt97int (com perdas) dwt53 (sem perdas)

O padrão é dwt97int

sop boolean

Ative esta opção para adicionar um marcador SOP no início de cada pacote. Desativado por padrão.

eph boolean

Ative esta opção para adicionar um marcador EPH no final de cada cabeçalho de pacote. Desativado por padrão.

prog integer

Define a ordem de progressão que o encoder utilizará. Os valores possíveis são:

lrcp rlcp rpcl pcrl cprl

O padrão é lrcp.

layer_rates string

Por padrão, quando esta opção não é usada, a compressão é feita com base na métrica de qualidade. Esta opção permite comprimir com base na taxa de compressão. É possível especificar a taxa de compressão para cada nível. A taxa de compressão de uma camada l indica qual proporção do tamanho total do arquivo está contida nas primeiras l camadas.

Exemplo de uso:

ffmpeg -i input.bmp -c:v jpeg2000 -layer_rates "100,10,1" output.j2k

Isso comprimiria a imagem para conter 3 camadas, em que os dados contidos na primeira camada seriam comprimidos 1000 vezes, os das duas primeiras camadas seriam comprimidos 100 vezes, e todas as 3 camadas juntas conteriam todos os dados.

9.7 librav1e

Wrapper do encoder AV1 rav1e.

Requer a presença dos cabeçalhos e da biblioteca do rav1e durante a configuração. É necessário configurar a compilação explicitamente com --enable-librav1e.

9.7.1 Opções

qmax

Define o quantizador máximo a usar no modo de taxa de bits.

qmin

Define o quantizador mínimo a usar no modo de taxa de bits.

qp

Usa o modo de quantizador para codificar com o quantizador especificado (0-255).

speed

Seleciona o preset de velocidade (0-10) a usar na codificação.

tiles

Seleciona com quantos tiles codificar.

tile-rows

Seleciona com quantas linhas de tiles codificar.

tile-columns

Seleciona com quantas colunas de tiles codificar.

rav1e-params

Define as opções do rav1e usando uma lista de pares chave=valor separados por ":". Consulte rav1e --help para ver a lista de opções.

Por exemplo, para especificar opções de codificação do librav1e com -rav1e-params:

ffmpeg -i input -c:v librav1e -b:v 500K -rav1e-params speed=5:low_latency=true output.mp4

9.8 libaom-av1

Wrapper do encoder AV1 do libaom.

Requer a presença dos cabeçalhos e da biblioteca do libaom durante a configuração. É necessário configurar a compilação explicitamente com --enable-libaom.

9.8.1 Opções

O wrapper aceita as seguintes opções padrão do libavcodec:

b

Define a taxa de bits alvo em bits/segundo. Por padrão, usa o modo de taxa de bits variável. Se maxrate e minrate também forem definidos com o mesmo valor, usa o modo de taxa de bits constante; caso contrário, se crf também estiver definido, usa o modo de qualidade restrita.

g keyint_min

Define o posicionamento dos keyframes. O tamanho do GOP define a distância máxima entre keyframes; se for zero, o fluxo de saída será somente intra. A distância mínima é ignorada, a menos que seja igual ao tamanho do GOP, caso em que os keyframes sempre aparecerão em um intervalo fixo. Não é definido por padrão, de modo que, sem esta opção, a biblioteca tem total liberdade para escolher onde posicionar os keyframes.

qmin qmax

Define os valores mínimo/máximo de quantização. O intervalo válido vai de 0 a 63 (aviso: isso não corresponde aos valores de quantizador realmente usados pelo AV1; divida por quatro para converter os valores reais de quantizador para este intervalo). O padrão é min/max (sem restrição).

minrate maxrate bufsize rc_init_occupancy

Define os parâmetros de buffer do controle de taxa. Não é usado se não for definido; o padrão é taxa de bits variável sem restrições.

threads

Define o número de threads a usar durante a codificação. Para aproveitar totalmente o número de threads especificado, pode ser necessário também definir as opções tiles ou row-mt. O padrão é o número de threads de hardware compatíveis com a máquina host.

profile

Define o perfil de codificação. Por padrão, usa o perfil que corresponde à profundidade de bits e à subamostragem de croma da entrada.

O wrapper também tem algumas opções específicas:

cpu-used

Define o equilíbrio entre qualidade e velocidade de codificação. O intervalo válido vai de 0 a 8; números mais altos indicam maior velocidade e menor qualidade. O valor padrão é 1, que resulta em codificação lenta e de alta qualidade.

auto-alt-ref

Ativa o uso de quadros de referência alternativos. Por padrão, usa o valor interno padrão da biblioteca.

arnr-max-frames (frames)

Define o número máximo de quadros para a redução de ruído altref. O padrão é -1.

arnr-strength (strength)

Define a intensidade do filtro de redução de ruído altref. O intervalo vai de -1 a 6. O padrão é -1.

aq-mode (aq-mode)

Define o modo de quantização adaptativa. Valores possíveis:

‘none (0)’

Desativado.

‘variance (1)’

Baseado em variância.

‘complexity (2)’

Baseado em complexidade.

‘cyclic (3)’

Atualização cíclica.

tune (tune)

Define a métrica de distorção usada para ajustar o encoder. O padrão é psnr.

‘psnr (0)’ ‘ssim (1)’ lag-in-frames

Define o número máximo de quadros que o encoder pode manter em processamento simultâneo para fins de lookahead. Por padrão, usa o valor interno padrão da biblioteca.

error-resilience

Ativa recursos de resiliência a erros:

default

Melhora a resiliência contra a perda de quadros inteiros.

Não ativado por padrão.

crf

Define o equilíbrio entre qualidade e tamanho para os modos de qualidade constante (sem taxa de bits alvo) e qualidade restrita (com taxa de bits máxima alvo). O intervalo válido vai de 0 a 63; números mais altos indicam menor qualidade e menor tamanho de saída. Só é usado se definido; por padrão, apenas a taxa de bits alvo é usada.

static-thresh

Define um limiar de mudança nos blocos, abaixo do qual eles serão ignorados pelo encoder. É definido em unidades arbitrárias como um inteiro não negativo, com padrão zero (nenhum bloco é ignorado).

drop-threshold

Define um limiar para descartar quadros quando próximo dos limites do controle de taxa. É definido como uma porcentagem do buffer alvo; quando o buffer do controle de taxa cai abaixo dessa porcentagem, os quadros são descartados até que ele volte a se encher acima do limiar. O padrão é zero (nenhum quadro é descartado).

denoise-noise-level (level)

Quantidade de ruído a ser removida para a síntese de grão. A síntese de grão fica desativada se esta opção não for definida ou for definida como 0.

denoise-block-size (pixels)

Tamanho de bloco usado na redução de ruído para a síntese de grão. Se não for definido, o codec AV1 usa o valor padrão de 32.

undershoot-pct (pct)

Define a porcentagem de subutilização (mínima) da taxa de dados em relação à taxa de bits alvo. O intervalo vai de -1 a 100. O padrão é -1.

overshoot-pct (pct)

Define a porcentagem de excesso (máxima) da taxa de dados em relação à taxa de bits alvo. O intervalo vai de -1 a 1000. O padrão é -1.

minsection-pct (pct)

Variação percentual mínima da taxa de bits do GOP em relação à taxa de bits alvo. Se minsection-pct não for definido, o wrapper libaomenc a calcula da seguinte forma: (minrate * 100 / bitrate). O intervalo vai de -1 a 100. O padrão é -1 (não definido).

maxsection-pct (pct)

Variação percentual máxima da taxa de bits do GOP em relação à taxa de bits alvo. Se maxsection-pct não for definido, o wrapper libaomenc a calcula da seguinte forma: (maxrate * 100 / bitrate). O intervalo vai de -1 a 5000. O padrão é -1 (não definido).

frame-parallel (boolean)

Ativa recursos de decodificabilidade paralela de quadros. O padrão é true.

tiles

Define o número de tiles com o qual codificar o vídeo de entrada, como colunas x linhas. Números maiores permitem maior paralelismo tanto na codificação quanto na decodificação, mas podem reduzir a eficiência de codificação. Por padrão, usa o número mínimo de tiles exigido pelo tamanho do vídeo de entrada (isso é 1x1, ou seja, um único tile, para tamanhos até 4K inclusive).

tile-columns tile-rows

Define o número de tiles como log2 do número de linhas e colunas de tiles. Disponibilizado para compatibilidade com libvpx/VP9.

row-mt (Requires libaom >= 1.0.0-759-g90a15f4f2)

Ativa multithreading baseado em linhas. Desativado por padrão.

enable-cdef (boolean)

Ativa o Constrained Directional Enhancement Filter. O encoder libaom-av1 ativa o CDEF por padrão.

enable-restoration (boolean)

Ativa o Loop Restoration Filter. O padrão é true para o libaom-av1.

enable-global-motion (boolean)

Ativa o uso de movimento global para a predição de blocos. O padrão é true.

enable-intrabc (boolean)

Ativa o modo de cópia de bloco para a predição intra de blocos. Esse modo é útil para conteúdo de tela. O padrão é true.

enable-rect-partitions (boolean) (Requires libaom >= v2.0.0)

Ativa partições retangulares. O padrão é true.

enable-1to4-partitions (boolean) (Requires libaom >= v2.0.0)

Ativa partições 1:4/4:1. O padrão é true.

enable-ab-partitions (boolean) (Requires libaom >= v2.0.0)

Ativa partições de formato AB. O padrão é true.

enable-angle-delta (boolean) (Requires libaom >= v2.0.0)

Ativa a predição intra com delta de ângulo. O padrão é true.

enable-cfl-intra (boolean) (Requires libaom >= v2.0.0)

Ativa a predição intra de croma a partir da luma. O padrão é true.

enable-filter-intra (boolean) (Requires libaom >= v2.0.0)

Ativa o preditor intra por filtro. O padrão é true.

enable-intra-edge-filter (boolean) (Requires libaom >= v2.0.0)

Ativa o filtro de bordas intra. O padrão é true.

enable-smooth-intra (boolean) (Requires libaom >= v2.0.0)

Ativa o modo de predição intra suave. O padrão é true.

enable-paeth-intra (boolean) (Requires libaom >= v2.0.0)

Ativa o preditor paeth na predição intra. O padrão é true.

enable-palette (boolean) (Requires libaom >= v2.0.0)

Ativa o modo de predição por paleta. O padrão é true.

enable-flip-idtx (boolean) (Requires libaom >= v2.0.0)

Ativa o tipo de transformada estendido, incluindo FLIPADST_DCT, DCT_FLIPADST, FLIPADST_FLIPADST, ADST_FLIPADST, FLIPADST_ADST, IDTX, V_DCT, H_DCT, V_ADST, H_ADST, V_FLIPADST, H_FLIPADST. O padrão é true.

enable-tx64 (boolean) (Requires libaom >= v2.0.0)

Ativa a transformada de 64 pontos. O padrão é true.

reduced-tx-type-set (boolean) (Requires libaom >= v2.0.0)

Usa um conjunto reduzido de tipos de transformada. O padrão é false.

use-intra-dct-only (boolean) (Requires libaom >= v2.0.0)

Usa apenas DCT para os modos INTRA. O padrão é false.

use-inter-dct-only (boolean) (Requires libaom >= v2.0.0)

Usa apenas DCT para os modos INTER. O padrão é false.

use-intra-default-tx-only (boolean) (Requires libaom >= v2.0.0)

Usa apenas a transformada padrão para os modos INTRA. O padrão é false.

enable-ref-frame-mvs (boolean) (Requires libaom >= v2.0.0)

Ativa a predição temporal de vetores de movimento. O padrão é true.

enable-reduced-reference-set (boolean) (Requires libaom >= v2.0.0)

Usa um conjunto reduzido de referências simples e compostas. O padrão é false.

enable-obmc (boolean) (Requires libaom >= v2.0.0)

Ativa o obmc. O padrão é true.

enable-dual-filter (boolean) (Requires libaom >= v2.0.0)

Ativa o filtro dual. O padrão é true.

enable-diff-wtd-comp (boolean) (Requires libaom >= v2.0.0)

Ativa o composto ponderado por diferença. O padrão é true.

enable-dist-wtd-comp (boolean) (Requires libaom >= v2.0.0)

Ativa o composto ponderado por distância. O padrão é true.

enable-onesided-comp (boolean) (Requires libaom >= v2.0.0)

Ativa o composto unilateral. O padrão é true.

enable-interinter-wedge (boolean) (Requires libaom >= v2.0.0)

Ativa o composto em cunha interinter. O padrão é true.

enable-interintra-wedge (boolean) (Requires libaom >= v2.0.0)

Ativa o composto em cunha interintra. O padrão é true.

enable-masked-comp (boolean) (Requires libaom >= v2.0.0)

Ativa o composto mascarado. O padrão é true.

enable-interintra-comp (boolean) (Requires libaom >= v2.0.0)

Ativa o composto interintra. O padrão é true.

enable-smooth-interintra (boolean) (Requires libaom >= v2.0.0)

Ativa o modo interintra suave. O padrão é true.

aom-params

Define as opções do libaom usando uma lista de pares chave=valor separados por ":". Para ver a lista de opções aceitas, consulte aomenc --help na seção "AV1 Specific Options".

Por exemplo, para especificar opções de codificação do libaom com -aom-params:

ffmpeg -i input -c:v libaom-av1 -b:v 500K -aom-params tune=psnr:enable-tpl-model=1 output.mp4

9.9 liboapv

Wrapper do encoder do codec Advanced Professional Video.

Este encoder requer a presença dos cabeçalhos e da biblioteca do liboapv durante a configuração. É necessário configurar a compilação explicitamente com --enable-liboapv.

Muitas opções do encoder liboapv são mapeadas para opções globais de codec do FFmpeg, enquanto as opções exclusivas do encoder são disponibilizadas por meio de opções privadas.

O site do projeto apv é https://github.com/AcademySoftwareFoundation/openapv.

9.9.1 Opções

As seguintes opções são aceitas pelo wrapper liboapv.

Para obter uma documentação mais detalhada das opções do liboapv, consulte a documentação do liboapv.

preset

Define o equilíbrio entre qualidade e velocidade [fastest, fast, medium, slow, placebo, default]

qp

Define o valor do parâmetro de quantização para o modo de controle de taxa CQP.

oapv-params (parse_apv_params)

Define as opções do liboapvenc usando uma lista de pares chave=valor separados por ":". Consulte o guia do usuário do encoder liboapv para ver a lista de parâmetros aceitos.

9.10 libsvtav1

Wrapper do encoder SVT-AV1.

Requer a presença dos cabeçalhos e da biblioteca do SVT-AV1 durante a configuração. É necessário configurar a compilação explicitamente com --enable-libsvtav1.

9.10.1 Opções

profile

Define o perfil de codificação.

‘main’ ‘high’ ‘professional’ level

Define o nível do operating point. Por exemplo: ’4.0’

hielevel

Define os níveis de predição hierárquica.

‘3level’ ‘4level’

Este é o padrão.

tier

Define o tier do operating point.

‘main’

Este é o padrão.

‘high’ qmax

Define o quantizador máximo a usar em um modo de taxa de bits.

qmin

Define o quantizador mínimo a usar em um modo de taxa de bits.

crf

Valor do fator de taxa constante usado no modo de controle de taxa crf (0-63).

qp

Define o quantizador usado no modo de controle de taxa cqp (0-63).

sc_detection

Ativa a detecção de mudança de cena.

la_depth

Define o número de quadros de lookahead (0-120).

preset

Define o equilíbrio entre qualidade e velocidade, no intervalo de 0 a 13. Valores mais altos são mais rápidos, porém de menor qualidade.

tile_rows

Define o log2 do número de linhas de tiles a usar (0-6).

tile_columns

Define o log2 do número de colunas de tiles a usar (0-4).

svtav1-params

Define as opções do SVT-AV1 usando uma lista de pares chave=valor separados por ":". Consulte o guia do usuário do encoder SVT-AV1 para ver a lista de parâmetros aceitos.

9.11 libsvtjpegxs

Wrapper do encoder SVT-JPEG-XS.

Requer a presença dos cabeçalhos e da biblioteca do SVT-JPEG-XS durante a configuração. É necessário configurar a compilação explicitamente com --enable-libsvtjpegxs.

9.11.1 Opções

decomp_v

Define o nível de decomposição vertical

decomp_h

Define o nível de decomposição horizontal

quantization

Define o algoritmo de quantização.

‘deadzone’ ‘uniform’ coding-signs

Ativa a estratégia de tratamento de sinais

‘disable’ ‘fast’ ‘full’ coding-sigf

Ativa a codificação de significância

coding-vpred

Ativa a codificação de predição vertical

‘disable’ ‘no_residuals’ ‘no_coeffs’

9.12 libjxl

Wrapper do encoder JPEG XL do libjxl.

Requer a presença dos cabeçalhos e da biblioteca do libjxl durante a configuração. É necessário configurar a compilação explicitamente com --enable-libjxl.

9.12.1 Opções

O wrapper libjxl aceita as seguintes opções:

distance

Define a distância Butteraugli alvo. É um ajuste de qualidade: uma distância menor produz maior qualidade, sendo distance=1.0 aproximadamente comparável à Quality 90 do libjpeg para conteúdo fotográfico. Definir distance=0.0 produz uma codificação verdadeiramente sem perdas. Os valores válidos vão de 0.0 a 15.0, e valores razoáveis raramente ultrapassam 5.0. Definir distance=0.1 costuma resultar em transparência para a maioria das entradas. O padrão é 1.0.

effort

Define o esforço de codificação usado. Valores de esforço mais altos produzem uma qualidade mais consistente e geralmente uma curva qualidade/bpp melhor, ao custo de exigir mais tempo de CPU. Os valores válidos vão de 1 a 9, e o padrão é 7.

modular

Força o encoder a usar o modo Modular em vez de escolher automaticamente. Por padrão, usa VarDCT para a codificação com perdas e Modular para a sem perdas. VarDCT geralmente é superior a Modular na codificação com perdas, mas não é compatível com codificação sem perdas.

9.13 libkvazaar

Encoder Kvazaar H.265/HEVC.

Requer a presença dos cabeçalhos e da biblioteca do libkvazaar durante a configuração. É necessário configurar a compilação explicitamente com --enable-libkvazaar.

9.13.1 Opções

b

Define a taxa de bits de vídeo alvo em bit/s e ativa o controle de taxa.

kvazaar-params

Define os parâmetros do kvazaar como uma lista de pares nome=valor separados por vírgulas (,). Consulte a documentação do kvazaar para ver a lista de opções.

9.14 libopenh264

Wrapper do encoder H.264/MPEG-4 AVC libopenh264 da Cisco.

Este encoder requer a presença dos cabeçalhos e da biblioteca do libopenh264 durante a configuração. É necessário configurar a compilação explicitamente com --enable-libopenh264. A biblioteca é detectada usando pkg-config.

Para mais informações sobre a biblioteca, consulte http://www.openh264.org.

9.14.1 Opções

As seguintes opções globais do FFmpeg afetam a configuração do encoder libopenh264.

b

Define a taxa de bits (como número de bits por segundo).

g

Define o tamanho do GOP.

maxrate

Define a taxa de bits máxima (como número de bits por segundo).

flags +global_header

Define o cabeçalho global no bitstream.

slices

Define o número de slices, usado na codificação paralelizada. O valor padrão é 0. Só é usado quando slice_mode é definido como ‘fixed’.

loopfilter

Ativa o filtro de loop se definido como 1 (ativado automaticamente). Para desativar, defina o valor como 0.

profile

Define restrições de perfil. Se definido com o valor ‘main’, ativa o CABAC (define a flag SEncParamExt.iEntropyCodingModeFlag como 1).

max_nal_size

Define o tamanho máximo do NAL em bytes.

allow_skip_frames

Permite pular quadros para atingir a taxa de bits alvo, se definido como 1.

9.15 libtheora

Wrapper do encoder Theora libtheora.

Requer a presença dos cabeçalhos e da biblioteca do libtheora durante a configuração. É necessário configurar a compilação explicitamente com --enable-libtheora.

Para mais informações sobre o projeto libtheora, consulte http://www.theora.org/.

9.15.1 Opções

As seguintes opções globais são mapeadas para opções internas do libtheora que afetam a qualidade e a taxa de bits do fluxo codificado.

b

Define a taxa de bits de vídeo em bit/s para o modo CBR (taxa de bits constante). Se o modo VBR (taxa de bits variável) estiver ativado, esta opção é ignorada.

flags

Usada para ativar a codificação em modo de qualidade constante (VBR) por meio da flag qscale, e para ativar os modos pass1 e pass2.

g

Define o tamanho do GOP.

global_quality

Define a qualidade global como um número inteiro em unidades lambda.

Só é relevante quando o modo VBR está ativado com flags +qscale. O valor é convertido para unidades QP dividindo-o por FF_QP2LAMBDA, é limitado ao intervalo [0 - 10] e depois multiplicado por 6.3 para obter um valor no intervalo nativo do libtheora [0-63]. Um valor mais alto corresponde a uma qualidade maior.

q

Ativa o modo VBR quando definido com um valor não negativo, e define o valor de qualidade constante como um valor de ponto flutuante de precisão dupla em unidades QP.

O valor é limitado ao intervalo [0-10] e depois multiplicado por 6.3 para obter um valor no intervalo nativo do libtheora [0-63].

Esta opção só é válida ao usar a ferramenta de linha de comando ffmpeg. Para quem usa a interface de biblioteca, utilize global_quality.

9.15.2 Exemplos

  • Definir a codificação de qualidade constante (VBR) máxima com o ffmpeg:

    ffmpeg -i INPUT -codec:v libtheora -q:v 10 OUTPUT.ogg
    
  • Usar o ffmpeg para converter um fluxo de vídeo Theora CBR de 1000 kbps:

    ffmpeg -i INPUT -codec:v libtheora -b:v 1000k OUTPUT.ogg
    

9.16 libvpx

Formato VP8/VP9 compatível por meio do libvpx.

Requer a presença dos cabeçalhos e da biblioteca do libvpx durante a configuração. É necessário configurar a compilação explicitamente com --enable-libvpx.

9.16.1 Opções

As seguintes opções são aceitas pelo wrapper libvpx. As opções ou valores equivalentes do vpxenc são indicados entre parênteses para facilitar a migração.

Para reduzir a duplicação de documentação, aqui são documentadas apenas as opções privadas e algumas outras que exigem atenção especial. Para a documentação das opções genéricas não documentadas aqui, consulte o capítulo Opções de codec.

Para obter mais documentação sobre as opções do libvpx, execute o comando ffmpeg -h encoder=libvpx, ffmpeg -h encoder=libvpx-vp9 ou vpxenc --help. Mais informações estão disponíveis na documentação da API do libvpx.

b (target-bitrate)

Define a taxa de bits em bits/s. Observe que a opção b do FFmpeg é expressa em bits/s, enquanto o target-bitrate do vpxenc é em kilobits/s.

g (kf-max-dist) keyint_min (kf-min-dist) qmin (min-q)

Quantizador mínimo (melhor qualidade).

qmax (max-q)

Quantizador máximo (pior qualidade). Pode ser alterado por quadro.

bufsize (buf-sz , buf-optimal-sz)

Define o tamanho do buffer de controle de taxa (em bits). Observe que as opções do vpxenc são especificadas em milissegundos; o wrapper libvpx converte esse valor da seguinte forma: buf-sz = bufsize * 1000 / bitrate, buf-optimal-sz = bufsize * 1000 / bitrate * 5 / 6.

rc_init_occupancy (buf-initial-sz)

Define o número de bits que devem ser carregados no buffer de rc antes do início da decodificação. Observe que a opção do vpxenc é especificada em milissegundos; o wrapper libvpx converte esse valor da seguinte forma: rc_init_occupancy * 1000 / bitrate.

undershoot-pct

Define a porcentagem de subutilização (mínima) da taxa de dados em relação à taxa de bits alvo.

overshoot-pct

Define a porcentagem de excesso (máxima) da taxa de dados em relação à taxa de bits alvo.

skip_threshold (drop-frame) qcomp (bias-pct) maxrate (maxsection-pct)

Define a taxa de bits máxima do GOP em bits/s. Observe que a opção do vpxenc é especificada como uma porcentagem da taxa de bits alvo; o wrapper libvpx converte esse valor da seguinte forma: (maxrate * 100 / bitrate).

minrate (minsection-pct)

Define a taxa de bits mínima do GOP em bits/s. Observe que a opção do vpxenc é especificada como uma porcentagem da taxa de bits alvo; o wrapper libvpx converte esse valor da seguinte forma: (minrate * 100 / bitrate).

minrate, maxrate, b end-usage=cbr

(minrate == maxrate == bitrate).

crf (end-usage=cq , cq-level) tune (tune)

‘psnr (psnr)’ ‘ssim (ssim)’ quality, deadline (deadline)

‘best’

Usa o deadline de melhor qualidade. Mal nomeada e bastante lenta, esta opção deve ser evitada, pois pode gerar uma saída de qualidade pior do que good.

‘good’

Usa o deadline de boa qualidade. É um bom equilíbrio entre velocidade e qualidade quando usado com a opção cpu-used.

‘realtime’

Usa o deadline de qualidade em tempo real.

speed, cpu-used (cpu-used)

Define o modificador da relação qualidade/velocidade. Valores mais altos aceleram a codificação em detrimento da qualidade.

nr (noise-sensitivity) static-thresh

Define um limiar de mudança nos blocos, abaixo do qual eles serão ignorados pelo encoder.

slices (token-parts)

Observe que a opção slices do FFmpeg indica o número total de partições, enquanto o token-parts do vpxenc é dado como log2(partitions).

max-intra-rate

Define a taxa de bits máxima dos quadros I como uma porcentagem da taxa de bits alvo. Um valor de 0 significa sem limite.

force_key_frames

VPX_EFLAG_FORCE_KF

Relacionado a quadros de referência alternativos

auto-alt-ref

Ativa o uso de quadros de referência alternativos (somente 2 passadas). Valores maiores que 1 ativam quadros de referência alternativos em múltiplas camadas (somente VP9).

arnr-maxframes

Define o número máximo de quadros para a redução de ruído altref.

arnr-type

Define o tipo de filtro de redução de ruído altref: backward, forward, centered.

arnr-strength

Define a intensidade do filtro de redução de ruído altref.

rc-lookahead, lag-in-frames (lag-in-frames)

Define o número de quadros de lookahead para o tipo de quadro e o controle de taxa.

min-gf-interval

Define o intervalo mínimo entre quadros golden/de referência alternativo (somente VP9).

error-resilient

Ativa recursos de resiliência a erros.

sharpness integer

Aumenta a nitidez em detrimento de um PSNR menor. O intervalo válido é [0, 7].

ts-parameters

Define a configuração de escalabilidade temporal usando uma lista de pares chave=valor separados por ":". Por exemplo, para especificar parâmetros de escalabilidade temporal com o ffmpeg:

ffmpeg -i INPUT -c:v libvpx -ts-parameters ts_number_layers=3:\
ts_target_bitrate=250,500,1000:ts_rate_decimator=4,2,1:\
ts_periodicity=4:ts_layer_id=0,2,1,2:ts_layering_mode=3 OUTPUT

A seguir, uma breve explicação de cada parâmetro; consulte struct vpx_codec_enc_cfg em vpx/vpx_encoder.h para mais detalhes.

ts_number_layers

Número de camadas de codificação temporal.

ts_target_bitrate

Taxa de bits alvo para cada camada temporal (em kbps). (A taxa de bits deve incluir a da camada temporal inferior.)

ts_rate_decimator

Fator de dizimação da taxa de quadros para cada camada temporal.

ts_periodicity

Comprimento da sequência que define a associação dos quadros às camadas temporais.

ts_layer_id

Modelo que define a associação dos quadros às camadas temporais.

ts_layering_mode

(opcional) Seleciona a estrutura temporal a partir de um conjunto de modos de camadas temporais predefinidos. Atualmente aceita as seguintes opções.

0

Nenhuma flag de camadas temporais é fornecida internamente; depende de flags passadas pelo campo metadata em AVFrame, com as seguintes chaves.

vp8-flags

Define as flags passadas ao encoder para indicar o esquema de referência do quadro atual. Consulte a função vpx_codec_encode em vpx/vpx_encoder.h para mais detalhes.

temporal_id

Define explicitamente o temporal id do quadro atual a codificar.

2

Duas camadas temporais. 0-1...

3

Três camadas temporais. 0-2-1-2...; com um único quadro de referência.

4

O mesmo que a opção "3", exceto que há uma dependência entre os dois quadros da camada temporal 2 dentro do período temporal.

Opções específicas de VP8

screen-content-mode

Modo de conteúdo de tela, um dos seguintes: 0 (desativado), 1 (tela), 2 (tela com controle de taxa mais agressivo).

Opções específicas de VP9

lossless

Ativa o modo sem perdas.

tile-columns

Define o número de colunas de tiles a usar. Observe que é dado como log2(tile_columns). Por exemplo, 8 colunas de tiles seriam solicitadas definindo a opção tile-columns como 3.

tile-rows

Define o número de linhas de tiles a usar. Observe que é dado como log2(tile_rows). Por exemplo, 4 linhas de tiles seriam solicitadas definindo a opção tile-rows como 2.

frame-parallel

Ativa recursos de decodificabilidade paralela de quadros.

aq-mode

Define o modo de quantização adaptativa (0: desativado (padrão), 1: variância, 2: complexidade, 3: atualização cíclica, 4: equator360).

colorspace color-space

Define o espaço de cor de entrada. O bitstream VP9 permite sinalizar os seguintes espaços de cor:

‘rgb’ sRGB ‘bt709’ bt709 ‘unspecified’ unknown ‘bt470bg’ bt601 ‘smpte170m’ smpte170 ‘smpte240m’ smpte240 ‘bt2020_ncl’ bt2020 row-mt boolean

Ativa multithreading baseado em linhas.

tune-content

Define o tipo de conteúdo: default (0), screen (1), film (2).

corpus-complexity

O modo VBR de corpus é uma variante do VBR padrão em que o ponto médio da distribuição de complexidade é fornecido em vez de calculado para um clipe ou trecho específico.

O intervalo válido é [0, 10000]. 0 (padrão) usa o VBR padrão.

enable-tpl boolean

Ativa o modelo de dependência temporal.

ref-frame-config

Usando metadados por quadro, defina os membros da estrutura vpx_svc_ref_frame_config_t em vpx/vp8cx.h para controlar com precisão os esquemas de referência e o gerenciamento do buffer de quadros.
Use uma lista de pares chave=valor separados por :. Por exemplo,

av_dict_set(&av_frame->metadata, "ref-frame-config", \
"rfc_update_buffer_slot=7:rfc_lst_fb_idx=0:rfc_gld_fb_idx=1:rfc_alt_fb_idx=2:rfc_reference_last=0:rfc_reference_golden=0:rfc_reference_alt_ref=0");

rfc_update_buffer_slot

Indica o número do slot de buffer a ser atualizado

rfc_update_last

Indica se o quadro LAST deve ser atualizado

rfc_update_golden

Indica se o quadro GOLDEN deve ser atualizado

rfc_update_alt_ref

Indica se o quadro ALT_REF deve ser atualizado

rfc_lst_fb_idx

Índice de buffer do quadro LAST

rfc_gld_fb_idx

Índice de buffer do quadro GOLDEN

rfc_alt_fb_idx

Índice de buffer do quadro ALT_REF

rfc_reference_last

Indica se o quadro LAST deve ser referenciado

rfc_reference_golden

Indica se o quadro GOLDEN deve ser referenciado

rfc_reference_alt_ref

Indica se o quadro ALT_REF deve ser referenciado

rfc_reference_duration

Indica a duração do quadro

Para mais informações sobre libvpx, consulte: http://www.webmproject.org/

9.17 libvvenc

VVenC é um wrapper de encoder H.266/VVC.

Este encoder requer a presença dos cabeçalhos e da biblioteca libvvenc durante a configuração. Você precisa configurar a compilação explicitamente com --enable-libvvenc.

O site do projeto VVenC está em https://github.com/fraunhoferhhi/vvenc.

9.17.1 Pixel formats compatíveis

O VVenC oferece suporte apenas a espaços de cor de 10 bits como entrada. No entanto, a profundidade de bits interna (codificada) pode ser definida como 8 bits ou 10 bits em tempo de execução.

9.17.2 Opções

b

Define a taxa de bits de vídeo alvo.

g

Define o tamanho do GOP. Atualmente há suporte para g=1 (somente Intra) ou o valor padrão.

preset

Define o preset do VVenC.

levelidc

Define o level idc.

tier

Define o tier do vvc.

qp

Define o parâmetro de quantização constante.

subopt boolean

Define a otimização subjetiva (baseada em percepção). O valor padrão é 1 (ativado).

bitdepth8 boolean

Define o modo de codificação em 8 bits em vez de 10 bits. O valor padrão é 0 (desativado).

period

define o período de atualização (intra) em segundos.

vvenc-params

Define as opções do vvenc usando uma lista de pares chave=valor separados por “:”. Consulte vvencapp --fullhelp ou vvencFFapp --fullhelp para obter a lista de opções.

Por exemplo, as opções podem ser fornecidas da seguinte forma:

intraperiod=64:decodingrefreshtype=idr:poc0idr=1:internalbitdepth=8

Por exemplo, as opções de codificação podem ser fornecidas com -vvenc-params:

ffmpeg -i input -c:v libvvenc -b 1M -vvenc-params intraperiod=64:decodingrefreshtype=idr:poc0idr=1:internalbitdepth=8 output.mp4

9.18 libwebp

libwebp, wrapper de encoder de imagens WebP

libwebp é o encoder oficial do Google para imagens WebP. Ele pode codificar tanto no modo com perdas quanto no modo sem perdas. As imagens com perdas são essencialmente um wrapper em torno de um quadro VP8. As imagens sem perdas são um codec separado, desenvolvido pelo Google.

9.18.1 Pixel format

Atualmente, devido a limitações do formato e do próprio libwebp, o libwebp só é compatível com YUV420 para o modo com perdas e com RGB para o modo sem perdas. O canal alfa é compatível com ambos os modos. Devido a limitações da API, se for passado RGB ao codificar com perdas ou YUV ao codificar sem perdas, o pixel format é convertido automaticamente usando funções do libwebp. Isso não é ideal e é feito apenas por conveniência.

9.18.2 Opções

-lossless boolean

Ativa/desativa o uso do modo sem perdas. O valor padrão é 0.

-compression_level integer

Para o modo com perdas, isso representa um equilíbrio entre qualidade e velocidade. Valores mais altos oferecem melhor qualidade para um determinado tamanho, ao custo de um tempo de codificação maior. Para o modo sem perdas, isso representa um equilíbrio entre tamanho e velocidade. Valores mais altos produzem um tamanho menor, ao custo de um tempo de codificação maior. Mais especificamente, controla o número de algoritmos e ferramentas de compressão extras utilizados, e varia a combinação dessas ferramentas. Isso corresponde à opção method do libwebp. O intervalo válido é de 0 a 6. O valor padrão é 4.

-quality float

Para a codificação com perdas, isso controla a qualidade da imagem. Para a codificação sem perdas, isso controla o esforço e o tempo dedicados à compressão. O intervalo é de 0 a 100. O valor padrão é 75.

-preset type

Preset de configuração. Ele aplica automaticamente algumas configurações com base no tipo geral da imagem.

none

Não usa nenhum preset.

default

Usa o valor padrão do encoder.

picture

Imagem digital, como retrato ou foto de interior

photo

Fotografia externa, com iluminação natural

drawing

Desenho manual ou de linhas, com detalhes de alto contraste

icon

Imagens coloridas de tamanho pequeno

text

Semelhante a texto

9.19 libx264, libx264rgb

x264 é um wrapper de encoder H.264/MPEG-4 AVC.

Este encoder requer a presença dos cabeçalhos e da biblioteca libx264 durante a configuração. Você precisa configurar a compilação explicitamente com --enable-libx264.

O libx264 oferece suporte a um número impressionante de recursos, incluindo transformada espacial adaptativa 8x8 e 4x4, posicionamento adaptativo de quadros B, codificação de entropia CAVLC/CABAC, entrelaçamento (MBAFF), modo sem perdas e otimizações psicovisuais (psy) para retenção de detalhes (quantização adaptativa, psy-RD, psy-trellis).

Muitas opções do encoder libx264 são mapeadas para opções globais de codec do FFmpeg, enquanto as opções exclusivas do encoder são disponibilizadas como opções privadas. Além disso, as opções privadas x264opts e x264-params permitem passar uma lista de pares key=value, da forma aceita pela função x264_param_parse do libx264.

O site do projeto x264 está em http://www.videolan.org/developers/x264.html.

O encoder libx264rgb é igual ao libx264, exceto que aceita como entrada pixel formats RGB empacotados em vez de YUV.

9.19.1 Pixel formats compatíveis

O x264 é compatível com espaços de cor de 8 a 10 bits. A profundidade de bits exata é controlada no momento da configuração (configure) do x264.

9.19.2 Opções

As opções a seguir são compatíveis com o wrapper libx264. As opções ou valores equivalentes do x264 são indicados entre parênteses para facilitar a migração.

Para reduzir a duplicação de documentação, aqui são documentadas apenas as opções privadas e algumas outras que exigem atenção especial. Para a documentação das opções genéricas não documentadas aqui, consulte o capítulo Opções de codec.

Para obter uma documentação mais precisa e completa das opções do libx264, execute o comando x264 --fullhelp ou consulte a documentação do libx264.

Na lista abaixo, observe que o nome da opção do x264 é exibido entre parênteses após o nome correspondente no libavcodec, quando existe um mapeamento direto.

b (bitrate)

Define a taxa de bits em bits/s. Observe que a opção b do FFmpeg é expressa em bits/s, enquanto a bitrate do x264 é em kilobits/s.

bf (bframes)

Número de quadros B entre quadros I e P

g (keyint)

Tamanho máximo do GOP

qmin (qpmin)

Escala mínima do quantizador

qmax (qpmax)

Escala máxima do quantizador

qdiff (qpstep)

Diferença máxima entre escalas do quantizador

qblur (qblur)

Desfoque da curva do quantizador

qcomp (qcomp)

Fator de compressão da curva do quantizador

refs (ref)

Número de quadros de referência que cada quadro P pode usar. O intervalo é de 0 a 16.

level (level)

Define o valor de x264_param_t.i_level_idc caso o valor seja positivo; caso contrário, ele é ignorado.

Esse valor pode ser definido usando a API AVCodecContext (por exemplo, definindo diretamente o valor de AVCodecContext), e é especificado como um número inteiro mapeado para o nível correspondente (por exemplo, o valor 31 é mapeado para o H.264 level IDC "3.1", conforme definido na tabela x264_levels). Ele é ignorado quando definido com um valor não positivo.

Como alternativa, pode ser definido como uma opção privada, substituindo o valor definido em AVCodecContext; nesse caso, deve ser especificado como o identificador de level IDC (por exemplo, "3.1"), conforme definido pelo Anexo A do H.264.

sc_threshold (scenecut)

Define o limiar para a detecção de mudança de cena.

trellis (trellis)

Executa a quantização Trellis para aumentar a eficiência. Habilitada por padrão.

nr (nr)

Redução de ruído

me_range (merange)

Intervalo máximo da busca de movimento, em pixels.

me_method (me)

Define o método de estimativa de movimento. Valores possíveis, em ordem decrescente de velocidade:

‘dia (dia)’ ‘epzs (dia)’

Busca em diamante com raio 1 (mais rápida). ‘epzs’ é um alias de ‘dia’.

‘hex (hex)’

Busca hexagonal com raio 2.

‘umh (umh)’

Busca multi-hexagonal irregular.

‘esa (esa)’

Busca exaustiva.

‘tesa (tesa)’

Busca exaustiva de Hadamard (mais lenta).

forced-idr

Normalmente, ao forçar um tipo de quadro I, o encoder pode selecionar qualquer tipo de quadro I. Esta opção o obriga a escolher um quadro IDR.

subq (subme)

Método de estimativa de movimento em subpixel.

b_strategy (b-adapt)

Algoritmo de decisão para posicionamento adaptativo de quadros B. Use apenas na primeira passada.

keyint_min (min-keyint)

Tamanho mínimo do GOP.

coder

Define o encoder de entropia. Valores possíveis:

‘ac’

Habilita o CABAC.

‘vlc’

Habilita o CAVLC e desabilita o CABAC. Produz o mesmo efeito que a opção --no-cabac do x264.

cmp

Define o algoritmo de comparação para a estimativa de movimento em pixel inteiro. Valores possíveis:

‘chroma’

Habilita o croma na estimativa de movimento.

‘sad’

Ignora o croma na estimativa de movimento. Produz o mesmo efeito que a opção --no-chroma-me do x264.

threads (threads)

Número de threads de codificação.

thread_type

Define a técnica de multithreading. Valores possíveis:

‘slice’

Multithreading baseado em slices. Produz o mesmo efeito que a opção --sliced-threads do x264.

‘frame’

Multithreading baseado em quadros.

flags

Define as flags de codificação. Pode ser usada para desabilitar o GOP fechado e habilitar o GOP aberto, definindo-a como -cgop. O resultado é semelhante ao comportamento da opção --open-gop do x264.

rc_init_occupancy (vbv-init)

Ocupação inicial do buffer VBV

preset (preset)

Define o preset de codificação.

tune (tune)

Define o ajuste (tune) dos parâmetros de codificação.

profile (profile)

Define as restrições de perfil.

fastfirstpass

Quando definida como 1, habilita configurações rápidas ao codificar a primeira passada. Quando definida como 0, tem o mesmo efeito que a opção --slow-firstpass do x264.

crf (crf)

Define a qualidade para o modo de qualidade constante.

crf_max (crf-max)

No modo CRF, impede que o VBV reduza a qualidade além deste ponto.

qp (qp)

Define o parâmetro do método de controle de taxa por quantização constante.

aq-mode (aq-mode)

Define o método de AQ. Valores possíveis:

‘none (0)’

Desabilitado.

‘variance (1)’

AQ por variância (máscara de complexidade).

‘autovariance (2)’

AQ por variância automática (experimental).

aq-strength (aq-strength)

Define a intensidade do AQ, reduzindo blocagem e desfoque em áreas planas e com textura.

psy

Quando definida como 1, usa otimizações psicovisuais. Quando definida como 0, tem o mesmo efeito que a opção --no-psy do x264.

psy-rd (psy-rd)

Define a intensidade da otimização psicovisual, no formato psy-rd:psy-trellis.

rc-lookahead (rc-lookahead)

Define o número de quadros a serem antecipados (lookahead) para o tipo de quadro e o controle de taxa.

weightb

Quando definida como 1, habilita a predição ponderada para quadros B. Quando definida como 0, tem o mesmo efeito que a opção --no-weightb do x264.

weightp (weightp)

Define o método de predição ponderada para quadros P. Valores possíveis:

‘none (0)’

Desabilitado

‘simple (1)’

Habilita apenas referências ponderadas

‘smart (2)’

Habilita referências ponderadas e duplicatas

ssim (ssim)

Habilita o cálculo e a exibição das estatísticas de SSIM após a codificação.

intra-refresh (intra-refresh)

Quando definida como 1, habilita o uso de Periodic Intra Refresh em vez de quadros IDR.

avcintra-class (class)

Configura o encoder para gerar AVC-Intra. Os valores válidos são 50, 100 e 200

bluray-compat (bluray-compat)

Configura o encoder para ser compatível com o padrão bluray. É uma forma abreviada de definir "bluray-compat=1 force-cfr=1".

b-bias (b-bias)

Define a influência sobre a frequência de uso de quadros B.

b-pyramid (b-pyramid)

Define o método para manter alguns quadros B como referências. Valores possíveis:

‘none (none)’

Desabilitado.

‘strict (strict)’

Pirâmide estritamente hierárquica.

‘normal (normal)’

Não estrita (não compatível com Blu-ray).

mixed-refs

Quando definida como 1, habilita o uso de uma referência por partição, em vez de uma referência por macrobloco. Quando definida como 0, tem o mesmo efeito que a opção --no-mixed-refs do x264.

8x8dct

Quando definida como 1, habilita a transformada espacial adaptativa (transformada 8x8 do perfil high). Quando definida como 0, tem o mesmo efeito que a opção --no-8x8dct do x264.

fast-pskip

Quando definida como 1, habilita a detecção antecipada de SKIP em quadros P. Quando definida como 0, tem o mesmo efeito que a opção --no-fast-pskip do x264.

aud (aud)

Quando definida como 1, habilita o uso de access unit delimiters.

mbtree

Quando definida como 1, habilita o controle de taxa por árvore de macroblocos (macroblock tree). Quando definida como 0, tem o mesmo efeito que a opção --no-mbtree do x264.

deblock (deblock)

Define os parâmetros do filtro de loop, no formato alpha:beta.

cplxblur (cplxblur)

Define a redução de flutuações no QP (antes da compressão da curva).

partitions (partitions)

Define as partições a considerar, como uma lista de valores separados por vírgula. Valores possíveis na lista:

‘p8x8’

Partição 8x8 de quadro P.

‘p4x4’

Partição 4x4 de quadro P.

‘b8x8’

Partição 4x4 de quadro B.

‘i8x8’

Partição 8x8 de quadro I.

‘i4x4’

Partição 4x4 de quadro I. (Para habilitar ‘p4x4’ é necessário que ‘p8x8’ esteja habilitada. Para habilitar ‘i8x8’ é necessário que a transformada espacial adaptativa esteja habilitada [opção 8x8dct].)

‘none (none)’

Não considera nenhuma partição.

‘all (all)’

Considera todas as partições.

direct-pred (direct)

Define o modo de predição direta de MV. Valores possíveis:

‘none (none)’

Desabilita a predição de MV.

‘spatial (spatial)’

Habilita a predição espacial.

‘temporal (temporal)’

Habilita a predição temporal.

‘auto (auto)’

Decidido automaticamente.

slice-max-size (slice-max-size)

Define o limite do tamanho de cada slice, em bytes. Se não for especificado, mas o tamanho do payload RTP (ps) estiver definido, esse valor é usado.

stats (stats)

Define o nome do arquivo para as estatísticas de multi-passada.

nal-hrd (nal-hrd)

Define a sinalização de informações HRD (requer que vbv-bufsize esteja definida). Valores possíveis:

‘none (none)’

Desabilita a sinalização de informações HRD.

‘vbr (vbr)’

Taxa de bits variável.

‘cbr (cbr)’

Taxa de bits constante (não permitida em um container MP4).

x264opts opts x264-params opts

Substitui a configuração do x264 usando uma lista de opções key=value separadas por :.

O argumento de ambas as opções é uma lista de pares key=value separados por ":". Com x264opts, o valor pode ser omitido; nesse caso, é assumido o valor 1.

Para os valores das opções filter e psy-rd que já usam ":" como separador, use "," em vez disso. Elas aceitam esse separador há bastante tempo, mas isso permanece sem documentação por algum motivo.

Por exemplo, as opções podem ser fornecidas da seguinte forma:

level=30:bframes=0:weightp=0:cabac=0:ref=1:vbv-maxrate=768:vbv-bufsize=2000:analyse=all:me=umh:no-fast-pskip=1:subq=6:8x8dct=0:trellis=0

Por exemplo, para especificar opções de codificação do libx264 com o ffmpeg:

ffmpeg -i foo.mpg -c:v libx264 -x264opts keyint=123:min-keyint=20 -an out.mkv

Para obter a lista completa das opções do libx264, execute o comando x264 --fullhelp ou consulte a documentação do libx264.

a53cc boolean

Importa legendas ocultas (closed captions) (que devem estar em formato compatível com ATSC) para a saída. Apenas os decoders mpeg2 e h264 fornecem esses dados. O valor padrão é 1 (ativado).

udu_sei boolean

Importa SEI de dados de usuário não registrados (user data unregistered), se disponível, para a saída. O valor padrão é 0 (desativado).

mb_info boolean

Define os dados de mb_info por meio de AVFrameSideData; útil apenas quando usado a partir da API. O valor padrão é 0 (desativado).

São fornecidos ffpresets de codificação para usos comuns, para que possam ser usados com o sistema geral de presets (por exemplo, passando a opção pre).

9.20 libx265

x265 é um wrapper de encoder H.265/HEVC.

Este encoder requer a presença dos cabeçalhos e da biblioteca libx265 durante a configuração. Você precisa configurar a compilação explicitamente com --enable-libx265.

9.20.1 Opções

b

Define a taxa de bits de vídeo alvo.

bf g

Define o tamanho do GOP.

keyint_min

Tamanho mínimo do GOP.

refs

Número de quadros de referência que cada quadro P pode usar. O intervalo é de 1 a 16.

preset

Define o preset do x265.

tune

Define o parâmetro tune do x265.

profile

Define as restrições de perfil.

crf

Define a qualidade para o modo de qualidade constante.

qp

Define o parâmetro do método de controle de taxa por quantização constante.

qmin

Escala mínima do quantizador.

qmax

Escala máxima do quantizador.

qdiff

Diferença máxima entre escalas do quantizador.

qblur

Desfoque da curva do quantizador

qcomp

Fator de compressão da curva do quantizador

i_qfactor b_qfactor forced-idr

Normalmente, ao forçar um tipo de quadro I, o encoder pode selecionar qualquer tipo de quadro I. Esta opção o obriga a escolher um quadro IDR.

x265-stats

Especifica o nome do arquivo para as estatísticas de 2 passadas. É definido automaticamente ao usar a opção -passlogfile.

udu_sei boolean

Importa SEI de dados de usuário não registrados (user data unregistered), se disponível, para a saída. O valor padrão é 0 (desativado).

x265-params

Define as opções do x265 usando uma lista de pares key=value separados por ":". Consulte x265 --help para obter a lista de opções.

Por exemplo, para especificar opções de codificação do libx265 com -x265-params:

ffmpeg -i input -c:v libx265 -x265-params crf=26:psy-rd=1 output.mp4

9.21 libxavs2

xavs2 é um wrapper de encoder AVS2-P2/IEEE1857.4.

Este encoder requer a presença dos cabeçalhos e da biblioteca libxavs2 durante a configuração. Você precisa configurar a compilação explicitamente com --enable-libxavs2.

São usadas as seguintes opções padrão do libavcodec:

  • b / bit_rate
  • g / gop_size
  • bf / max_b_frames

O encoder também possui suas próprias opções específicas:

9.21.1 Opções

lcu_row_threads

Define o número de threads paralelas para linhas, de 1 a 8 (padrão 5).

initial_qp

Define o parâmetro de quantização do xavs2, de 1 a 63 (padrão 34). É usado para definir o qp inicial do primeiro quadro.

qp

Define o parâmetro de quantização do xavs2, de 1 a 63 (padrão 34). É usado para definir o valor de qp no modo de QP constante.

max_qp

Define o qp máximo para o controle de taxa, de 1 a 63 (padrão 55).

min_qp

Define o qp mínimo para o controle de taxa, de 1 a 63 (padrão 20).

speed_level

Define o nível de velocidade (Speed level), de 0 a 9 (padrão 0). Quanto maior, melhor, porém mais lento.

log_level

Define o nível de log, de -1 a 3 (padrão 0). -1: nenhum, 0: erro, 1: aviso, 2: informação, 3: depuração.

xavs2-params

Define as opções do xavs2 usando uma lista de pares key=value separados por ":".

Por exemplo, para especificar opções de codificação do libxavs2 com -xavs2-params:

ffmpeg -i input -c:v libxavs2 -xavs2-params RdoqLevel=0 output.avs2

9.22 libxeve

Wrapper do encoder de vídeo MPEG-5 EVC eXtra-fast Essential Video Encoder (XEVE). As opções ou valores equivalentes do xeve são listados entre parênteses para facilitar a migração.

Este encoder requer a presença dos cabeçalhos e da biblioteca do libxeve durante a configuração. É necessário configurar a compilação explicitamente com --enable-libxeve.

Muitas das opções do encoder libxeve são mapeadas para as opções globais de codec do FFmpeg, enquanto as opções exclusivas do encoder são fornecidas por meio de opções privadas. Além disso, a opção privada xeve-params permite passar uma lista de pares key=value, conforme aceito pela função parse_xeve_params do libxeve.

O site do projeto xeve está em https://github.com/mpeg5/xeve.

9.22.1 Opções

O wrapper do libxeve é compatível com as seguintes opções. As opções ou valores equivalentes do xeve são listados entre parênteses para facilitar a migração.

Para reduzir a duplicação de documentação, aqui são documentadas apenas as opções privadas e algumas outras que exigem atenção especial. Para a documentação das opções genéricas não documentadas, consulte o capítulo Codec Options.

Para obter uma documentação mais precisa e completa das opções do libxeve, execute o comando xeve_app --help ou consulte a documentação do libxeve.

b (bitrate)

Define a taxa de bits de vídeo desejada em bits/s. Observe que a opção b do FFmpeg é expressa em bits/s, enquanto o bitrate do xeve é em kilobits/s.

bf (bframes)

Define o número máximo de quadros B (1,3,7,15).

g (keyint)

Define o tamanho do GOP (período de imagens I).

preset (preset)

Define o preset do xeve. Define o valor de preset do encoder para determinar a velocidade de codificação [fast, medium, slow, placebo]

tune (tune)

Define o parâmetro tune do encoder [psnr, zerolatency]

profile (profile)

Define o perfil do encoder [0: baseline; 1: main]

crf (crf)

Define a qualidade para o modo de qualidade constante. Constant rate factor <10..49> [padrão: 32]

qp (qp)

Define o parâmetro do método de controle de taxa por quantização constante. Parâmetro de quantização qp <0..51> [padrão: 32]

threads (threads)

Força o uso de um número específico de threads

9.23 libxvid

Wrapper do encoder Xvid MPEG-4 Part 2.

Este encoder requer a presença dos cabeçalhos e da biblioteca do libxvidcore durante a configuração. É necessário configurar a compilação explicitamente com --enable-libxvid --enable-gpl.

O encoder nativo mpeg4 é compatível com o formato MPEG-4 Part 2, portanto os usuários podem codificar nesse formato sem essa biblioteca.

9.23.1 Opções

O wrapper do libxvid é compatível com as seguintes opções. Algumas das opções a seguir são listadas mas não são documentadas, pois correspondem a opções de codec compartilhadas. Consulte o capítulo Codec Options para a documentação delas. As demais opções compartilhadas que não estão listadas não têm efeito no encoder libxvid.

b g qmin qmax mpeg_quant threads bf b_qfactor b_qoffset flags

Define flags de codificação específicas. Valores possíveis:

‘mv4’

Usa quatro vetores de movimento por macrobloco.

‘aic’

Habilita a predição AC de alta qualidade.

‘gray’

Codifica somente em escala de cinza.

‘qpel’

Habilita a compensação de movimento de quarto de pixel.

‘cgop’

Habilita GOP fechado.

‘global_header’

Coloca os cabeçalhos globais no extradata em vez de em cada keyframe.

gmc

Habilita o uso de compensação de movimento global (GMC). O padrão é 0 (desabilitado).

me_quality

Define o nível de qualidade da estimativa de movimento. Valores possíveis em ordem decrescente de velocidade e crescente de qualidade:

‘0’

Não usa estimativa de movimento (padrão).

‘1, 2’

Habilita a busca zonal em diamante avançada para blocos de 16x16 e o refinamento de meio pixel para blocos de 16x16.

‘3, 4’

Habilita tudo o que foi descrito acima, além da busca zonal em diamante avançada para blocos de 8x8 e o refinamento de meio pixel para blocos de 8x8, e também habilita a estimativa de movimento nos planos de croma para quadros P e B.

‘5, 6’

Habilita tudo o que foi descrito acima, além da busca estendida de blocos de 16x16 e 8x8.

mbd

Define o algoritmo de decisão de macrobloco. Valores possíveis em ordem crescente de qualidade:

‘simple’

Usa o algoritmo de função de comparação de macroblocos (padrão).

‘bits’

Habilita o refinamento de meio pixel e quarto de pixel baseado em distorção de taxa para blocos de 16x16.

‘rd’

Habilita tudo o que foi descrito acima, além do refinamento de meio pixel e quarto de pixel baseado em distorção de taxa para blocos de 8x8, e a busca baseada em distorção de taxa usando padrão quadrado.

lumi_aq

Habilita a quantização adaptativa por mascaramento de luminância quando definido como 1. O padrão é 0 (desabilitado).

variance_aq

Habilita a quantização adaptativa por variância quando definido como 1. O padrão é 0 (desabilitado).

Quando combinado com lumi_aq, a qualidade resultante não será melhor do que qualquer um dos dois especificados individualmente. Em outras palavras, a qualidade resultante será a pior entre os dois efeitos.

trellis

Define a quantização ótima de distorção de taxa.

ssim

Define o método de exibição da similaridade estrutural (SSIM). Valores possíveis:

‘off’

Desabilita a exibição de informações de SSIM.

‘avg’

Envia o SSIM médio para stdout ao final da codificação. O formato de exibição do SSIM médio é:

Average SSIM: %f

Para quem não está familiarizado com C, %f significa um número de ponto flutuante, ou seja, um decimal (por exemplo, 0.939232).

‘frame’

Envia para stdout tanto os dados de SSIM por quadro durante a codificação quanto o SSIM médio ao final da codificação. O formato das informações por quadro é:

       SSIM: avg: %1.3f min: %1.3f max: %1.3f

Para quem não está familiarizado com C, %1.3f significa um número de ponto flutuante arredondado para 3 dígitos após o ponto (por exemplo, 0.932).

ssim_acc

Define a precisão do SSIM. Os valores válidos são números inteiros no intervalo de 0 a 4, sendo que 0 fornece o resultado mais preciso e 4 calcula da forma mais rápida.

9.24 MediaCodec

O wrapper do encoder MediaCodec permite a codificação de vídeo com aceleração por hardware em dispositivos Android. Ele é compatível com a codificação H.264, H.265 (HEVC), VP8, VP9, MPEG-4 e AV1 (funcionar ou não depende do dispositivo).

O Android oferece dois conjuntos de APIs: Java MediaCodec e NDK MediaCodec. O wrapper do encoder MediaCodec é compatível com ambos. Observe que a API NDK MediaCodec funciona sem exigir a JVM, mas pode não funcionar fora do ambiente JVM devido a dependências de serviços do framework do sistema, principalmente a partir do Android 15.

ndk_codec boolean

Usa a API MediaCodec baseada em NDK em vez da API Java. Habilitada por padrão se av_jni_get_java_vm() retornar NULL.

ndk_async boolean

Usa o NDK MediaCodec em modo assíncrono. O modo assíncrono tem menos sobrecarga do que fazer polling em loop no modo síncrono. A desvantagem do modo assíncrono é que o AV_CODEC_FLAG_GLOBAL_HEADER não funciona (use o bsf extract_extradata quando necessário). Ele não funciona e será desabilitado automaticamente em dispositivos anteriores ao Android 8.0.

codec_name string

Um tipo de codec pode ter várias implementações em um único dispositivo; esta opção especifica qual backend usar (por meio da API createCodecByName do MediaCodec). O padrão é NULL, e nesse caso o encoder é criado por createEncoderByType.

bitrate_mode integer

Valores possíveis:

‘cq’

Modo de qualidade constante

‘vbr’

Modo de taxa de bits variável

‘cbr’

Modo de taxa de bits constante

‘cbr_fd’

Modo de taxa de bits constante com descarte de quadros

pts_as_dts boolean

Usa PTS como DTS. Esta é uma solução alternativa, já que a API MediaCodec não fornece a marca de tempo de decodificação. É habilitado automaticamente se o número de quadros B for 0.

operating_rate integer

A taxa de operação desejada em que o codec precisará operar; zero significa não especificada. Isso é usado em casos como captura de vídeo em alta velocidade/câmera lenta, em que o formato do encoder de vídeo contém a taxa de reprodução desejada (por exemplo, 30fps), mas o componente precisa ser capaz de lidar com a alta taxa de captura em operação (por exemplo, 240fps). Essa taxa será usada pelo codec para o planejamento de recursos e a definição dos pontos de operação.

qp_i_min integer

Parâmetro de quantização mínimo para o quadro I.

qp_p_min integer

Parâmetro de quantização mínimo para o quadro P.

qp_b_min integer

Parâmetro de quantização mínimo para o quadro B.

qp_i_max integer

Parâmetro de quantização máximo para o quadro I.

qp_p_max integer

Parâmetro de quantização máximo para o quadro P.

qp_b_max integer

Parâmetro de quantização máximo para o quadro B.

9.25 MediaFoundation

Os seguintes wrappers para encoders do framework MediaFoundation estão disponíveis:

  • h264_mf
  • hevc_mf
  • av1_mf

Eles são compatíveis tanto com codificação por software quanto por hardware.

Os encoders de vídeo podem receber entrada no formato nv12 ou yuv420p (alguns encoders são compatíveis com ambos, outros apenas com um deles; na prática, nv12 é a opção mais segura, especialmente entre os encoders de hardware).

A codificação com aceleração por hardware requer D3D11, incluindo os recursos de redimensionamento por hardware por meio do filtro scale_d3d11.

Para listar todas as opções disponíveis dos encoders MediaFoundation, use: ffmpeg -h encoder=<encoder> por exemplo ffmpeg -h encoder=h264_mf

9.25.1 Opções

rate_control

Seleciona o modo de controle de taxa. Modos disponíveis:

‘default’

Modo padrão

‘cbr’

Modo CBR

‘pc_vbr’

Modo VBR com restrição de pico

‘u_vbr’

Modo VBR sem restrições

‘quality’

Modo de qualidade

‘ld_vbr’

Modo VBR de baixa latência (requer Windows 8 ou superior)

‘g_vbr’

Modo VBR global (requer Windows 8 ou superior)

‘gld_vbr’

Modo VBR global de baixa latência (requer Windows 8 ou superior)

scenario

Seleciona o cenário de uso. Cenários disponíveis:

‘default’

Cenário padrão

‘display_remoting’

Cenário de acesso remoto ao display

‘video_conference’

Cenário de videoconferência

‘archive’

Cenário de arquivamento

‘live_streaming’

Cenário de streaming ao vivo

‘camera_record’

Cenário de gravação de câmera

‘display_remoting_with_feature_map’

Cenário de acesso remoto ao display com mapa de recursos

quality

Define a qualidade de codificação (0-100). -1 significa qualidade padrão.

hw_encoding

Força a codificação por hardware (0-1). O padrão é 0 (desabilitado).

9.25.2 Exemplos

Codificação por hardware:

ffmpeg -i input.mp4 -c:v h264_mf -hw_encoding 1 output.mp4

Decodificação com aceleração por hardware com codificação por hardware:

ffmpeg -hwaccel d3d11va -i input.mp4 -c:v h264_mf -hw_encoding 1 output.mp4

Decodificação com aceleração por hardware, redimensionamento por hardware e codificação com ajuste de qualidade:

ffmpeg -hwaccel d3d11va -hwaccel_output_format d3d11 -i input.mp4 -vf scale_d3d11=1920:1080 -c:v hevc_mf -hw_encoding 1 -quality 80 output.mp4

9.26 Microsoft RLE

Encoder Microsoft RLE, também conhecido como MSRLE. Apenas o modo de paleta de 8 bits é compatível. Compatível com Windows 3.1 e Windows 95.

9.26.1 Opções

g integer

Intervalo de keyframe. Um keyframe é inserido pelo menos a cada -g quadros, às vezes antes.

9.27 mpeg2

Encoder de vídeo MPEG-2.

9.27.1 Opções

profile

Seleciona o perfil mpeg2 para codificação:

‘422’ ‘high’ ‘ss’

Escalável espacialmente

‘snr’

Escalável em SNR

‘main’ ‘simple’ level

Seleciona o nível mpeg2 para codificação:

‘high’ ‘high1440’ ‘main’ ‘low’ seq_disp_ext integer

Especifica se o encoder deve gravar um sequence_display_extension na saída.

-1 auto

Decide automaticamente se grava ou não (este é o padrão), verificando se os dados a serem gravados diferem dos valores padrão ou não especificados.

0 never

Nunca grava.

1 always

Sempre grava.

video_format integer

Especifica o video_format gravado no sequence display extension, indicando a origem das imagens de vídeo. O padrão é ‘unspecified’, podendo ser ‘component’, ‘pal’, ‘ntsc’, ‘secam’ ou ‘mac’. Para compatibilidade máxima, use ‘component’.

a53cc boolean

Importa legendas ocultas (que precisam estar em formato compatível com ATSC) na saída. O padrão é 1 (ativado).

9.28 png

Encoder de imagem PNG.

9.28.1 Opções

compression_level

Define o nível de compressão, de 0 a 9 (padrão)

9.28.2 Opções privadas

dpi integer

Define a densidade física de pixels, em pontos por polegada; não definido por padrão

dpm integer

Define a densidade física de pixels, em pontos por metro; não definido por padrão

pred method

Define o método de predição (none, sub, up, avg, paeth, mixed); o padrão é paeth

9.29 ProRes

Encoder Apple ProRes.

O FFmpeg contém 2 encoders ProRes: o encoder prores-aw e o prores-ks. O encoder usado pode ser escolhido com a opção -vcodec.

9.29.1 Opções privadas para prores-ks

profile integer

Seleciona o perfil ProRes para codificação

‘proxy’ ‘lt’ ‘standard’ ‘hq’ ‘4444’ ‘4444xq’ quant_mat integer

Seleciona a matriz de quantização.

‘auto’ ‘default’ ‘proxy’ ‘lt’ ‘standard’ ‘hq’

Se definido como auto, será escolhida a matriz correspondente ao perfil. Se não for definida, será escolhida a matriz que oferece a maior qualidade, default.

bits_per_mb integer

Quantos bits alocar para codificar um macrobloco. Perfis diferentes usam entre 200 e 2400 bits por macrobloco; o máximo é 8000.

mbs_per_slice integer

Número de macroblocos em cada slice (1-8); o valor padrão (8) deve ser adequado na maioria das situações.

vendor string

Substitui o ID de fornecedor de 4 bytes. Um ID de fornecedor personalizado como apl0 indicaria que o fluxo foi produzido pelo encoder da Apple.

alpha_bits integer

Especifica o número de bits para o componente alfa. Os valores possíveis são 0, 8 e 16. Use 0 para desabilitar a codificação do plano alfa.

9.29.2 Considerações sobre velocidade

No modo de operação padrão, o encoder precisa respeitar as restrições de tamanho de quadro (ou seja, não produzir quadros maiores do que o solicitado), mantendo a imagem de saída com a melhor qualidade possível. Um quadro com muitos detalhes pequenos é mais difícil de comprimir, e o encoder gastará mais tempo procurando os quantizadores adequados para cada slice.

Definir um limite de bits_per_mb mais alto melhorará a velocidade.

Para obter a maior velocidade de codificação, defina o parâmetro qscale (o valor recomendado é 4) e não defina uma restrição de tamanho.

9.30 Encoders QSV

A família de encoders Intel QuickSync Video (MPEG-2, H.264, HEVC, JPEG/MJPEG, VP9, AV1)

9.30.1 Método de controle de taxa

O método de controle de taxa é selecionado da seguinte forma:

  • Quando global_quality é especificado, é usado um modo baseado em qualidade. Mais especificamente, isso significa uma das opções a seguir
    • - CQP - escala de quantizador constante, quando a flag de codec qscale também está definida (a opção -qscale do ffmpeg).
    • - LA_ICQ - qualidade constante inteligente com lookahead, quando a opção look_ahead também está definida.
    • - ICQ – qualidade constante inteligente nos demais casos. Nos modos ICQ, o intervalo de global quality vai de 1 a 51, sendo 1 a melhor qualidade.
  • Caso contrário, quando a taxa de bits média desejada é especificada com a opção b, é usado um modo baseado em taxa de bits.
    • - LA - VBR com lookahead, quando a opção look_ahead é especificada.
    • - VCM - modo de videoconferência, quando a opção vcm está definida.
    • - CBR - taxa de bits constante, quando maxrate é especificado e igual à taxa de bits média.
    • - VBR - taxa de bits variável, quando maxrate é especificado, mas é maior do que a taxa de bits média.
    • - AVBR - modo VBR médio, quando maxrate não é especificado e tanto avbr_accuracy quanto avbr_convergence são definidos com valores diferentes de zero. Este modo está disponível para H264 e HEVC no Windows.
  • Caso contrário, é usado o método de controle de taxa padrão, CQP.

Observe que, dependendo do sistema, o encoder pode selecionar um modo diferente do especificado. Defina o nível de verbosidade como verbose ou superior para ver as configurações realmente usadas pelo runtime do QSV.

9.30.2 Opções globais -> Opções do MSDK

Opções globais adicionais do libavcodec são mapeadas para opções do MSDK da seguinte forma:

  • g/gop_size -> GopPicSize
  • bf/max_b_frames+1 -> GopRefDist
  • rc_init_occupancy/rc_initial_buffer_occupancy -> InitialDelayInKB
  • slices -> NumSlice
  • refs -> NumRefFrame
  • b_strategy/b_frame_strategy -> BRefType
  • cgop/CLOSED_GOP flag de codec -> GopOptFlag
  • No modo CQP, i_qfactor/i_qoffset e b_qfactor/b_qoffset definem a diferença entre QPP e QPI, e entre QPP e QPB, respectivamente.
  • Definir a opção coder com o valor vlc fará com que o encoder H.264 use CAVLC em vez de CABAC.

9.30.3 Opções comuns

As opções a seguir são usadas por todos os encoders qsv.

async_depth

Especifica quantas operações assíncronas um aplicativo realiza antes de sincronizar explicitamente o resultado. Se for zero, o valor não é especificado.

preset

Esta opção enumera uma série de opções de veryfast (maior velocidade) a veryslow (maior qualidade).

‘veryfast’ ‘faster’ ‘fast’ ‘medium’ ‘slow’ ‘slower’ ‘veryslow’ forced_idr

Força os quadros I como quadros IDR.

low_power

Nos encoders, defina essa flag como ON para reduzir o consumo de energia e o uso da GPU.

9.30.4 Opções em tempo de execução

As opções a seguir podem ser usadas durante a codificação qsv.

global_quality i_quant_factor i_quant_offset b_quant_factor b_quant_offset

Compatível com h264_qsv e hevc_qsv. Altere esses valores para redefinir a configuração de qp do codec qsv.

max_frame_size

Compatível com h264_qsv e hevc_qsv. Altere esse valor para redefinir a configuração de MaxFrameSize do codec qsv.

gop_size

Altere esse valor para redefinir a configuração de gop do codec qsv.

int_ref_type int_ref_cycle_size int_ref_qp_delta int_ref_cycle_dist

Compatível com h264_qsv e hevc_qsv. Altere esses valores para redefinir a configuração de Intra Refresh do codec qsv.

qmax qmin max_qp_i min_qp_i max_qp_p min_qp_p max_qp_b min_qp_b

Compatível com h264_qsv. Altere esses valores para redefinir a configuração de qp máximo/mínimo do codec qsv.

low_delay_brc

Compatível com h264_qsv, hevc_qsv e av1_qsv. Altere esse valor para redefinir a configuração de low_delay_brc do codec qsv.

framerate

Altere esse valor para redefinir a configuração de framerate do codec qsv.

bit_rate rc_buffer_size rc_initial_buffer_occupancy rc_max_rate

Altere esses valores para redefinir a configuração de controle de taxa de bits do codec qsv.

pic_timing_sei

Compatível com h264_qsv e hevc_qsv. Altere esse valor para redefinir a configuração de pic_timing_sei do codec qsv.

qsv_params

Define os parâmetros do encoder QSV como uma lista de pares chave-valor separados por dois-pontos.

O qsv_params deve ser formatado como key1=value1:key2=value2:....

Esses parâmetros são passados diretamente ao encoder Intel Quick Sync Video (QSV) subjacente por meio da função MFXSetParameter.

Exemplo:

ffmpeg -i input.mp4 -c:v h264_qsv -qsv_params "CodingOption1=1:CodingOption2=2" output.mp4

Essa opção permite um controle detalhado sobre vários ajustes específicos do encoder oferecidos pelo encoder QSV.

9.30.5 Opções do H264

Estas opções são usadas pelo h264_qsv

extbrc

Controle de taxa de bits estendido.

recovery_point_sei

Defina essa flag para inserir a mensagem SEI de recovery point no início de cada ciclo de intra refresh.

rdo

Habilita a otimização de distorção de taxa.

max_frame_size

Tamanho máximo do quadro codificado, em bytes.

max_frame_size_i

Tamanho máximo do quadro codificado para quadros I, em bytes. Se esse valor for definido maior que zero, para os quadros I o valor definido por max_frame_size é ignorado.

max_frame_size_p

Tamanho máximo do quadro codificado para quadros P, em bytes. Se esse valor for definido maior que zero, para os quadros P o valor definido por max_frame_size é ignorado.

max_slice_size

Tamanho máximo do slice codificado, em bytes.

bitrate_limit

Ativa ou desativa as limitações de taxa de bits. Modifica a taxa de bits para que fique dentro do intervalo imposto pelo encoder QSV. Desativar essa flag pode levar à violação da conformidade com o HRD. Tenha em mente que especificar uma taxa de bits abaixo do intervalo do encoder QSV pode afetar significativamente a qualidade. Quando ativada, essa opção tem efeito nos modos que não são CQP: se a taxa de bits não estiver dentro do intervalo imposto pelo encoder QSV, ela será alterada para ficar dentro desse intervalo.

mbbrc

Definir essa flag habilita o controle de taxa de bits em nível de macrobloco, o que geralmente melhora a qualidade visual subjetiva. Habilitar essa flag pode ter impacto negativo no desempenho e na métrica objetiva de qualidade visual.

low_delay_brc

Definir essa flag ativa ou desativa o recurso LowDelayBRC no plugin qsv, que oferece um controle de taxa de bits mais preciso para minimizar a variação do tamanho do bitstream quadro a quadro. Valor: -1-padrão 0-desativado 1-ativado

adaptive_i

Esta flag controla a inserção de quadros I pelo encoder QSV. Ative esta flag para permitir a mudança do tipo de quadro de P e B para I.

adaptive_b

Esta flag controla a mudança do tipo de quadro de B para P.

p_strategy

Habilita a pirâmide P: 0-padrão 1-simple 2-pyramid (bf precisa ser definido como 0).

b_strategy

Esta opção controla o uso de quadros B como referência.

dblk_idc

Esta opção desabilita o deblocking. Seu valor está no intervalo 0~2.

cavlc

Se definido, é usado CAVLC; se não definido, é usado CABAC para a codificação.

vcm

Modo de videoconferência; consulte o método de controle de taxa.

idr_interval

Distância (em quadros I) entre quadros IDR.

pic_timing_sei

Insere o SEI de picture timing com o elemento pic_struct_syntax.

single_sei_nal_unit

Coloca todas as mensagens SEI em um único NALU.

max_dec_frame_buffering

Número máximo de quadros armazenados no buffer do DPB.

look_ahead

Usa o algoritmo VBR com look ahead.

look_ahead_depth

Profundidade do look ahead, em número de quadros.

look_ahead_downsampling

Fator de redução de escala para os quadros salvos para a análise de lookahead.

‘unknown’ ‘auto’ ‘off’ ‘2x’ ‘4x’ int_ref_type

Especifica o tipo de intra refresh. O principal objetivo do intra refresh é melhorar a resiliência a erros sem impacto significativo no tamanho do bitstream codificado causado pelos quadros I. O encoder do SDK consegue isso codificando parte de cada quadro do ciclo de refresh usando MBs intra. none significa sem refresh. vertical significa refresh vertical, por coluna de MBs. horizontal significa refresh horizontal, por linhas de MBs. slice significa refresh horizontal por slices sem sobreposição. No caso de slice, in_ref_cycle_size é ignorado. Para habilitar o intra refresh, o quadro B deve ser definido como 0.

int_ref_cycle_size

Especifica o número de imagens dentro do ciclo de refresh, a partir de 2. 0 e 1 são valores inválidos.

int_ref_qp_delta

Especifica a diferença de QP para os MBs intra inseridos. É um valor com sinal no intervalo [-51, 51] se a profundidade de bits de codificação desejada para as amostras de luma for 8, sendo esse intervalo [-63, 63] para profundidade de 10 bits ou [-75, 75] para profundidade de 12 bits, respectivamente.

int_ref_cycle_dist

Distância entre os inícios dos ciclos de intra-refresh, em quadros.

profile

‘unknown’ ‘baseline’ ‘main’ ‘high’ a53cc

Usa legendas ocultas A53 (Closed Captions), se disponíveis.

aud

Insere o NAL de Access Unit Delimiter.

mfmode

Modo multiquadro.

‘off’ ‘auto’ repeat_pps

Repete pps a cada quadro.

max_qp_i

Escala máxima de quantizador de vídeo para o quadro I.

min_qp_i

Escala mínima de quantizador de vídeo para o quadro I.

max_qp_p

Escala máxima de quantizador de vídeo para o quadro P.

min_qp_p

Escala mínima de quantizador de vídeo para o quadro P.

max_qp_b

Escala máxima de quantizador de vídeo para o quadro B.

min_qp_b

Escala mínima de quantizador de vídeo para o quadro B.

scenario

Fornece uma dica ao encoder sobre o cenário da sessão de codificação.

‘unknown’ ‘displayremoting’ ‘videoconference’ ‘archive’ ‘livestreaming’ ‘cameracapture’ ‘videosurveillance’ ‘gamestreaming’ ‘remotegaming’ avbr_accuracy

Precisão do controle de taxa AVBR (unidade de décimo de por cento).

avbr_convergence

Convergência do controle de taxa AVBR (unidade de 100 quadros)

Os parâmetros avbr_accuracy e avbr_convergence são usados pelo algoritmo de controle de taxa de bits variável médio (AVBR). O algoritmo se concentra na qualidade geral de codificação, atendendo à taxa de bits especificada, target_bitrate, dentro do intervalo de precisão avbr_accuracy, após um período avbr_Convergence. Esse método não segue o HRD, e a taxa de bits instantânea não é limitada nem preenchida.

skip_frame

Usa os metadados por quadro "qsv_skip_frame" para pular quadros durante a codificação. Esta opção define o uso desses metadados.

‘no_skip’

O descarte de quadros está desabilitado.

‘insert_dummy’

O encoder insere no bitstream um quadro em que todos os macroblocos são codificados como pulados.

‘insert_nothing’

Similar a insert_dummy, mas o encoder não insere nada no bitstream. Os quadros pulados continuam sendo usados no brc. Por exemplo, o gop continua incluindo os quadros pulados, e os quadros posteriores aos quadros pulados terão tamanho maior.

‘brc_only’

Os metadados de skip_frame indicam o número de quadros perdidos antes do quadro atual.

9.30.6 Opções do HEVC

Estas opções são usadas pelo hevc_qsv

extbrc

Controle estendido de taxa de bits.

recovery_point_sei

Defina esta flag para inserir a mensagem SEI de ponto de recuperação no início de cada ciclo de intra refresh.

rdo

Habilita a otimização de distorção de taxa.

max_frame_size

Tamanho máximo do quadro codificado, em bytes.

max_frame_size_i

Tamanho máximo do quadro codificado para quadros I, em bytes. Se este valor for definido maior que zero, para quadros I o valor definido por max_frame_size é ignorado.

max_frame_size_p

Tamanho máximo do quadro codificado para quadros P, em bytes. Se este valor for definido maior que zero, para quadros P o valor definido por max_frame_size é ignorado.

max_slice_size

Tamanho máximo da slice codificada, em bytes.

mbbrc

Definir esta flag habilita o controle de taxa de bits em nível de macrobloco, o que geralmente melhora a qualidade visual subjetiva. Habilitar esta flag pode ter impacto negativo no desempenho e na métrica objetiva de qualidade visual.

low_delay_brc

Definir esta flag ativa ou desativa o recurso LowDelayBRC no plugin qsv, que oferece um controle de taxa de bits mais preciso para minimizar a variação do tamanho do bitstream quadro a quadro. Valor: -1-padrão 0-desativado 1-ativado

adaptive_i

Esta flag controla a inserção de quadros I pelo encoder QSV. Ative esta flag para permitir a mudança do tipo de quadro de P e B para I.

adaptive_b

Esta flag controla a mudança do tipo de quadro de B para P.

p_strategy

Habilita P-pyramid: 0=padrão 1=simple 2=pyramid (bf precisa ser definido como 0).

b_strategy

Esta opção controla o uso de quadros B como referência.

dblk_idc

Esta opção desabilita a desblocagem (deblocking). Tem valor no intervalo 0~2.

idr_interval

Distância (em quadros I) entre quadros IDR.

‘begin_only’

Gera um quadro IDR apenas no início do fluxo.

load_plugin

Um plugin de usuário para carregar em uma sessão interna.

‘none’ ‘hevc_sw’ ‘hevc_hw’ load_plugins

Uma lista de UIDs hexadecimais de plugins, separados por :, para carregar em uma sessão interna.

look_ahead_depth

Profundidade do look ahead em número de quadros, disponível quando a opção extbrc está habilitada.

profile

Define o perfil de codificação (scc requer libmfx >= 1.32).

‘unknown’ ‘main’ ‘main10’ ‘mainsp’ ‘rext’ ‘scc’ tier

Define o tier de codificação (apenas o level >= 4 é compatível com high tier). Esta opção só tem efeito quando a opção level é especificada.

‘main’ ‘high’ gpb

1: GPB (quadro P/B generalizado)

0: quadro P regular.

tile_cols

Número de colunas para codificação em blocos (tiles).

tile_rows

Número de linhas para codificação em blocos (tiles).

aud

Insere o NAL de Access Unit Delimiter.

pic_timing_sei

Insere o SEI de picture timing com o elemento pic_struct_syntax.

transform_skip

Ative esta opção para habilitar o transformskip. É compatível em plataformas iguais ou mais recentes que a ICL.

int_ref_type

Especifica o tipo de intra refresh. O principal objetivo do intra refresh é melhorar a resiliência a erros sem impacto significativo no tamanho do bitstream codificado causado por quadros I. O encoder do SDK consegue isso codificando parte de cada quadro no ciclo de refresh usando MBs intra. none significa sem refresh. vertical significa refresh vertical, por coluna de MBs. horizontal significa refresh horizontal, por linhas de MBs. slice significa refresh horizontal por slices sem sobreposição. No caso de slice, in_ref_cycle_size é ignorado. Para habilitar o intra refresh, o quadro B deve ser definido como 0.

int_ref_cycle_size

Especifica o número de imagens dentro do ciclo de refresh, começando em 2. 0 e 1 são valores inválidos.

int_ref_qp_delta

Especifica a diferença de QP para os MBs intra inseridos. É um valor com sinal no intervalo [-51, 51] se a profundidade de bits de codificação alvo para amostras de luma for 8, e esse intervalo é [-63, 63] para 10 bits ou [-75, 75] para 12 bits, respectivamente.

int_ref_cycle_dist

Distância entre os inícios dos ciclos de intra-refresh, em quadros.

max_qp_i

Escala máxima do quantizador de vídeo para o quadro I.

min_qp_i

Escala mínima do quantizador de vídeo para o quadro I.

max_qp_p

Escala máxima do quantizador de vídeo para o quadro P.

min_qp_p

Escala mínima do quantizador de vídeo para o quadro P.

max_qp_b

Escala máxima do quantizador de vídeo para o quadro B.

min_qp_b

Escala mínima do quantizador de vídeo para o quadro B.

scenario

Fornece uma dica ao encoder sobre o cenário da sessão de codificação.

‘unknown’ ‘displayremoting’ ‘videoconference’ ‘archive’ ‘livestreaming’ ‘cameracapture’ ‘videosurveillance’ ‘gamestreaming’ ‘remotegaming’ avbr_accuracy

Precisão do controle de taxa AVBR (unidade de décimo de porcento).

avbr_convergence

Convergência do controle de taxa AVBR (unidade de 100 quadros)

Os parâmetros avbr_accuracy e avbr_convergence são para o algoritmo de controle de taxa de bits variável média (AVBR). O algoritmo tem como foco a qualidade geral de codificação ao mesmo tempo em que atende à taxa de bits especificada, target_bitrate, dentro do intervalo de precisão avbr_accuracy, após um período de avbr_Convergence. Este método não segue o HRD e a taxa de bits instantânea não é limitada nem preenchida.

skip_frame

Usa os metadados por quadro "qsv_skip_frame" para pular quadros durante a codificação. Esta opção define o uso desses metadados.

‘no_skip’

O descarte de quadros está desabilitado.

‘insert_dummy’

O encoder insere no bitstream um quadro em que todos os macroblocos são codificados como pulados.

‘insert_nothing’

Similar a insert_dummy, mas o encoder não insere nada no bitstream. Os quadros pulados continuam sendo usados no brc. Por exemplo, o gop continua incluindo os quadros pulados, e os quadros posteriores aos quadros pulados terão tamanho maior.

‘brc_only’

Os metadados de skip_frame indicam o número de quadros perdidos antes do quadro atual.

9.30.7 Opções de MPEG2

Estas opções são usadas pelo mpeg2_qsv

profile

‘unknown’ ‘simple’ ‘main’ ‘high’

9.30.8 Opções de VP9

Estas opções são usadas pelo vp9_qsv

profile

‘unknown’ ‘profile0’ ‘profile1’ ‘profile2’ ‘profile3’ tile_cols

Número de colunas para codificação em blocos (tiles) (requer libmfx >= 1.29).

tile_rows

Número de linhas para codificação em blocos (tiles) (requer libmfx >= 1.29).

9.30.9 Opções de AV1

Estas opções são usadas pelo av1_qsv (requer libvpl).

profile

‘unknown’ ‘main’ tile_cols

Número de colunas para codificação em blocos (tiles).

tile_rows

Número de linhas para codificação em blocos (tiles).

adaptive_i

Esta flag controla a inserção de quadros I pelo encoder QSV. Ative esta flag para permitir a mudança do tipo de quadro de P e B para I.

adaptive_b

Esta flag controla a mudança do tipo de quadro de B para P.

b_strategy

Esta opção controla o uso de quadros B como referência.

extbrc

Controle estendido de taxa de bits.

look_ahead_depth

Profundidade do look ahead em número de quadros, disponível quando a opção extbrc está habilitada.

low_delay_brc

Definir esta flag ativa ou desativa o recurso LowDelayBRC no plugin qsv, que oferece um controle de taxa de bits mais preciso para minimizar a variação do tamanho do bitstream quadro a quadro. Valor: -1=padrão 0=desativado 1=ativado

max_frame_size

Define o tamanho máximo permitido em bytes para cada quadro. Se o tamanho do quadro exceder o limite, o encoder ajustará o valor de QP para controlar o tamanho do quadro. Inválido no modo de controle de taxa CQP.

max_frame_size_i

Tamanho máximo do quadro codificado para quadros I, em bytes. Se este valor for definido maior que zero, para quadros I o valor definido por max_frame_size é ignorado.

max_frame_size_p

Tamanho máximo do quadro codificado para quadros P, em bytes. Se este valor for definido maior que zero, para quadros P o valor definido por max_frame_size é ignorado.

9.31 snow

9.31.1 Opções

iterative_dia_size

Tamanho de dia para a estimativa de movimento iterativa

9.32 Encoders VAAPI

Wrappers para encoders de hardware acessíveis via VAAPI.

Esses encoders aceitam apenas entrada em superfícies de hardware VAAPI. Se você tiver a entrada em quadros de software, use o filtro hwupload para enviá-los à GPU.

As seguintes opções padrão do libavcodec são usadas:

  • g / gop_size
  • bf / max_b_frames
  • profile

Se não definido, isso será determinado automaticamente a partir do formato dos quadros de entrada e dos perfis compatíveis com o driver.

  • level
  • b / bit_rate
  • maxrate / rc_max_rate
  • bufsize / rc_buffer_size
  • rc_init_occupancy / rc_initial_buffer_occupancy
  • compression_level

Equilíbrio entre velocidade e qualidade: valores mais altos são mais rápidos / com qualidade pior.

  • q / global_quality

Equilíbrio entre tamanho e qualidade: valores mais altos resultam em tamanho menor / qualidade pior.

  • qmin
  • qmax
  • i_qfactor / i_quant_factor
  • i_qoffset / i_quant_offset
  • b_qfactor / b_quant_factor
  • b_qoffset / b_quant_offset
  • slices

Todos os encoders são compatíveis com as seguintes opções:

low_power

Alguns drivers/plataformas oferecem um segundo encoder para alguns codecs destinado a consumir menos energia que o encoder padrão; definir esta opção fará com que se tente usar esse encoder. Observe que ele pode ser compatível apenas com um conjunto reduzido de recursos, portanto algumas outras opções podem não estar disponíveis neste modo.

idr_interval

Define o número de quadros intra normais entre quadros de atualização completa (IDR) no modo open-GOP. Os quadros intra continuam sendo IRAPs, mas não incluirão cabeçalhos globais e podem ter imagens iniciais não decodificáveis.

b_depth

Define a profundidade de referência dos quadros B. Quando definido como um (o padrão), todos os quadros B se referirão apenas a quadros P ou I. Quando definido com valores maiores, múltiplas camadas de quadros B estarão presentes, com os quadros de cada camada referindo-se apenas a quadros de camadas superiores.

async_depth

Paralelismo máximo de processamento. Aumente este valor para melhorar o desempenho de um único canal. Esta opção não funciona se o driver não implementar a função vaSyncBuffer. Certifique-se de que haja hw_frames suficientes alocados se for usado um valor grande de async_depth.

max_frame_size

Define o tamanho máximo permitido em bytes para cada quadro. Se o tamanho do quadro exceder o limite, o encoder ajustará o valor de QP para controlar o tamanho do quadro. Inválido no modo de controle de taxa CQP.

rc_mode

Define o modo de controle de taxa a ser usado. Um determinado driver pode ser compatível apenas com um subconjunto de modos.

Modos possíveis:

auto

Escolhe o modo automaticamente com base no suporte do driver e nas demais opções. Este é o padrão.

CQP

Qualidade constante.

CBR

Taxa de bits constante.

VBR

Taxa de bits variável.

ICQ

Qualidade constante inteligente.

QVBR

Taxa de bits variável com qualidade definida.

AVBR

Taxa de bits variável média.

blbrc

Habilita o controle de taxa em nível de bloco, que atribui uma taxa de bits diferente bloco a bloco. Inválido para o modo CQP.

Cada encoder também tem suas próprias opções específicas:

av1_vaapi

profile define o valor de seq_profile. tier define o valor de seq_tier. level define o valor de seq_level_idx.

tiles

Define o número de tiles com o qual codificar o vídeo de entrada, como colunas x linhas. (o padrão é auto, o que significa usar o número mínimo de colunas/linhas de tiles).

tile_groups

Define o número de grupos de tiles. Todos os tiles serão distribuídos da forma mais uniforme possível entre cada grupo de tiles. (o padrão é 1).

h264_vaapi

profile define o valor de profile_idc e das constraint_set*_flag. level define o valor de level_idc.

coder

Define o encoder de entropia (o padrão é cabac). Valores possíveis:

‘ac’ ‘cabac’

Usa CABAC.

‘vlc’ ‘cavlc’

Usa CAVLC.

aud

Inclui delimitadores de unidade de acesso no fluxo (não incluídos por padrão).

sei

Define os tipos de mensagem SEI a incluir. Alguma combinação dos seguintes valores:

‘identifier’

Inclui uma mensagem user_data_unregistered contendo informações sobre o encoder.

‘timing’

Inclui parâmetros de picture timing (mensagens buffering_period e pic_timing).

‘recovery_point’

Inclui pontos de recuperação quando apropriado (mensagens recovery_point).

hevc_vaapi

profile e level definem, respectivamente, os valores de general_profile_idc e general_level_idc.

aud

Inclui delimitadores de unidade de acesso no fluxo (não incluídos por padrão).

tier

Define general_tier_flag. Isso pode afetar o level escolhido para o fluxo se ele não for especificado explicitamente.

sei

Define os tipos de mensagem SEI a incluir. Alguma combinação dos seguintes valores:

‘hdr’

Inclui metadados HDR se os quadros de entrada os tiverem (mensagens mastering_display_colour_volume e content_light_level).

tiles

Define o número de tiles com o qual codificar o vídeo de entrada, como colunas x linhas. Números maiores permitem maior paralelismo tanto na codificação quanto na decodificação, mas podem reduzir a eficiência da codificação.

mjpeg_vaapi

O encoder é compatível apenas com a codificação DCT baseline. Ele sempre usa as tabelas padrão de quantização e Huffman - global_quality dimensiona a tabela padrão de quantização (intervalo 1-100).

Para YUV, o encoder é compatível com os modos de subamostragem 4:2:0, 4:2:2 e 4:4:4. Também é compatível com RGB, e criará um JPEG RGB.

jfif

Inclui o cabeçalho JFIF em cada quadro (não incluído por padrão).

huffman

Inclui as tabelas Huffman padrão (ativado por padrão). Desativar isso economizará algumas centenas de bytes em cada quadro de saída, mas pode perder a compatibilidade com alguns decoders JPEG que não lidam totalmente com MJPEG.

mpeg2_vaapi

profile e level definem o valor de profile_and_level_indication.

vp8_vaapi

Quadros B não têm suporte.

global_quality define o q_idx usado para quadros que não são chave (intervalo 0-127).

loop_filter_level loop_filter_sharpness

Define manualmente os parâmetros do filtro de loop.

vp9_vaapi

global_quality define o q_idx usado para quadros P (intervalo 0-255).

loop_filter_level loop_filter_sharpness

Define manualmente os parâmetros do filtro de loop.

Quadros B têm suporte, mas o fluxo de saída está sempre em ordem de codificação, e não em ordem de exibição. Se os quadros B estiverem habilitados, pode ser necessário usar o bitstream filter vp9_raw_reorder para modificar o fluxo de saída e exibir os quadros na ordem correta.

Apenas quadros normais são produzidos - o bitstream filter vp9_superframe pode ser necessário para produzir um fluxo utilizável em todos os decoders.

9.33 vbn

Encoder Vizrt Binary Image.

Este formato é usado pelo fornecedor de equipamentos de radiodifusão Vizrt para streaming rápido de texturas. Recursos avançados do formato, como compressão LZW dos dados de textura ou geração de mipmaps, não têm suporte.

9.33.1 Opções

format string

Define a compressão de textura usada pelo arquivo VBN. Pode ser dxt1, dxt5 ou raw. O padrão é dxt5.

9.34 vc2

SMPTE VC-2 (anteriormente BBC Dirac Pro). Este codec foi voltado principalmente para radiodifusão profissional, mas, como é compatível com yuv420, yuv422 e yuv444 em 8 bits (faixa limitada ou faixa completa), 10 ou 12 bits, isso o torna adequado para outras tarefas que exigem baixo overhead e baixa compressão (como gravação de tela).

9.34.1 Opções

b

Define a taxa de bits de vídeo alvo. Normalmente isso fica em torno de 1:6 da taxa de bits do vídeo não comprimido (por exemplo, para 1920x1080 50fps yuv422p10 isso fica em torno de 400Mbps). Valores mais altos (próximos à taxa de bits não comprimida) ativam o modo de compressão sem perdas.

field_order

Habilita a codificação de campos quando definida (por exemplo, para tt - campo superior primeiro) para entradas entrelaçadas. Deve aumentar a compressão com conteúdo entrelaçado, pois divide os campos e codifica cada um separadamente.

wavelet_depth

Define a quantidade total de transformadas wavelet a aplicar, entre 1 e 5 (padrão). Valores mais baixos reduzem a compressão e a qualidade. Decoders menos capazes podem não conseguir lidar com valores de wavelet_depth acima de 3.

wavelet_type

Define o tipo de transformada. Atualmente apenas 5_3 (LeGall) e 9_7 (Deslauriers-Dubuc) estão implementados, sendo 9_7 o de melhor compressão e, por isso, o padrão.

slice_width slice_height

Define o tamanho da slice para cada slice. Valores mais altos resultam em melhor compressão. Para compatibilidade com outros decoders mais limitados, use slice_width de 32 e slice_height de 8.

tolerance

Define a tolerância de undershoot do sistema de controle de taxa em porcentagem. Isso serve para evitar que uma busca custosa seja executada.

qm

Define o preset da matriz de quantização a usar por padrão ou quando wavelet_depth é definido como 5

  • - default Usa a matriz de quantização padrão das especificações, estendida com valores para o quinto nível. Isso oferece um bom equilíbrio entre preservar detalhes e omitir artefatos.
  • - flat Usa uma matriz de quantização totalmente zerada. Isso aumenta o PSNR, mas pode reduzir a percepção. Use em benchmarks fictícios.
  • - color Reduz o detalhe, mas tenta preservar a cor em taxas de bits extremamente baixas.

10 Encoders de Legendas

10.1 dvbsub

Este codec codifica o formato de legenda em bitmap usado em transmissões e gravações DVB. Os bitmaps são normalmente incorporados a um container como MPEG-TS como um fluxo separado.

10.1.1 Opções

min_bpp integer (2, 4, or 8)

Define um valor mínimo de bits por pixel para as tabelas de consulta de cores da legenda.

O DVB oferece suporte a tabelas de consulta de cores de 2, 4 e 8 bits por pixel. Esta opção permite forçar um valor específico de bits por pixel independentemente do número de cores. Como nem todos os players oferecem suporte, ou suporte completo, a 2 bits por pixel, este valor tem como padrão 4.

10.2 dvdsub

Este codec codifica o formato de legenda em bitmap usado em DVDs. Normalmente são armazenadas em pares de arquivos VOBSUB (.idx + .sub), e também podem ser usadas em arquivos Matroska.

10.2.1 Opções

palette

Especifica a paleta global usada pelos bitmaps.

O formato desta opção é uma string contendo 16 números hexadecimais de 24 bits (sem o prefixo 0x) separados por vírgulas, por exemplo 0d00ee, ee450d, 101010, eaeaea, 0ce60b, ec14ed, ebff0b, 0d617a, 7b7b7b, d1d1d1, 7b2a0e, 0d950c, 0f007b, cf0dec, cfa80c, 7c127b.

even_rows_fix

Quando definido como 1, habilita uma solução alternativa que torna par o número de linhas de pixels em todas as legendas. Isso corrige um problema em alguns players que cortam a linha inferior quando o número é ímpar. A solução alternativa apenas adiciona uma linha totalmente transparente quando necessário. O overhead é baixo, em média cerca de um byte por legenda.

Por padrão, essa solução alternativa está desabilitada.

10.3 lrc

Este codec codifica o formato de letras LRC.

10.3.1 Opções

precision

Especifica a precisão da parte fracionária da marca de tempo. A base de tempo é determinada com base nesse valor.

O padrão é 2, para centésimos de segundo.

11 Veja também

ffmpeg, ffplay, ffprobe, libavcodec

12 Autores

Os desenvolvedores do FFmpeg.

Para detalhes sobre a autoria, consulte o histórico do Git do projeto (https://git.ffmpeg.org/ffmpeg), por exemplo, digitando o comando git log no diretório do código-fonte do FFmpeg, ou navegando pelo repositório on-line em https://git.ffmpeg.org/ffmpeg.

Os mantenedores dos componentes específicos estão listados no arquivo MAINTAINERS na árvore do código-fonte.

Hospedagem fornecida por telepoint.bg