NB Streams (nb_streams) - это количество потоков внутри медиафайла. NB - сокращение от "number" (число), поэтому значение 2 означает, что файл содержит 2 потока. Поле NB Frames использует то же сокращение для числа кадров в одном потоке.
Медиафайл - это контейнер, который хранит один или несколько потоков вместе с метаданными. В этом поле потоком не считается онлайн‑видео или прямая трансляция. Поток - это одна часть содержимого, например изображение или звук.
Что считается потоком
Это поле взято из FFmpeg, программного проекта для чтения и записи медиафайлов. FFmpeg знает 5 типов потоков, и NB Streams считает их все вместе:
video: движущиеся изображения и статичные изображения, такие как обложкаaudio: звук, например второй язык или комментарийsubtitle: текст для зрителя, например субтитры на одном языкеdata: другая информация, которая не является ни изображением, ни звуком, ни субтитрамиattachment: целый файл в контейнере, например шрифт для субтитров
NB Streams не указывает типы потоков. Чтобы увидеть тип каждого потока, посмотрите его поле Codec Type.
Как выглядят значения
Значение - это целое число без единицы измерения. Чтение файлов ffprobe из проекта FFmpeg выводит строку вроде nb_streams=3. Число зависит от того, что содержит файл:
1: только один поток, например песня FLAC без изображения2: видео с одним потоком картинки и одним потоком звука или аудиозапись с одной вложенной картинкой3или больше: видео с дополнительными звуковыми потоками, потоками субтитров или вложенными файлами
У каждого потока также есть номер индекса, начиная с 0. Поэтому файл с 3 потоками имеет индексы 0, 1 и 2.
Формат файла может ограничивать количество и типы потоков. Например, FFmpeg записывает ровно 1 звуковой поток в файл FLAC и может добавлять изображения. В отличие от этого, спецификация MKV показывает пример файла с 7 звуковыми потоками, которые она называет дорожками.
Какие файлы его содержат
Поле NB Streams (nb_streams) присутствует в аудио- и видеофайлах, которые FFmpeg может открыть, например MP4, MOV, AVI, MKV, MP3, FLAC и WAV. Чтение файлов ffprobe также открывает изображения. Обычно FFmpeg рассматривает одно изображение как один видеопоток, поэтому ffprobe выводит 1.
Для некоторых фотографий ffprobe выводит больше 1 потока. Фото HEIC может хранить изображение в виде сетки из отдельных тайлов. FFmpeg может перечислять каждый тайл как поток, поэтому сетка 2 на 2 тайла считается как минимум 4 потока.
У FFmpeg нет средства чтения для форматов документов, таких как PDF и DOCX. Поэтому документы обычно не показывают это поле.
Откуда берется значение
Сам файл не содержит поля с названием NB Streams. FFmpeg открывает файл, находит каждый поток и добавляет его в список. NB Streams - это количество элементов в этом списке.
Почему это важно
NB Streams (nb_streams) позволяет быстро проверить, что содержит файл. Видеофайл со значением 1 обычно не содержит либо изображения, либо звука.
Значение выше ожидаемого может указывать на дополнительные языки, субтитры, изображения или вложенные файлы. Проигрыватель обычно выбирает только часть этих потоков, поэтому во время воспроизведения вы можете не заметить остальные.
Значение также может измениться при конвертации файла. Без дополнительных параметров программа ffmpeg выбирает по 1 потоку каждого типа и пропускает потоки данных и вложений. Поэтому меньшее значение может означать, что какой‑то поток исчез.