ТранскрибаторТранскрибатор
Практическая инструкция

ffprobe JSON: как составить техническую карточку записи перед расшифровкой

Команда ffprobe для JSON-карточки аудио и видео: длительность, потоки, кодек и каналы. Как читать отсутствующие поля и не перепутать дорожки.

Транскрибатор
ЗАПИСЬПЛАН РАБОТЫПолучите JSONВыберите аудиопотокСверьте файлПроверить результатОТ СЛОВ К РЕЗУЛЬТАТУ
Работа с реальной записьюНаглядный учебный примерШаблон для копирования
1Получите JSON2Выберите аудиопоток3Сверьте файл
Сначала сохраните источник, затем выполните преобразование и проверьте результат по записи.

Определите, что требуется от технической карточки

Когда запись передают для расшифровки, названия «встреча.mp4» недостаточно. Внутри могут находиться видео, несколько языков или отдельные каналы. Карточка помогает согласовать, какой именно поток обрабатывать, и сохранить исходные параметры для сравнения с подготовленной копией.

ffprobe входит в проект FFmpeg и читает сведения о медиафайле. В отличие от конвертации он не создаёт новую аудиоверсию. Команда ниже обращается к локальному исходнику и пишет текстовый отчёт; названия файла и результата необходимо заменить своими.

Перед началом проверьте доступность утилиты командой ffprobe -version. Храните отчёт рядом с копией записи. Если одинаковые имена встречаются в разных папках, добавьте в собственную карточку точный путь или идентификатор исходника, понятный Вашей команде.

Эта проверка нужна до преобразования аудио в текст. Сведения о каналах и кодеке помогают выбрать материал, но не доказывают, что голоса записались разборчиво. Проверка начала, середины и конца на слух остаётся отдельной задачей.

Сохраните ограниченный JSON-отчёт

Выполните команду ffprobe -v error -show_entries format=filename,duration:stream=index,codec_type,codec_name,sample_rate,channels,duration -of json "interview.mp4" > "interview-info.json". Здесь format описывает контейнер, stream — отдельные потоки, а json задаёт форму вывода.

Опция -v error сокращает служебные сообщения до ошибок. Поля выбираются через -show_entries; двоеточие разделяет секции, запятые — имена полей внутри секции. Порядок перечисления полей в команде не следует считать обещанием того же порядка ключей в результате.

Посмотрите, создался ли непустой JSON. При ошибке открытия файла сначала проверьте путь и доступность исходника. Пустой файл после перенаправления не означает, что запись не содержит потоков: команда могла завершиться до чтения. Не заменяйте техническую ошибку выдуманными нулевыми значениями.

В примере нужен только минимум параметров. Полный -show_streams даёт больше сведений, но они не всегда помогают человеку принять решение. Если отчёт предназначен коллеге, добавьте короткое объяснение выбранного потока отдельным текстом, сохранив JSON как машинный исходник.

Различайте контейнер, поток и расположение каналов

В массиве streams найдите элементы с codec_type, равным audio. Индекс обозначает поток внутри контейнера. Не путайте его с номером говорящего в расшифровке: один аудиопоток может содержать много людей, а несколько потоков — альтернативные версии того же разговора.

Поле channels показывает число каналов. Два канала не обязательно означают двух участников. Это может быть стереомикрофон, смешанная конференция или разные сигналы. Сделайте прослушивание, прежде чем решать, что левый канал соответствует одному человеку, а правый — другому.

Часть числовых сведений JSON может представляться строками. Отсутствующее duration не нужно превращать в ноль при переносе в таблицу. Сохраните значение как «не указано в отчёте» и выясните длительность другим подходящим способом.

Учебная карточка ниже показывает контейнер 180 секунд и аудиопоток 178 секунд. Это повод проверить начало и конец, а не объявлять потерянными две секунды разговора. Метаданные сами по себе не сообщают, какое содержание находилось в этой разнице. Для визуального чтения параметров полезна инструкция по MediaInfo.

Сопоставьте отчёт с материалом для передачи

Откройте выбранный поток в плеере и убедитесь, что слышен нужный язык и полный разговор. Проверьте раннюю реплику, фрагмент в середине и завершение встречи. Если внутри есть перевод и оригинальный звук, подпишите выбор понятными словами, а не только техническим индексом.

Если создавали подготовленную копию, сохраните для неё отдельный JSON. Сравнивайте параметры по именам полей. Другой кодек или число каналов не обязательно ошибка: это может быть запланированное преобразование. В карточке должно быть видно, зачем его выполняли и на какой файл ссылаются таймкоды.

Карточка не подтверждает отсутствие ошибок декодирования всего файла. Если плеер обрывается, требуется отдельная диагностика чтения. Не выводите исправность длинной записи из того, что ffprobe прочитал заголовок контейнера и показал длительность.

Перед передачей сохраните исходник, отчёт и решение о выбранной дорожке вместе. Когда файл переименовали, обновите человекочитаемую карточку; старое поле filename в ранее созданном JSON относится к моменту проверки. Не редактируйте его так, будто утилита сама прочитала уже новое имя.

Учебный пример

Учебный пример: проверка на коротком фрагменте

Ниже вымышленная запись. Имена, время и содержание нужны только для объяснения порядка работы.

УровеньУчебное значениеВывод
Контейнерduration: 180.0Сверить общую шкалу
Аудиопотокindex: 1, duration: 178.0Прослушать границы
Каналыchannels: 2Проверить содержимое каналов
Контейнерduration: 180.0Сверить общую шкалуАудиопотокindex: 1, duration: 178.0Прослушать границыКаналыchannels: 2Проверить содержимое каналов
Каждая контрольная точка связана с конкретным результатом; отсутствие подтверждения оставляйте открытым вопросом.

Повторите проверку на своей копии записи. Учебные значения не описывают Ваш файл и не подтверждают качество всей расшифровки.

Заготовка для собственной проверки

Рабочая заготовкаВыделите и скопируйте
Исходник: [имя файла]
Отчёт: [имя JSON]
Дата проверки: [дата]
Аудиопоток: [index]
Язык / содержание: [проверено на слух]
Длительность контейнера: [значение или неизвестно]
Длительность потока: [значение или неизвестно]
Каналы: [число]
Проверка начала / середины / конца: [результат]

Частые вопросы

ffprobe создаёт расшифровку?

Нет. Он читает технические сведения о записи.

Отсутствующее duration означает пустую запись?

Нет. Это означает, что поле не получено в данном отчёте.

Два канала означают двух собеседников?

Нет. Проверяйте фактический звук каждого канала.

JSON гарантирует исправность всего файла?

Нет. Нужны прослушивание и, при проблемах, отдельная проверка декодирования.