Разбираемся · Создание онлайн-курсов

Как узнать кодек видеоурока перед загрузкой: проверка ffprobe

Посмотрите, что находится внутри видеофайла: контейнер, кодеки изображения и звука, размер кадра и число дорожек. Команды ffprobe и проверяемый пример без перекодирования.

В этом материале

Отделите расширение от содержимого

Файл lesson.mp4 может нормально открываться у автора и при этом требовать дополнительной проверки перед размещением в курсе. Для разговора с монтажёром полезнее получить точные параметры, чем сообщать только расширение или размер. Начните с вопроса: какой контейнер используется, какие потоки он содержит и чем закодированы изображение и звук?

Контейнер объединяет медиапотоки и метаданные. Кодеки относятся к содержимому отдельных потоков. Это различие объясняет руководство MDN по медиаконтейнерам. Название MP4 не является названием одного обязательного видеокодека. Простое переименование файла также не выполняет преобразование его содержимого.

Работайте с копией финального экспорта, который собираетесь выдавать ученикам. Отдельно запишите его имя и версию. Не проверяйте случайный промежуточный файл монтажного проекта: даже правильный отчёт о нём не описывает другую копию, уже отправленную на загрузку. Общий порядок подготовки комплекта разобран в материале о загрузке видео и приложений курса.

Получите отчёт ffprobe

Для этого маршрута нужна установленная ffprobe, доступная в командной строке. Сначала выполните ffprobe -version. Если команда не найдена, подготовьте утилиту для своей операционной системы или обратитесь к монтажёру; вставка команды в строку поиска браузера не проверяет файл.

Откройте терминал в папке с копией видео и выполните одной строкой:

ffprobe -v error -show_streams -show_format -of json "lesson.mp4"

Вместо lesson.mp4 укажите своё имя, сохранив прямые кавычки, особенно если в пути есть пробелы. Команда выводит сведения в окно терминала. Она не задаёт новый видеофайл и не перекодирует урок. Параметры вывода описаны в официальном исходнике руководства ffprobe: show_format относится к контейнеру, show_streams — к потокам, of json выбирает представление результата.

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

Найдите параметры изображения

В разделе streams найдите объект с codec_type, равным video. Посмотрите codec_name, width и height. Эти поля позволяют назвать кодек и размер кадра. Если в файле несколько видеопотоков, сначала разберитесь, какой используется для урока; номер первого найденного объекта не заменяет проверки назначения.

Когда полный вывод мешает чтению, можно запросить только три параметра первого видеопотока:

ffprobe -v error -select_streams v:0 -show_entries stream=codec_name,width,height -of json "lesson.mp4"

В нашем техническом примере результат содержит h264, ширину 960 и высоту 540. Полный отчёт также показывает avg_frame_rate 25/1, то есть среднюю частоту 25 кадров в секунду. Это параметры конкретного искусственного ролика, а не рекомендуемый стандарт для любого курса.

Не считайте совпадение размера кадра подтверждением читаемости текста. В изображение 1920 × 1080 можно поместить слишком мелкую таблицу или уже размытый снимок. После просмотра технических полей откройте урок и проверьте важные формулы, числа и указатель при реальном размере ученического плеера.

Проверьте звук и состав потоков

Найдите все объекты с codec_type audio. Для каждого выпишите codec_name, sample_rate и channels. В проверочном файле этой статьи одна дорожка AAC с частотой дискретизации 48000 Гц и одним каналом. В рабочей записи вместо неё могут оказаться несколько отдельных дорожек микрофона, демонстрации и общего звука.

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

Если задача состоит в подготовке отдельной аудиоверсии, используйте маршрут извлечения звука через FFmpeg. Здесь мы пока только составляем описание входного видео. Не удаляйте лишние на вид потоки до выяснения их роли: сначала сохраните исходник и согласуйте, что должно остаться в выдаваемом материале.

Сверьте вывод на простом контрольном примере

В редакционной пробе создан четырёхсекундный ролик: зелёное изображение 960 × 540 при 25 кадрах в секунду и тон 660 Гц. FFmpeg 7.1 подготовил видео H.264 и звук AAC, а ffprobe 4.4.1 прочитала параметры. Оба приведённых варианта команды выполнены; это проверка синтаксиса и чтения искусственного файла.

Затем точную копию назвали renamed.webm. ffprobe по-прежнему определила тот же контейнер семейства MOV/MP4. В поле format_name перечислены mov,mp4,m4a,3gp,3g2,mj2; такое обозначение не означает, что внутри одновременно шесть самостоятельных файлов. Контрольные суммы обеих копий совпали, а исходник после проверки остался неизменным.

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

Передайте проверяемые сведения вместо догадки

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

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

После любого нового экспорта повторите проверку именно полученного файла. Успех ffprobe означает, что утилита смогла прочитать запрошенные сведения; решение о готовности урока требует просмотра и проверки в месте выдачи. Для Umhub такой отчёт полезен при подготовке материала, но сам по себе не является обещанием поддержки любого сочетания контейнера и кодеков.

Источники

  1. руководство MDN по медиаконтейнерам ↗
  2. официальном исходнике руководства ffprobe ↗
Создать аккаунт и собирать свою библиотеку →
От знаний — к своему курсу

Создайте свой курс в Umhub

Примените то, что узнали: соберите программу, добавьте материалы и пригласите учеников.

Создать курс