Documentação do ffprobe
1 Sinopse
ffprobe [options] input_url
2 Descrição
ffprobe coleta informações de fluxos multimídia e as exibe de forma legível tanto para pessoas quanto para máquinas.
Por exemplo, pode ser usado para verificar o formato do container utilizado por um fluxo multimídia, bem como o formato e o tipo de cada fluxo de mídia nele contido.
Se uma url for especificada na entrada, o ffprobe tentará abri-la e examinar seu conteúdo. Se a url não puder ser aberta ou não for reconhecida como um arquivo multimídia, é retornado um código de saída positivo.
Se nenhuma saída for especificada com -o, o ffprobe gravará em stdout.
O ffprobe pode ser usado tanto como aplicativo autônomo quanto em combinação com um filtro de texto, que pode realizar um processamento mais sofisticado, como processamento estatístico ou geração de gráficos.
As opções servem para listar alguns dos formatos aceitos pelo ffprobe, para especificar quais informações mostrar e para configurar como o ffprobe as mostrará.
A saída do ffprobe é projetada para ser facilmente analisada por um filtro de texto e consiste em uma ou mais seções em um formato definido pelo writer selecionado, especificado pela opção output_format.
As seções podem conter outras seções aninhadas e são identificadas por um nome (que pode ser compartilhado com outras seções) e um nome exclusivo. Veja a saída de sections.
As tags de metadados armazenadas no container ou nos fluxos são reconhecidas e mostradas na seção "FORMAT", "STREAM", "STREAM_GROUP_STREAM" ou "PROGRAM_STREAM" correspondente.
3 Opções
Salvo indicação em contrário, todas as opções numéricas aceitam como entrada uma string que representa um número, que pode ser seguida por um dos prefixos de unidade SI, por exemplo: ’K’, ’M’ ou ’G’.
Se ’i’ for acrescentado ao prefixo de unidade SI, o prefixo completo será interpretado como um prefixo para múltiplos binários, baseados em potências de 1024 em vez de potências de 1000. Acrescentar ’B’ ao prefixo de unidade SI multiplica o valor por 8. Isso permite usar, por exemplo, ’KB’, ’MiB’, ’G’ e ’B’ como sufixos numéricos.
Opções que não recebem argumentos são opções booleanas e definem o valor correspondente como true. Podem ser definidas como false antepondo "no" ao nome da opção. Por exemplo, usar "-nofoo" definirá como false a opção booleana chamada "foo".
Opções que recebem argumentos aceitam uma sintaxe especial em que o argumento informado na linha de comando é interpretado como o caminho do arquivo do qual o valor real do argumento é carregado. Para usar esse recurso, adicione uma barra ’/’ imediatamente antes do nome da opção (após o traço inicial). Por exemplo:
ffmpeg -i INPUT -/filter:v filter.script OUTPUT
Isso carrega uma descrição de filtergraph a partir do arquivo filter.script.
3.1 Especificadores de fluxo
Algumas opções são aplicadas por fluxo, como a taxa de bits ou o codec. Os especificadores de fluxo servem para indicar com precisão a qual fluxo (ou fluxos) uma determinada opção pertence.
Um especificador de fluxo é uma string geralmente anexada ao nome da opção e separada dele por dois-pontos. Por exemplo, -codec:a:1 ac3 contém o especificador de fluxo a:1, que corresponde ao segundo fluxo de áudio. Portanto, isso selecionaria o codec ac3 para o segundo fluxo de áudio.
Um especificador de fluxo pode corresponder a vários fluxos, de modo que a opção é aplicada a todos eles. Por exemplo, o especificador de fluxo em -b:a 128k corresponde a todos os fluxos de áudio.
Um especificador de fluxo vazio corresponde a todos os fluxos. Por exemplo, -codec copy ou -codec: copy copiariam todos os fluxos sem recodificá-los.
As formas possíveis de especificadores de fluxo são as seguintes:
stream_index
Corresponde ao fluxo com esse índice. Por exemplo, -threads:1 4 definiria como 4 o número de threads do segundo fluxo. Se stream_index for usado como especificador de fluxo adicional (veja abaixo), ele seleciona o fluxo de número stream_index dentre os fluxos correspondentes. A numeração dos fluxos se baseia na ordem em que são detectados pela libavformat, exceto quando também é especificado um especificador de grupo de fluxos ou um ID de programa. Nesse caso, ela se baseia na ordem dos fluxos dentro do grupo ou do programa.
stream_type[:additional_stream_specifier]
stream_type é um dos seguintes: ’v’ ou ’V’ para vídeo, ’a’ para áudio, ’s’ para legenda, ’d’ para dados e ’t’ para anexos. ’v’ corresponde a todos os fluxos de vídeo, enquanto ’V’ corresponde apenas aos fluxos de vídeo que não são imagens anexadas, miniaturas de vídeo ou artes de capa. Se additional_stream_specifier for usado, ele corresponde aos fluxos que têm esse tipo e também correspondem ao additional_stream_specifier. Caso contrário, corresponde a todos os fluxos do tipo especificado.
g:group_specifier[:additional_stream_specifier]
Corresponde aos fluxos que pertencem ao grupo com o especificador group_specifier. Se additional_stream_specifier for usado, ele corresponde aos fluxos que fazem parte do grupo e também correspondem ao additional_stream_specifier. group_specifier pode ser um dos seguintes:
group_index
Corresponde ao fluxo com este índice de grupo.
#group_id ou i:group_id
Corresponde ao fluxo com este id de grupo.
p:program_id[:additional_stream_specifier]
Corresponde aos fluxos que pertencem ao programa com o id program_id. Se additional_stream_specifier for usado, ele corresponde aos fluxos que fazem parte do programa e também correspondem ao additional_stream_specifier.
#stream_id ou i:stream_id
Corresponde ao fluxo pelo seu id de fluxo (por exemplo, o PID em um container MPEG-TS).
m:key[:value]
Corresponde aos fluxos cuja tag de metadados key tem o valor especificado. Se value não for informado, corresponde aos fluxos que contêm essa tag com qualquer valor. O caractere de dois-pontos ’:’ em key ou value precisa ser escapado com uma barra invertida.
disp:dispositions[:additional_stream_specifier]
Corresponde aos fluxos que têm a disposição ou as disposições indicadas. dispositions é uma lista com uma ou mais disposições (conforme mostradas pela opção -dispositions) unidas por ’+’.
u
Corresponde aos fluxos com configuração utilizável: o codec deve estar definido e as informações essenciais, como a dimensão do vídeo ou a taxa de amostragem do áudio, devem estar presentes.
Observe que, no ffmpeg, a correspondência por metadados só funciona corretamente para arquivos de entrada.
3.2 Opções genéricas
Estas opções são compartilhadas entre as ferramentas ff*.
-L, -license
Mostra a licença.
-h, -?, -help, --help [arg]
Mostra a ajuda. Um parâmetro opcional pode ser especificado para mostrar ajuda sobre um item específico. Se nenhum argumento for especificado, são mostradas apenas as opções básicas (não avançadas) da ferramenta.
Os valores possíveis de arg são:
long
Mostra as opções avançadas da ferramenta, além das opções básicas.
full
Mostra a lista completa de opções, incluindo as opções compartilhadas e privadas de encoders, decoders, demuxers, muxers, filtros etc.
decoder=decoder_name
Mostra informações detalhadas sobre o decoder chamado decoder_name. Use a opção -decoders para obter uma lista de todos os decoders.
encoder=encoder_name
Mostra informações detalhadas sobre o encoder chamado encoder_name. Use a opção -encoders para obter uma lista de todos os encoders.
demuxer=demuxer_name
Mostra informações detalhadas sobre o demuxer chamado demuxer_name. Use a opção -formats para obter uma lista de todos os demuxers e muxers.
muxer=muxer_name
Mostra informações detalhadas sobre o muxer chamado muxer_name. Use a opção -formats para obter uma lista de todos os muxers e demuxers.
filter=filter_name
Mostra informações detalhadas sobre o filtro chamado filter_name. Use a opção -filters para obter uma lista de todos os filtros.
bsf=bitstream_filter_name
Mostra informações detalhadas sobre o filtro de bitstream chamado bitstream_filter_name. Use a opção -bsfs para obter uma lista de todos os filtros de bitstream.
protocol=protocol_name
Mostra informações detalhadas sobre o protocolo chamado protocol_name. Use a opção -protocols para obter uma lista de todos os protocolos.
-version
Mostra a versão.
-buildconf
Mostra a configuração de compilação, uma opção por linha.
-formats
Mostra os formatos disponíveis (incluindo os dispositivos).
-demuxers
Mostra os demuxers disponíveis.
-muxers
Mostra os muxers disponíveis.
-devices
Mostra os dispositivos disponíveis.
-codecs
Mostra todos os codecs conhecidos pela libavcodec.
Observe que o termo ’codec’ é usado ao longo desta documentação como abreviação do que seria mais corretamente chamado de formato de bitstream de mídia.
-decoders
Mostra os decoders disponíveis.
-encoders
Mostra todos os encoders disponíveis.
-bsfs
Mostra os filtros de bitstream disponíveis.
-protocols
Mostra os protocolos disponíveis.
-filters
Mostra os filtros do libavfilter disponíveis.
-pix_fmts
Mostra os pixel format disponíveis.
-sample_fmts
Mostra os sample format disponíveis.
-layouts
Mostra os nomes de canal e os layouts de canais padrão.
-dispositions
Mostra as disposições de fluxo.
-colors
Mostra os nomes de cor reconhecidos.
-sources device[,opt1=val1[,opt2=val2]...]
Mostra as fontes detectadas automaticamente do dispositivo de entrada. Alguns dispositivos podem oferecer nomes de fonte dependentes do sistema que não podem ser detectados automaticamente. Não se deve presumir que a lista retornada esteja sempre completa.
ffmpeg -sources pulse,server=192.168.0.4
-sinks device[,opt1=val1[,opt2=val2]...]
Mostra os sinks detectados automaticamente do dispositivo de saída. Alguns dispositivos podem oferecer nomes de sink dependentes do sistema que não podem ser detectados automaticamente. Não se deve presumir que a lista retornada esteja sempre completa.
ffmpeg -sinks pulse,server=192.168.0.4
-loglevel [flags+]loglevel | -v [flags+]loglevel
Define o nível de registro e as flags usadas pela biblioteca.
O prefixo opcional flags pode ser formado pelos seguintes valores:
‘repeat’
Indica que a saída de log repetida não deve ser condensada na primeira linha, e a linha "Last message repeated n times" será omitida.
‘level’
Indica que a saída de log deve adicionar o prefixo [level] a cada linha de mensagem. Isso pode ser usado como alternativa à coloração do log, por exemplo ao gravar o log em um arquivo.
‘time’
Indica que as linhas de log devem ser prefixadas com informações de hora.
‘datetime’
Indica que as linhas de log devem ser prefixadas com informações de data e hora.
As flags também podem ser usadas isoladamente, adicionando um prefixo ’+’/’-’ para ativar/desativar uma única flag sem afetar as demais nem alterar o loglevel. Ao definir tanto flags quanto loglevel, é esperado um separador ’+’ entre o último valor de flags e o loglevel.
loglevel é uma string ou um número contendo um dos seguintes valores:
‘quiet, -8’
Não mostra nada; fica em silêncio.
‘panic, 0’
Mostra apenas os erros fatais que poderiam levar o processo a travar, como uma falha de asserção. Atualmente não é usado para nada.
‘fatal, 8’
Mostra apenas erros fatais. Estes são erros após os quais o processo definitivamente não pode continuar.
‘error, 16’
Mostra todos os erros, incluindo aqueles dos quais é possível se recuperar.
‘warning, 24’
Mostra todos os avisos e erros. Qualquer mensagem relacionada a eventos possivelmente incorretos ou inesperados será mostrada.
‘info, 32’
Mostra mensagens informativas durante o processamento, além dos avisos e erros. Este é o valor padrão.
‘verbose, 40’
O mesmo que info, porém mais detalhado.
‘debug, 48’
Mostra tudo, incluindo informações de depuração.
‘trace, 56’
Por exemplo, para habilitar a saída de log repetida, adicione o prefixo level e defina loglevel como verbose:
ffmpeg -loglevel repeat+level+verbose -i input output
Outro exemplo que habilita a saída de log repetida sem afetar o estado atual da flag de prefixo level nem do loglevel:
ffmpeg [...] -loglevel +repeat
Por padrão, o programa registra em stderr. Se o terminal for compatível com cores, elas são usadas para marcar erros e avisos. A coloração do log pode ser desativada definindo a variável de ambiente AV_LOG_FORCE_NOCOLOR, ou pode ser forçada definindo a variável de ambiente AV_LOG_FORCE_COLOR.
-report
Despeja a linha de comando completa e a saída de log em um arquivo chamado program-YYYYMMDD-HHMMSS.log no diretório atual. Esse arquivo pode ser útil para relatos de bugs. Também implica -loglevel debug.
Definir a variável de ambiente FFREPORT com qualquer valor produz o mesmo efeito. Se o valor for uma sequência de pares key=value separados por ’:’, essas opções afetarão o relatório; os valores das opções devem ser escapados se contiverem caracteres especiais ou o delimitador de opções ’:’ (veja a seção “Quoting and escaping” no manual ffmpeg-utils).
São reconhecidas as seguintes opções:
file
define o nome de arquivo a ser usado no relatório; %p é expandido para o nome do programa, %t é expandido para uma marca de tempo, %% é expandido para um % literal
level
define o nível de detalhamento do log usando um valor numérico (veja -loglevel).
Por exemplo, para gravar um relatório em um arquivo chamado ffreport.log usando o nível de log 32 (apelido do nível info):
FFREPORT=file=ffreport.log:level=32 ffmpeg -i input output
Erros ao analisar a variável de ambiente não são fatais e não aparecerão no relatório.
-hide_banner
Suprime a exibição do banner.
Todas as ferramentas do FFmpeg normalmente exibem um aviso de copyright, as opções de compilação e as versões das bibliotecas. Esta opção pode ser usada para suprimir a exibição dessas informações.
-cpuflags flags (global)
Permite definir e limpar flags de cpu. Esta opção é destinada a testes. Não a use a menos que saiba o que está fazendo.
ffmpeg -cpuflags -sse+mmx ...
ffmpeg -cpuflags mmx ...
ffmpeg -cpuflags 0 ...
As flags possíveis para esta opção são:
‘x86’
‘mmx’ ‘mmxext’ ‘sse’ ‘sse2’ ‘sse2slow’ ‘sse3’ ‘sse3slow’ ‘ssse3’ ‘atom’ ‘sse4.1’ ‘sse4.2’ ‘avx’ ‘avx2’ ‘xop’ ‘fma3’ ‘fma4’ ‘3dnow’ ‘3dnowext’ ‘bmi1’ ‘bmi2’ ‘cmov’ ‘ARM’
‘armv5te’ ‘armv6’ ‘armv6t2’ ‘vfp’ ‘vfpv3’ ‘neon’ ‘setend’ ‘AArch64’
‘armv8’ ‘vfp’ ‘neon’ ‘PowerPC’
‘altivec’ ‘Specific Processors’
‘pentium2’ ‘pentium3’ ‘pentium4’ ‘k6’ ‘k62’ ‘athlon’ ‘athlonxp’ ‘k8’ -cpucount count (global)
Substitui a detecção da contagem de CPUs. Esta opção é destinada a testes. Não a use a menos que saiba o que está fazendo.
ffmpeg -cpucount 2
-max_alloc bytes
Define o limite máximo de tamanho para alocar um bloco no heap pelas funções da família malloc do ffmpeg. Tenha extremo cuidado ao usar esta opção. Não a use se não compreender plenamente as consequências de fazê-lo. O padrão é INT_MAX.
3.3 AVOptions
Estas opções são fornecidas diretamente pelas bibliotecas libavformat, libavdevice e libavcodec. Para ver a lista de AVOptions disponíveis, use a opção -help. Elas se dividem em duas categorias:
generic
Estas opções podem ser definidas para qualquer container, codec ou dispositivo. As opções genéricas são listadas em AVFormatContext options para containers/dispositivos e em AVCodecContext options para codecs.
private
Estas opções são específicas do container, dispositivo ou codec em questão. As opções privadas são listadas sob o container/dispositivo/codec correspondente.
Por exemplo, para gravar um cabeçalho ID3v2.3 em vez do ID3v2.4 padrão em um arquivo MP3, use a opção privada id3v2_version do muxer MP3:
ffmpeg -i input.flac -id3v2_version 3 out.mp3
Todas as AVOptions de codec são por fluxo, portanto um especificador de fluxo deve ser anexado a elas:
ffmpeg -i multichannel.mxf -map 0:v:0 -map 0:a:0 -map 0:a:0 -c:a:0 ac3 -b:a:0 640k -ac:a:1 2 -c:a:1 aac -b:2 128k out.mp4
No exemplo acima, um fluxo de áudio multicanal é mapeado duas vezes para a saída. A primeira instância é codificada com o codec ac3 e taxa de bits de 640k. A segunda instância é reduzida para 2 canais e codificada com o codec aac. Uma taxa de bits de 128k é especificada para ela usando o índice absoluto do fluxo de saída.
Nota: a sintaxe -nooption não pode ser usada para AVOptions booleanas; use -option 0/-option 1.
Nota: a antiga forma não documentada de especificar AVOptions por fluxo, antepondo v/a/s ao nome da opção, já está obsoleta e será removida em breve.
3.4 Opções principais
-f format
Força o formato a ser usado.
-unit
Mostra a unidade dos valores mostrados.
-prefix
Usa prefixos SI para os valores mostrados. A menos que a opção "-byte_binary_prefix" seja usada, todos os prefixos são decimais.
-byte_binary_prefix
Força o uso de prefixos binários para valores em bytes.
-sexagesimal
Usa o formato sexagesimal HH:MM:SS.MICROSECONDS para valores de tempo.
-pretty
Deixa mais legível a exibição dos valores; equivale às opções "-unit -prefix -byte_binary_prefix -sexagesimal".
-output_format, -of, -print_format writer_name[=writer_options]
Define o formato de impressão da saída.
writer_name especifica o nome do writer, e writer_options especifica as opções a serem passadas ao writer.
Por exemplo, para imprimir a saída em formato JSON, especifique:
-output_format json
Para mais detalhes sobre os formatos de impressão de saída disponíveis, veja a seção Writers mais abaixo.
-sections
Mostra a estrutura das seções e as informações de seção, e encerra. A saída não é destinada a ser analisada por uma máquina.
-select_streams stream_specifier
Seleciona apenas os fluxos especificados por stream_specifier. Esta opção afeta somente as opções relacionadas a fluxos (por exemplo, show_streams, show_packets etc.).
Por exemplo, para mostrar apenas os fluxos de áudio, você pode usar o comando:
ffprobe -show_streams -select_streams a INPUT
Para mostrar apenas os pacotes de vídeo pertencentes ao fluxo de vídeo com índice 1:
ffprobe -show_packets -select_streams v:1 INPUT
-show_data
Mostra os dados de payload como um dump hexadecimal e ASCII (outros formatos podem ser selecionados com -data_dump_format). Combinada com -show_packets, faz o dump dos dados dos pacotes. Combinada com -show_streams, faz o dump do extradata do codec.
O dump é mostrado no campo "data". Pode conter quebras de linha.
-show_data_hash algorithm
Mostra um hash dos dados de payload: dos pacotes com -show_packets e do extradata do codec com -show_streams.
-data_dump_format format
Seleciona o formato usado para os dumps de dados habilitados com a opção -show_data. O padrão é xxd, um formato de hexdump compatível com o conhecido programa xxd. base64 também é aceito.
-show_error
Mostra informações sobre o erro encontrado ao tentar examinar a entrada.
As informações do erro são mostradas dentro de uma seção chamada "ERROR".
-show_format
Mostra informações sobre o formato de container do fluxo multimídia de entrada.
Todas as informações do formato de container são mostradas dentro de uma seção chamada "FORMAT".
-show_entries section_entries
Define a lista de entradas a mostrar.
As entradas são especificadas de acordo com a seguinte sintaxe. section_entries contém uma lista de entradas de seção separadas por :. Cada entrada de seção é composta por um nome de seção (ou nome exclusivo), opcionalmente seguido por uma lista de entradas locais a essa seção, separadas por ,.
Se o nome da seção for especificado mas não for seguido por =, todas as entradas são mostradas, junto com todas as seções nela contidas. Caso contrário, apenas as entradas especificadas na lista de entradas locais da seção são mostradas. Em particular, se = for especificado mas a lista de entradas locais estiver vazia, nenhuma entrada será mostrada para essa seção.
Observe que a ordem de especificação das entradas locais da seção não é respeitada na saída, e a ordem de exibição usual é mantida.
A sintaxe formal é a seguinte:
LOCAL_SECTION_ENTRIES ::= SECTION_ENTRY_NAME[,LOCAL_SECTION_ENTRIES]
SECTION_ENTRY ::= SECTION_NAME[=[LOCAL_SECTION_ENTRIES]]
SECTION_ENTRIES ::= SECTION_ENTRY[:SECTION_ENTRIES]
Por exemplo, para mostrar apenas o índice e o tipo de cada fluxo, e o tempo de PTS, o tempo de duração e o índice de fluxo dos pacotes, você pode especificar o argumento:
packet=pts_time,duration_time,stream_index : stream=index,codec_type
Para mostrar todas as entradas na seção "format", mas apenas o tipo de codec na seção "stream", especifique o argumento:
format : stream=codec_type
Para mostrar todas as tags nas seções stream e format:
stream_tags : format_tags
Para mostrar apenas a tag title (se disponível) nas seções stream:
stream_tags=title
-show_packets
Mostra informações sobre cada pacote contido no fluxo multimídia de entrada.
As informações de cada pacote são mostradas dentro de uma seção dedicada chamada "PACKET".
-show_frames
Mostra informações sobre cada quadro e legenda contidos no fluxo multimídia de entrada.
As informações de cada quadro são mostradas dentro de uma seção dedicada chamada "FRAME" ou "SUBTITLE".
-show_log loglevel
Mostra informações de log fornecidas pelo decoder sobre cada quadro, de acordo com o valor definido em loglevel (veja -loglevel). Esta opção requer -show_frames.
As informações de cada mensagem de log são mostradas dentro de uma seção dedicada chamada "LOG".
-show_streams
Mostra informações sobre cada fluxo de mídia contido no fluxo multimídia de entrada.
As informações de cada fluxo de mídia são mostradas dentro de uma seção dedicada chamada "STREAM".
-show_programs
Mostra informações sobre os programas e seus fluxos contidos no fluxo multimídia de entrada.
As informações de cada fluxo de mídia são mostradas dentro de uma seção dedicada chamada "PROGRAM_STREAM".
-show_stream_groups
Mostra informações sobre os grupos de fluxos e seus fluxos contidos no fluxo multimídia de entrada.
As informações de cada fluxo de mídia são mostradas dentro de uma seção dedicada chamada "STREAM_GROUP_STREAM".
-show_chapters
Mostra informações sobre os capítulos armazenados no formato.
Cada capítulo é mostrado dentro de uma seção dedicada chamada "CHAPTER".
-count_frames
Conta o número de quadros por fluxo e o informa na seção de fluxo correspondente.
-count_packets
Conta o número de pacotes por fluxo e o informa na seção de fluxo correspondente.
-read_intervals read_intervals
Lê apenas os intervalos especificados. read_intervals deve ser uma sequência de especificações de intervalo separadas por ",". O ffprobe buscará o ponto de início do intervalo e continuará a leitura a partir dele.
Cada intervalo é especificado por duas partes opcionais, separadas por "%".
A primeira parte especifica a posição de início do intervalo. Ela é interpretada como uma posição absoluta ou, se precedida pelo caractere "+", como um deslocamento relativo à posição atual. Se essa primeira parte não for especificada, nenhuma busca será realizada ao ler esse intervalo.
A segunda parte especifica a posição final do intervalo. Ela é interpretada como uma posição absoluta ou, se precedida pelo caractere "+", como um deslocamento relativo à posição atual. Se a especificação do deslocamento começar com "#", ela é interpretada como o número de pacotes a serem lidos (sem contar os pacotes de flush) a partir do início do intervalo. Se a segunda parte não for especificada, o programa lerá até o fim da entrada.
Observe que a busca não é exata; portanto, o ponto de início real do intervalo pode ser diferente da posição especificada. Além disso, quando uma duração de intervalo é especificada, o tempo final absoluto é calculado somando a duração ao ponto de início do intervalo encontrado ao buscar no arquivo, e não ao valor de início especificado.
A sintaxe formal é a seguinte:
INTERVAL ::= [START|+START_OFFSET][%[END|+END_OFFSET]]
INTERVALS ::= INTERVAL[,INTERVALS]
Seguem alguns exemplos.
-
Busca até o tempo 10, lê pacotes até 20 segundos após o ponto de busca encontrado, depois busca até a posição
01:30(1 minuto e trinta segundos) e lê pacotes até a posição01:45.10%+20,01:30%01:45 -
Lê apenas 42 pacotes após buscar até a posição
01:23:01:23%+#42 -
Lê apenas os primeiros 20 segundos a partir do início:
%+20 -
Lê a partir do início até a posição
02:30:%02:30
-show_private_data, -private
Mostra os dados privados, ou seja, dados que dependem do formato do elemento específico mostrado. Esta opção fica habilitada por padrão, mas talvez seja necessário desabilitá-la para usos específicos, por exemplo ao criar uma saída XML compatível com XSD.
-show_program_version
Mostra informações relacionadas à versão do programa.
As informações de versão são mostradas dentro de uma seção chamada "PROGRAM_VERSION".
-show_library_versions
Mostra informações relacionadas às versões das bibliotecas.
As informações de versão de cada biblioteca são mostradas dentro de uma seção chamada "LIBRARY_VERSION".
-show_versions
Mostra informações relacionadas às versões do programa e das bibliotecas. Isso equivale a definir as opções -show_program_version e -show_library_versions ao mesmo tempo.
-show_pixel_formats
Mostra informações sobre todos os pixel format aceitos pelo FFmpeg.
As informações de pixel format de cada formato são mostradas dentro de uma seção chamada "PIXEL_FORMAT".
-show_optional_fields value
Alguns writers, como JSON e XML, omitem a impressão de campos com valores inválidos ou não aplicáveis, enquanto outros writers sempre os imprimem. Esta opção permite controlar esse comportamento. Os valores válidos são always/1, never/0 e auto/-1. O padrão é auto.
-analyze_frames
Analisa os quadros e/ou seus side data até o intervalo de leitura fornecido, fornecendo informações adicionais que podem ser úteis no nível de fluxo. Deve ser combinada com a opção -show_streams, ou não terá efeito.
Atualmente, os campos adicionais fornecidos por esta opção quando habilitada são os campos closed_captions e film_grain.
Por exemplo, para analisar os primeiros 20 segundos e preencher esses campos:
ffprobe -show_streams -analyze_frames -read_intervals "%+20" INPUT
-bitexact
Força a saída bitexact, útil para produzir uma saída que não dependa da compilação específica.
-i input_url
Lê input_url.
-o output_url
Grava a saída em output_url. Se não for especificado, a saída é enviada para stdout.
-c:media_specifier codec_name -codec:media_specifier codec_name
Força uma implementação específica de decoder para o fluxo identificado por media_specifier, que pode assumir os valores a (áudio), v (vídeo), s (legenda) e d (dados).
4 Writers
Um writer define o formato de saída adotado pelo ffprobe e é usado para imprimir todas as partes da saída.
Um writer pode aceitar um ou mais argumentos, que especificam as opções a adotar. As opções são especificadas como uma lista de pares key=value, separados por ":".
Todos os writers aceitam as seguintes opções:
string_validation, sv
Define o modo de validação de strings.
Os seguintes valores são aceitos.
‘fail’
O writer falhará imediatamente caso uma sequência de string (UTF-8) ou um code point inválido seja encontrado na entrada. Isso é especialmente útil para validar os metadados de entrada.
‘ignore’
Qualquer erro de validação será ignorado. Isso pode resultar em uma saída corrompida, especialmente com o writer json ou xml.
‘replace’
O writer substituirá sequências ou code points UTF-8 inválidos pela string especificada em string_validation_replacement.
O valor padrão é ‘replace’.
string_validation_replacement, svr
Define a string de substituição a ser usada quando string_validation estiver definido como ‘replace’.
Caso a opção não seja especificada, o writer assumirá a string vazia, ou seja, removerá as sequências inválidas das strings de entrada.
A seguir, uma descrição dos writers atualmente disponíveis.
4.1 default
Formato padrão.
Imprime cada seção na forma:
[SECTION]
key1=val1
...
keyN=valN
[/SECTION]
As tags de metadados são impressas como uma linha na seção FORMAT, STREAM, STREAM_GROUP_STREAM ou PROGRAM_STREAM correspondente, com o prefixo da string "TAG:".
A seguir, uma descrição das opções aceitas.
nokey, nk
Se definido como 1, especifica que a key de cada campo não deve ser impressa. O valor padrão é 0.
noprint_wrappers, nw
Se definido como 1, especifica que o cabeçalho e o rodapé da seção não devem ser impressos. O valor padrão é 0.
4.2 compact, csv
Formato compact e CSV.
O writer csv é equivalente ao compact, mas com valores padrão diferentes.
Cada seção é impressa em uma única linha. Se nenhuma opção for especificada, a saída tem a forma:
section|key1=val1| ... |keyN=valN
As tags de metadados são impressas na seção "format" ou "stream" correspondente. A key de uma tag de metadados, se impressa, tem o prefixo da string "tag:".
A seguir, a descrição das opções aceitas.
item_sep, s
Especifica o caractere a ser usado para separar os campos na linha de saída. Deve ser um único caractere imprimível; o padrão é "|" ("," para o writer csv).
nokey, nk
Se definido como 1, especifica que a key de cada campo não deve ser impressa. Seu valor padrão é 0 (1 para o writer csv).
escape, e
Define o modo de escape a ser usado; o padrão é "c" ("csv" para o writer csv).
Pode assumir um dos seguintes valores:
c
Realiza um escape no estilo C. Strings que contêm uma quebra de linha (‘\n’), retorno de carro (‘\r’), uma tabulação (‘\t’), uma quebra de página (‘\f’), o caractere de escape (‘\’) ou o caractere separador de itens SEP são escapadas no estilo C, de modo que uma quebra de linha é convertida na sequência ‘\n’, um retorno de carro em ‘\r’, ‘\’ em ‘\\’ e o separador SEP é convertido em ‘\SEP’.
csv
Realiza um escape no estilo CSV, conforme descrito na RFC4180. Strings que contêm uma quebra de linha (‘\n’), um retorno de carro (‘\r’), aspas duplas (‘"’) ou SEP são colocadas entre aspas duplas.
none
Não realiza nenhum escape.
print_section, p
Imprime o nome da seção no início de cada linha se o valor for 1; desative com o valor 0. O valor padrão é 1.
4.3 flat
Formato flat.
Uma saída de formato livre em que cada linha contém um key=value explícito, como "streams.stream.3.tags.foo=bar". A saída tem escape de shell, de modo que pode ser incorporada diretamente em scripts sh, desde que o caractere separador seja um caractere alfanumérico ou um sublinhado (veja a opção sep_char).
A seguir, a descrição das opções aceitas.
sep_char, s
Caractere separador usado para separar o capítulo, o nome da seção, os IDs e possíveis tags na key do campo impresso.
O valor padrão é ‘.’.
hierarchical, h
Especifica se a especificação do nome da seção deve ser hierárquica. Se definido como 1, e se houver mais de uma seção no capítulo atual, o nome da seção terá como prefixo o nome do capítulo. Um valor de 0 desativa esse comportamento.
O valor padrão é 1.
4.4 ini
Saída em formato INI.
Imprime a saída em um formato baseado em INI.
As seguintes convenções são adotadas:
- todas as keys e os valores são UTF-8
- ‘.’ é o separador de subgrupo
- quebra de linha, ‘\t’, ‘\f’, ‘\b’ e os caracteres a seguir são escapados
- ‘\’ é o caractere de escape
- ‘#’ é o indicador de comentário
- ‘=’ é o separador de key/value
- ‘:’ não é usado, mas normalmente é interpretado como separador de key/value
Este writer aceita as opções como uma lista de pares key=value, separados por ‘:’.
A seguir, a descrição das opções aceitas.
hierarchical, h
Especifica se a especificação do nome da seção deve ser hierárquica. Se definido como 1, e se houver mais de uma seção no capítulo atual, o nome da seção terá como prefixo o nome do capítulo. Um valor de 0 desativa esse comportamento.
O valor padrão é 1.
4.5 json
Formato baseado em JSON.
Cada seção é impressa usando notação JSON.
A seguir, a descrição das opções aceitas.
compact, c
Se definido como 1, habilita a saída compact, ou seja, cada seção será impressa em uma única linha. O valor padrão é 0.
Para mais informações sobre JSON, veja http://www.json.org/.
4.6 xml
Formato baseado em XML.
A saída XML é descrita no arquivo de esquema XML ffprobe.xsd instalado no datadir do FFmpeg.
Uma versão atualizada do esquema pode ser obtida na url http://www.ffmpeg.org/schema/ffprobe.xsd, que redireciona para o esquema mais recente incorporado à árvore de código-fonte de desenvolvimento do FFmpeg.
Observe que a saída gerada só estará em conformidade com o esquema ffprobe.xsd quando nenhuma opção especial de saída global (unit, prefix, byte_binary_prefix, sexagesimal etc.) for especificada.
A seguir, a descrição das opções aceitas.
fully_qualified, q
Se definido como 1, especifica que a saída deve ser totalmente qualificada. O valor padrão é 0. Isso é necessário para gerar um arquivo XML que possa ser validado por um arquivo XSD.
xsd_strict, x
Se definido como 1, realiza mais verificações para garantir que a saída esteja em conformidade com o XSD. O valor padrão é 0. Esta opção define automaticamente fully_qualified como 1.
Para mais informações sobre o formato XML, veja https://www.w3.org/XML/.
5 Código de tempo
ffprobe é compatível com a extração de Timecode:
- O timecode MPEG1/2 é extraído do GOP e está disponível nos detalhes do fluxo de vídeo (-show_streams, veja timecode).
- O timecode MOV é extraído da trilha tmcd, portanto está disponível nos metadados do fluxo tmcd (-show_streams, veja TAG:timecode).
- Os timecodes DV, GXF e AVI estão disponíveis nos metadados do formato (-show_format, veja TAG:timecode).
6 Veja também
ffprobe-all, ffmpeg, ffplay, ffmpeg-utils, ffmpeg-scaler, ffmpeg-resampler, ffmpeg-codecs, ffmpeg-bitstream-filters, ffmpeg-formats, ffmpeg-devices, ffmpeg-protocols, ffmpeg-filters
7 Autores
Os desenvolvedores do FFmpeg.
Para detalhes sobre a autoria, veja o histórico do Git do projeto (https://git.ffmpeg.org/ffmpeg), por exemplo digitando o comando git log no diretório-fonte do FFmpeg, ou consultando o repositório on-line em https://git.ffmpeg.org/ffmpeg.
Os mantenedores dos componentes específicos estão listados no arquivo MAINTAINERS na árvore de código-fonte.
Hospedagem fornecida por telepoint.bg