Probe score показывает, насколько FFmpeg уверен в контейнерном формате файла. FFmpeg - это мультимедийный фреймворк для чтения и конвертации аудио- и видеофайлов, а его программа ffprobe выводит это значение.
Это целое число от 0 до 100, и чем оно выше, тем сильнее совпадение. Оно описывает только контейнерный формат, например MKV или MP4. Оно не измеряет качество звука или изображения.
Откуда берется значение
Значение probe score не записывается в ваш файл. FFmpeg вычисляет его каждый раз при открытии файла.
В FFmpeg есть небольшой детектор для многих форматов. Каждый детектор читает начало файла, ищет признаки своего формата и возвращает значение score. Формат с наибольшим значением выигрывает.
FFmpeg начинает с 2048 байт данных. Если ни один формат не получает значение больше 25, FFmpeg удваивает объем и пробует снова.
Лимит по умолчанию - 1 048 576 байт, то есть около 1 МБ. В последней попытке достаточно любого значения больше 0.
Если входные данные сообщают тип MIME, который соответствует какому-то формату, этот формат получает дополнительно 30 баллов, но не выше 100. Если 2 формата набирают одинаково высокий результат, FFmpeg отклоняет оба. Если после последней попытки не остается ни одного формата, FFmpeg останавливается с ошибкой Invalid data found when processing input.
Как расширение файла влияет на показатель
Высокий probe score не доказывает, что расширение файла указано верно. Например, детектор Matroska возвращает 100 при известном типе документа в заголовке файла, независимо от его имени.
Когда у формата есть детектор, подходящее расширение обычно поднимает значение только с 0 до 1. Формат без детектора зависит от расширения, и совпадение дает такому формату значение 50. Чтобы проверить сомнительное расширение, сравните его с именем формата, которое ffprobe показывает рядом со значением score.
Как выглядит это значение
С опцией -show_format ffprobe выводит значение score отдельной строкой в разделе формата: probe_score=100. В XML-отчете ffprobe то же число записано в атрибуте с именем probe_score.
Типичные значения
Эти примеры взяты из исходного кода FFmpeg 9.0. Другие версии могут давать другие значения, например 51 для примера с MP3 в FFmpeg 8.1.
100: файл MP4 или MOV с разделомftypилиmoov100: файл Matroska или WebM с известным типом документа100: файл FLAC с корректной информацией о потоке99: файл WAV со стандартным заголовком RIFF52: файл MP3 как минимум с 7 аудиокадрами в начале51: файл AAC в формате ADTS как минимум с 3 аудиокадрами в начале50: файл в формате без детектора, который совпал только по расширению0: файл, для которого формат был принудительно задан опцией-f, поэтому FFmpeg пропустил определение формата
Почему это важно для вашего файла
Обнаруженное значение 25 или ниже - это предупреждающий сигнал, а не доказательство ошибки. Затем FFmpeg выводит сообщение со словами misdetection possible, что означает, что FFmpeg мог выбрать неверный формат.
Значение около 50 нормально для файлов MP3 и AAC, потому что их детекторы не возвращают больше 52. Поэтому значение 51 или 52 не означает, что с вашим файлом MP3 что-то не так.
Для обнаруженного значения 25 или ниже документация для разработчиков FFmpeg рекомендует повторную попытку с большим объемом данных. Опция -formatprobesize задает предел для определения формата в байтах. Опции -probesize и -analyzeduration решают другую задачу: они ограничивают объем данных, который FFmpeg читает для поиска деталей потоков.