nb_streams é o número de streams dentro de um arquivo de mídia. NB é a abreviação de número, então um valor de 2 significa que o arquivo contém 2 streams. O campo NB Frames usa a mesma forma abreviada para o número de frames em um stream.
Um arquivo de mídia é um contêiner que armazena um ou mais streams junto com metadados. Neste campo, um stream não é um vídeo online nem uma transmissão ao vivo. Um stream é uma parte do conteúdo, como a imagem ou o som.
O que conta como um stream
O campo vem do FFmpeg, um projeto de software que lê e grava arquivos de mídia. O FFmpeg reconhece 5 tipos de stream, e nb_streams conta todos eles juntos:
video: imagens em movimento e imagens estáticas, como capaaudio: som, por exemplo um segundo idioma ou um comentáriosubtitle: texto para quem assiste, como legendas em um idiomadata: outras informações que não são imagem, som ou legendasattachment: um arquivo inteiro no contêiner, como uma fonte para as legendas
nb_streams não informa os tipos. Para ver o tipo de cada stream, consulte o campo Codec Type.
Como são os valores
O valor é um número inteiro sem unidade. O leitor de arquivos ffprobe do projeto FFmpeg imprime uma linha como nb_streams=3. O número depende do que o arquivo contém:
1: apenas um stream, como uma música FLAC sem imagem2: um vídeo com um stream de imagem e um stream de som, ou uma música com uma imagem anexada3ou mais: um vídeo com streams extras de som, legendas ou arquivos anexados
Cada stream também tem um número de índice, começando em 0. Assim, um arquivo com 3 streams tem os índices 0, 1 e 2.
O formato de arquivo pode limitar o número e os tipos de streams. Por exemplo, o FFmpeg grava exatamente 1 stream de áudio em um arquivo FLAC e pode adicionar imagens. Já a especificação do MKV mostra um arquivo de exemplo com 7 streams de áudio, que ela chama de faixas.
Quais arquivos o carregam
Você vê nb_streams em arquivos de áudio e vídeo que o FFmpeg consegue abrir, como MP4, MOV, AVI, MKV, MP3, FLAC e WAV. O leitor ffprobe também abre arquivos de imagem. O FFmpeg normalmente trata uma imagem como um stream de vídeo, então o ffprobe imprime 1.
Para algumas fotos, o ffprobe imprime mais de 1 stream. Uma foto HEIC pode armazenar sua imagem como uma grade de blocos separados. O FFmpeg pode listar cada bloco como um stream, então uma grade de 2 por 2 blocos conta como pelo menos 4 streams.
O FFmpeg não tem leitor para formatos de documento como PDF e DOCX. Por isso, documentos normalmente não exibem este campo.
De onde vem o valor
O próprio arquivo não contém um campo chamado nb_streams. O FFmpeg abre o arquivo, encontra cada stream e adiciona o stream a uma lista. nb_streams é o número de itens nessa lista.
Por que isso é importante
nb_streams oferece uma verificação rápida do que um arquivo contém. Um arquivo de vídeo com valor 1 normalmente não tem imagem ou som.
Um valor maior do que você espera pode indicar idiomas extras, legendas, imagens ou arquivos anexados. Um player normalmente seleciona apenas alguns desses streams, então você pode não perceber os outros durante a reprodução.
O valor também pode mudar quando você converte um arquivo. Sem opções extras, o programa ffmpeg escolhe 1 stream de cada tipo e ignora streams de dados e anexos. Assim, um valor menor pode significar que um stream foi removido.